// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors // MIT License. See license.txt get_server_fields = function(method, arg, table_field, doc, dt, dn, allow_edit, call_back) { frappe.dom.freeze(); if($.isPlainObject(arg)) arg = JSON.stringify(arg); return $c('runserverobj', args={'method': method, 'docs': JSON.stringify(doc), 'arg': arg }, function(r, rt) { frappe.dom.unfreeze(); if (r.message) { var d = locals[dt][dn]; var field_dict = r.message; for(var key in field_dict) { d[key] = field_dict[key]; if (table_field) refresh_field(key, d.name, table_field); else refresh_field(key); } } if(call_back){ doc = locals[doc.doctype][doc.name]; call_back(doc, dt, dn); } } ); } set_multiple = function (dt, dn, dict, table_field) { var d = locals[dt][dn]; for(var key in dict) { d[key] = dict[key]; if (table_field) refresh_field(key, d.name, table_field); else refresh_field(key); } } refresh_many = function (flist, dn, table_field) { for(var i in flist) { if (table_field) refresh_field(flist[i], dn, table_field); else refresh_field(flist[i]); } } set_field_tip = function(n,txt) { var df = frappe.meta.get_docfield(cur_frm.doctype, n, cur_frm.docname); if(df)df.description = txt; if(cur_frm && cur_frm.fields_dict) { if(cur_frm.fields_dict[n]) cur_frm.fields_dict[n].comment_area.innerHTML = replace_newlines(txt); else console.log('[set_field_tip] Unable to set field tip: ' + n); } } refresh_field = function(n, docname, table_field) { // multiple if(typeof n==typeof []) refresh_many(n, docname, table_field); if(table_field && cur_frm.fields_dict[table_field].grid.grid_rows_by_docname) { // for table cur_frm.fields_dict[table_field].grid.grid_rows_by_docname[docname].refresh_field(n); } else if(cur_frm) { cur_frm.refresh_field(n) } } set_field_options = function(n, txt) { cur_frm.set_df_property(n, 'options', txt) } set_field_permlevel = function(n, level) { cur_frm.set_df_property(n, 'permlevel', level) } toggle_field = function(n, hidden) { var df = frappe.meta.get_docfield(cur_frm.doctype, n, cur_frm.docname); if(df) { df.hidden = hidden; refresh_field(n); } else { console.log((hidden ? "hide_field" : "unhide_field") + " cannot find field " + n); } } hide_field = function(n) { if(cur_frm) { if(n.substr) toggle_field(n, 1); else { for(var i in n) toggle_field(n[i], 1) } } } unhide_field = function(n) { if(cur_frm) { if(n.substr) toggle_field(n, 0); else { for(var i in n) toggle_field(n[i], 0) } } } get_field_obj = function(fn) { return cur_frm.fields_dict[fn]; } // set missing values in given doc set_missing_values = function(doc, dict) { // dict contains fieldname as key and "default value" as value var fields_to_set = {}; for (var i in dict) { var v = dict[i]; if (!doc[i]) { fields_to_set[i] = v; } } if (fields_to_set) { set_multiple(doc.doctype, doc.name, fields_to_set); } } _f.Frm.prototype.get_doc = function() { return locals[this.doctype][this.docname]; } _f.Frm.prototype.field_map = function(fnames, fn) { if(typeof fnames==='string') { if(fnames == '*') { fnames = keys(this.fields_dict); } else { fnames = [fnames]; } } for (var i=0, l=fnames.length; i