Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

13 роки тому
12 роки тому
14 роки тому
13 роки тому
13 роки тому
13 роки тому
12 роки тому
13 роки тому
13 роки тому
13 роки тому
13 роки тому
13 роки тому
12 роки тому
12 роки тому
12 роки тому
12 роки тому
12 роки тому
12 роки тому
12 роки тому
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
  2. // MIT License. See license.txt
  3. get_server_fields = function(method, arg, table_field, doc, dt, dn, allow_edit, call_back) {
  4. wn.dom.freeze();
  5. return $c('runserverobj',
  6. args={'method':method,
  7. 'docs':wn.model.compress(make_doclist(doc.doctype, doc.name)),
  8. 'arg':arg
  9. },
  10. function(r, rt) {
  11. wn.dom.unfreeze();
  12. if (r.message) {
  13. var d = locals[dt][dn];
  14. var field_dict = r.message;
  15. for(var key in field_dict) {
  16. d[key] = field_dict[key];
  17. if (table_field)
  18. refresh_field(key, d.name, table_field);
  19. else
  20. refresh_field(key);
  21. }
  22. }
  23. if(call_back){
  24. doc = locals[doc.doctype][doc.name];
  25. call_back(doc, dt, dn);
  26. }
  27. }
  28. );
  29. }
  30. set_multiple = function (dt, dn, dict, table_field) {
  31. var d = locals[dt][dn];
  32. for(var key in dict) {
  33. d[key] = dict[key];
  34. if (table_field) refresh_field(key, d.name, table_field);
  35. else refresh_field(key);
  36. }
  37. }
  38. refresh_many = function (flist, dn, table_field) {
  39. for(var i in flist) {
  40. if (table_field) refresh_field(flist[i], dn, table_field);
  41. else refresh_field(flist[i]);
  42. }
  43. }
  44. set_field_tip = function(n,txt) {
  45. var df = wn.meta.get_docfield(cur_frm.doctype, n, cur_frm.docname);
  46. if(df)df.description = txt;
  47. if(cur_frm && cur_frm.fields_dict) {
  48. if(cur_frm.fields_dict[n])
  49. cur_frm.fields_dict[n].comment_area.innerHTML = replace_newlines(txt);
  50. else
  51. console.log('[set_field_tip] Unable to set field tip: ' + n);
  52. }
  53. }
  54. refresh_field = function(n, docname, table_field) {
  55. // multiple
  56. if(typeof n==typeof [])
  57. refresh_many(n, docname, table_field);
  58. if(table_field && cur_frm.fields_dict[table_field].grid.grid_rows_by_docname) { // for table
  59. cur_frm.fields_dict[table_field].grid.grid_rows_by_docname[docname].refresh_field(n);
  60. } else if(cur_frm) {
  61. cur_frm.refresh_field(n)
  62. }
  63. }
  64. set_field_options = function(n, txt) {
  65. cur_frm.set_df_property(n, 'options', txt)
  66. }
  67. set_field_permlevel = function(n, level) {
  68. cur_frm.set_df_property(n, 'permlevel', level)
  69. }
  70. toggle_field = function(n, hidden) {
  71. var df = wn.meta.get_docfield(cur_frm.doctype, n, cur_frm.docname);
  72. if(df) {
  73. df.hidden = hidden;
  74. refresh_field(n);
  75. }
  76. else {
  77. console.log((hidden ? "hide_field" : "unhide_field") + " cannot find field " + n);
  78. }
  79. }
  80. hide_field = function(n) {
  81. if(cur_frm) {
  82. if(n.substr) toggle_field(n, 1);
  83. else { for(var i in n) toggle_field(n[i], 1) }
  84. }
  85. }
  86. unhide_field = function(n) {
  87. if(cur_frm) {
  88. if(n.substr) toggle_field(n, 0);
  89. else { for(var i in n) toggle_field(n[i], 0) }
  90. }
  91. }
  92. get_field_obj = function(fn) {
  93. return cur_frm.fields_dict[fn];
  94. }
  95. // set missing values in given doc
  96. set_missing_values = function(doc, dict) {
  97. // dict contains fieldname as key and "default value" as value
  98. var fields_to_set = {};
  99. $.each(dict, function(i, v) { if (!doc[i]) { fields_to_set[i] = v; } });
  100. if (fields_to_set) { set_multiple(doc.doctype, doc.name, fields_to_set); }
  101. }
  102. _f.Frm.prototype.get_doc = function() {
  103. return locals[this.doctype][this.docname];
  104. }
  105. _f.Frm.prototype.get_doclist = function(filters) {
  106. return wn.model.get_doclist(this.doctype, this.docname, filters);
  107. }
  108. _f.Frm.prototype.field_map = function(fnames, fn) {
  109. if(typeof fnames==='string') {
  110. if(fnames == '*') {
  111. fnames = keys(this.fields_dict);
  112. } else {
  113. fnames = [fnames];
  114. }
  115. }
  116. $.each(fnames, function(i,f) {
  117. //var field = cur_frm.fields_dict[f]; - much better design
  118. var field = wn.meta.get_docfield(cur_frm.doctype, f, cur_frm.docname)
  119. if(field) {
  120. fn(field);
  121. cur_frm.refresh_field(f);
  122. };
  123. })
  124. }
  125. _f.Frm.prototype.set_df_property = function(fieldname, property, value) {
  126. var field = wn.meta.get_docfield(cur_frm.doctype, fieldname, cur_frm.docname)
  127. if(field) {
  128. field[property] = value;
  129. cur_frm.refresh_field(fieldname);
  130. };
  131. }
  132. _f.Frm.prototype.toggle_enable = function(fnames, enable) {
  133. cur_frm.field_map(fnames, function(field) {
  134. field.read_only = enable ? 0 : 1; });
  135. }
  136. _f.Frm.prototype.toggle_reqd = function(fnames, mandatory) {
  137. cur_frm.field_map(fnames, function(field) { field.reqd = mandatory ? true : false; });
  138. }
  139. _f.Frm.prototype.toggle_display = function(fnames, show) {
  140. cur_frm.field_map(fnames, function(field) { field.hidden = show ? 0 : 1; });
  141. }
  142. _f.Frm.prototype.call_server = function(method, args, callback) {
  143. return $c_obj(cur_frm.get_doclist(), method, args, callback);
  144. }
  145. _f.Frm.prototype.get_files = function() {
  146. return cur_frm.attachments
  147. ? keys(cur_frm.attachments.get_attachments()).sort()
  148. : [] ;
  149. }
  150. _f.Frm.prototype.set_query = function(fieldname, opt1, opt2) {
  151. var func = (typeof opt1=="function") ? opt1 : opt2;
  152. if(opt2) {
  153. this.fields_dict[opt1].grid.get_field(fieldname).get_query = func;
  154. } else {
  155. this.fields_dict[fieldname].get_query = func;
  156. }
  157. }
  158. _f.Frm.prototype.set_value = function(field, value) {
  159. var me = this;
  160. var _set = function(f, v) {
  161. if(me.fields_dict[f]) {
  162. me.doc[f] = v;
  163. me.fields_dict[f].refresh();
  164. }
  165. }
  166. if(typeof field=="string") {
  167. _set(field, value)
  168. } else if($.isPlainObject(field)) {
  169. $.each(field, function(f, v) {
  170. _set(f, v);
  171. })
  172. }
  173. }
  174. _f.Frm.prototype.call = function(opts) {
  175. var me = this;
  176. if(!opts.doc) {
  177. if(opts.method.indexOf(".")===-1)
  178. opts.method = wn.model.get_server_module_name(me.doctype) + "." + opts.method;
  179. opts.original_callback = opts.callback;
  180. opts.callback = function(r) {
  181. if($.isPlainObject(r.message)) {
  182. if(opts.child) {
  183. // update child doc
  184. opts.child = locals[opts.child.doctype][opts.child.name];
  185. $.extend(opts.child, r.message);
  186. me.fields_dict[opts.child.parentfield].refresh();
  187. } else {
  188. // update parent doc
  189. me.set_value(r.message);
  190. }
  191. }
  192. opts.original_callback && opts.original_callback(r);
  193. }
  194. } else {
  195. opts.original_callback = opts.callback;
  196. opts.callback = function(r) {
  197. if(!r.exc) me.refresh_fields();
  198. opts.original_callback && opts.original_callback(r);
  199. }
  200. }
  201. return wn.call(opts);
  202. }
  203. _f.Frm.prototype.get_field = function(field) {
  204. return cur_frm.fields_dict[field];
  205. };