From c56ebb69b89a17080a2e92f70dc36da3a20809d2 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Fri, 2 Aug 2019 15:30:11 +0530 Subject: [PATCH] fix: Add check for empty array --- .../js/frappe/views/reports/report_view.js | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/frappe/public/js/frappe/views/reports/report_view.js b/frappe/public/js/frappe/views/reports/report_view.js index 112ad4edde..292ac43be7 100644 --- a/frappe/public/js/frappe/views/reports/report_view.js +++ b/frappe/public/js/frappe/views/reports/report_view.js @@ -225,7 +225,11 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView { // child table field const [cdt, _field] = fieldname.split(':'); const cdt_row = Object.keys(doc) - .filter(key => Array.isArray(doc[key]) && doc[key][0].doctype === cdt) + .filter(key => + Array.isArray(doc[key]) + && doc[key].length + && doc[key][0].doctype === cdt + ) .map(key => doc[key]) .map(a => a[0]) .filter(cdoc => cdoc.name === d[cdt + ':name'])[0]; @@ -525,15 +529,25 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView { control.set_value(value); return this.set_control_value(doctype, docname, fieldname, value) .then((updated_doc) => { - const _data = this.data.find(d => d.name === updated_doc.name); + const _data = this.data + .filter(b => b.name === updated_doc.name) + .find(a => + // child table cell + (doctype != updated_doc.doctype && a[doctype + ":name"] == docname) + || doctype == updated_doc.doctype + ); + for (let field in _data) { if (field.includes(':')) { // child table field const [cdt, _field] = field.split(':'); const cdt_row = Object.keys(updated_doc) - .filter(key => Array.isArray(updated_doc[key]) && updated_doc[key][0].doctype === cdt) - .map(key => updated_doc[key]) - .map(a => a[0]) + .filter(key => + Array.isArray(updated_doc[key]) + && updated_doc[key].length + && updated_doc[key][0].doctype === cdt + ) + .map(key => updated_doc[key])[0] .filter(cdoc => cdoc.name === _data[cdt + ':name'])[0]; if (cdt_row) { _data[field] = cdt_row[_field];