diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index e1729bf694..277bbdff32 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -70,7 +70,7 @@ $.extend(frappe.model, { doc[f.fieldname] = v; updated.push(f.fieldname); - } else if(f.fieldtype == "Select" && f.options + } else if(f.fieldtype == "Select" && f.options && typeof f.options === 'string' && !in_list(["[Select]", "Loading..."], f.options)) { doc[f.fieldname] = f.options.split("\n")[0]; } @@ -294,4 +294,4 @@ $.extend(frappe.model, { _map(); } } -}) +}) \ No newline at end of file diff --git a/frappe/public/js/legacy/clientscriptAPI.js b/frappe/public/js/legacy/clientscriptAPI.js index a34bccab58..39b5a5841e 100644 --- a/frappe/public/js/legacy/clientscriptAPI.js +++ b/frappe/public/js/legacy/clientscriptAPI.js @@ -66,8 +66,19 @@ refresh_field = function(n, docname, table_field) { 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); + if (n && typeof n==='string' && table_field){ + var grid = cur_frm.fields_dict[table_field].grid, + field = frappe.utils.filter_dict(grid.docfields, {fieldname: n}); + if (field && field.length){ + field = field[0]; + var meta = frappe.meta.get_docfield(field.parent, field.fieldname, docname); + $.extend(field, meta); + if (docname){ + cur_frm.fields_dict[table_field].grid.grid_rows_by_docname[docname].refresh_field(n); + } else { + cur_frm.fields_dict[table_field].grid.refresh(); + } + } } else if(cur_frm) { cur_frm.refresh_field(n) } @@ -158,11 +169,18 @@ _f.Frm.prototype.get_docfield = function(fieldname1, fieldname2) { } } -_f.Frm.prototype.set_df_property = function(fieldname, property, value) { - var field = this.get_docfield(fieldname); +_f.Frm.prototype.set_df_property = function(fieldname, property, value, docname, table_field) { + if (!docname && !table_field){ + var field = this.get_docfield(fieldname); + } else { + var grid = cur_frm.fields_dict[table_field].grid, + fname = frappe.utils.filter_dict(grid.docfields, {'fieldname': fieldname}); + if (fname && fname.length) + var field = frappe.meta.get_docfield(fname[0].parent, fieldname, docname); + } if(field) { field[property] = value; - this.refresh_field(fieldname); + refresh_field(fieldname, table_field); }; }