Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

formatters.js 3.6 KiB

12 år sedan
12 år sedan
12 år sedan
12 år sedan
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. // MIT License. See license.txt
  3. // for license information please see license.txt
  4. wn.provide("wn.form.formatters");
  5. wn.form.formatters = {
  6. Data: function(value) {
  7. return value==null ? "" : value
  8. },
  9. Float: function(value, docfield) {
  10. var decimals = cint(docfield.options, null) || cint(wn.boot.sysdefaults.float_precision, null);
  11. return "<div style='text-align: right'>" +
  12. ((value==null || value==="") ? "" :
  13. format_number(value, null, decimals)) + "</div>";
  14. },
  15. Int: function(value) {
  16. return value==null ? "": "<div style='text-align: right'>" + cint(value) + "</div>";
  17. },
  18. Percent: function(value) {
  19. return "<div style='text-align: right'>" + flt(value, 2) + "%" + "</div>";
  20. },
  21. Currency: function(value, docfield, options, doc) {
  22. var currency = wn.meta.get_field_currency(docfield, doc);
  23. return "<div style='text-align: right'>" + format_currency(value, currency) + "</div>";
  24. },
  25. Check: function(value) {
  26. return value ? "<i class='icon-check'></i>" : "<i class='icon-check-empty'></i>";
  27. },
  28. Link: function(value, docfield, options) {
  29. if(options && options.for_print)
  30. return value;
  31. if(!value)
  32. return "";
  33. if(docfield && docfield.options) {
  34. return repl('%(icon)s<a href="#Form/%(doctype)s/%(name)s">%(name)s</a>', {
  35. doctype: docfield.options,
  36. name: value,
  37. icon: (options && options.no_icon) ? "" :
  38. ('<i class="icon-fixed-width '+wn.boot.doctype_icons[docfield.options]+'"></i> ')
  39. });
  40. } else {
  41. return value;
  42. }
  43. },
  44. Date: function(value) {
  45. return value ? dateutil.str_to_user(value) : "";
  46. },
  47. Text: function(value) {
  48. if(value) {
  49. var tags = ["<p[^>]>", "<div[^>]>", "<br[^>]>"];
  50. var match = false;
  51. for(var i=0; i<tags.length; i++) {
  52. if(value.match(tags[i])) {
  53. match = true;
  54. }
  55. }
  56. if(!match) {
  57. return replace_newlines(value);
  58. }
  59. }
  60. return wn.form.formatters.Data(value);
  61. },
  62. Tag: function(value) {
  63. var html = "";
  64. $.each((value || "").split(","), function(i, v) {
  65. if(v) html+= '<span class="label label-info" \
  66. style="margin-right: 7px; cursor: pointer;"\
  67. data-field="_user_tags" data-label="'+v+'">'+v +'</span>';
  68. });
  69. return html;
  70. },
  71. Comment: function(value) {
  72. var html = "";
  73. $.each(JSON.parse(value || "[]"), function(i, v) {
  74. if(v) html+= '<span class="label label-warning" \
  75. style="margin-right: 7px;"\
  76. data-field="_comments" data-label="'+v.name+'">'+v.comment+'</span>';
  77. });
  78. return html;
  79. },
  80. SmallText: function(value) {
  81. return wn.form.formatters.Text(value);
  82. },
  83. TextEditor: function(value) {
  84. return wn.form.formatters.Text(wn.utils.remove_script_and_style(value));
  85. },
  86. Code: function(value) {
  87. return "<pre>" + (value==null ? "" : $("<div>").text(value).html()) + "</pre>"
  88. },
  89. WorkflowState: function(value) {
  90. workflow_state = wn.model.get("Workflow State", value)[0];
  91. if(workflow_state) {
  92. return repl("<span class='label label-%(style)s' \
  93. data-workflow-state='%(value)s'\
  94. style='padding-bottom: 4px; cursor: pointer;'>\
  95. <i class='icon-small icon-white icon-%(icon)s'></i> %(value)s</span>", {
  96. value: value,
  97. style: workflow_state.style.toLowerCase(),
  98. icon: workflow_state.icon
  99. });
  100. } else {
  101. return "<span class='label'>" + value + "</span>";
  102. }
  103. }
  104. }
  105. wn.form.get_formatter = function(fieldtype) {
  106. if(!fieldtype) fieldtype = "Data";
  107. return wn.form.formatters[fieldtype.replace(/ /g, "")] || wn.form.formatters.Data;
  108. }
  109. wn.format = function(value, df, options, doc) {
  110. if(!df) df = {"fieldtype":"Data"};
  111. return wn.form.get_formatter(df.fieldtype)(value, df, options, doc);
  112. }