From 51c2e9ec89ad1415ceac8ac32ea8454b00a6542d Mon Sep 17 00:00:00 2001 From: Sagar Vora <16315650+sagarvora@users.noreply.github.com> Date: Thu, 19 Feb 2026 10:24:06 +0530 Subject: [PATCH] perf: set docfields only on doc change --- frappe/public/js/frappe/form/grid.js | 2 +- frappe/public/js/frappe/form/grid_row.js | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index dbd8420e2f..c4ef420b8d 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -574,7 +574,7 @@ export default class Grid { let grid_row; if (this.grid_rows[ri] && !append_row) { grid_row = this.grid_rows[ri]; - grid_row.doc = d; + grid_row.update_doc(d); grid_row.refresh(); } else { grid_row = new GridRow({ diff --git a/frappe/public/js/frappe/form/grid_row.js b/frappe/public/js/frappe/form/grid_row.js index dd83548873..05b1128ec2 100644 --- a/frappe/public/js/frappe/form/grid_row.js +++ b/frappe/public/js/frappe/form/grid_row.js @@ -53,6 +53,12 @@ export default class GridRow { this.wrapper.appendTo(this.parent); } + update_doc(doc) { + const changed = !this.doc || this.doc !== doc; + this.doc = doc; + if (changed) this.set_docfields(); + } + set_docfields() { if (this.doc && this.parent_df.options) { this.docfields = frappe.meta.get_docfields( @@ -187,8 +193,6 @@ export default class GridRow { ); } refresh() { - this.set_docfields(); - if (this.frm && this.doc) { this.doc = locals[this.doc.doctype][this.doc.name]; }