You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

133 lines
3.6 KiB

  1. // Client Side Scripting API
  2. // ======================================================================================
  3. $c_get_values = function(args, doc, dt, dn, user_callback) {
  4. var call_back = function(r,rt) {
  5. if(!r.message)return;
  6. if(user_callback) user_callback(r.message);
  7. var fl = args.fields.split(',');
  8. for(var i in fl) {
  9. locals[dt][dn][fl[i]] = r.message[fl[i]]; // set value
  10. if(args.table_field)
  11. refresh_field(fl[i], dn, args.table_field);
  12. else
  13. refresh_field(fl[i]);
  14. }
  15. }
  16. $c('webnotes.widgets.form.get_fields',args,call_back);
  17. }
  18. get_server_fields = function(method, arg, table_field, doc, dt, dn, allow_edit, call_back) {
  19. if(!allow_edit)freeze('Fetching Data...');
  20. $c('runserverobj', args={'method':method, 'docs':compress_doclist([doc]), 'arg':arg},
  21. function(r, rt) {
  22. if (r.message) {
  23. var d = locals[dt][dn];
  24. var field_dict = r.message;
  25. for(var key in field_dict) {
  26. d[key] = field_dict[key];
  27. if (table_field) refresh_field(key, d.name, table_field);
  28. else refresh_field(key);
  29. }
  30. }
  31. if(call_back){
  32. doc = locals[doc.doctype][doc.name];
  33. call_back(doc, dt, dn);
  34. }
  35. if(!allow_edit)unfreeze();
  36. }
  37. );
  38. }
  39. set_multiple = function (dt, dn, dict, table_field) {
  40. var d = locals[dt][dn];
  41. for(var key in dict) {
  42. d[key] = dict[key];
  43. if (table_field) refresh_field(key, d.name, table_field);
  44. else refresh_field(key);
  45. }
  46. }
  47. refresh_many = function (flist, dn, table_field) {
  48. for(var i in flist) {
  49. if (table_field) refresh_field(flist[i], dn, table_field);
  50. else refresh_field(flist[i]);
  51. }
  52. }
  53. set_field_tip = function(n,txt) {
  54. var df = get_field(cur_frm.doctype, n, cur_frm.docname);
  55. if(df)df.description = txt;
  56. if(cur_frm && cur_frm.fields_dict) {
  57. if(cur_frm.fields_dict[n])
  58. cur_frm.fields_dict[n].comment_area.innerHTML = replace_newlines(txt);
  59. else
  60. errprint('[set_field_tip] Unable to set field tip: ' + n);
  61. }
  62. }
  63. refresh_field = function(n, docname, table_field) {
  64. // multiple
  65. if(typeof n==typeof []) refresh_many(n, docname, table_field);
  66. if(table_field) { // for table
  67. if(_f.frm_dialog && _f.frm_dialog.display) {
  68. // in dialog
  69. if(_f.frm_dialog.cur_frm.fields_dict[n] && _f.frm_dialog.cur_frm.fields_dict[n].refresh)
  70. _f.frm_dialog.cur_frm.fields_dict[n].refresh();
  71. } else {
  72. var g = _f.cur_grid_cell;
  73. if(g) var hc = g.grid.head_row.cells[g.cellIndex];
  74. if(g && hc && hc.fieldname==n && g.row.docname==docname) {
  75. hc.template.refresh(); // if active
  76. } else {
  77. cur_frm.fields_dict[table_field].grid.refresh_cell(docname, n);
  78. }
  79. }
  80. } else if(cur_frm && cur_frm.fields_dict) {
  81. if(cur_frm.fields_dict[n] && cur_frm.fields_dict[n].refresh)
  82. cur_frm.fields_dict[n].refresh();
  83. }
  84. }
  85. set_field_options = function(n, txt) {
  86. var df = get_field(cur_frm.doctype, n, cur_frm.docname);
  87. if(df)df.options = txt;
  88. refresh_field(n);
  89. }
  90. set_field_permlevel = function(n, level) {
  91. var df = get_field(cur_frm.doctype, n, cur_frm.docname);
  92. if(df)df.permlevel = level;
  93. refresh_field(n);
  94. }
  95. hide_field = function(n) {
  96. function _hide_field(n,hidden) {
  97. var df = get_field(cur_frm.doctype, n, cur_frm.docname);
  98. if(df)df.hidden = hidden; refresh_field(n);
  99. }
  100. if(cur_frm) {
  101. if(n.substr) _hide_field(n,1);
  102. else { for(var i in n)_hide_field(n[i],1) }
  103. }
  104. }
  105. unhide_field = function(n) {
  106. function _hide_field(n,hidden) {
  107. var df = get_field(cur_frm.doctype, n, cur_frm.docname);
  108. if(df)df.hidden = hidden; refresh_field(n);
  109. }
  110. if(cur_frm) {
  111. if(n.substr) _hide_field(n,0);
  112. else { for(var i in n)_hide_field(n[i],0) }
  113. }
  114. }
  115. get_field_obj = function(fn) {
  116. return cur_frm.fields_dict[fn];
  117. }