From 346937aed738fdb1f23e896153ea16ddb8096f1a Mon Sep 17 00:00:00 2001 From: Afshan Date: Fri, 26 Jun 2020 19:28:48 +0530 Subject: [PATCH 1/3] fix: handle condition that "Setters" could be "Array" or "Object" --- .../js/frappe/form/multi_select_dialog.js | 62 ++++++++++++------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/frappe/public/js/frappe/form/multi_select_dialog.js b/frappe/public/js/frappe/form/multi_select_dialog.js index 41b87e0207..bb157efc38 100644 --- a/frappe/public/js/frappe/form/multi_select_dialog.js +++ b/frappe/public/js/frappe/form/multi_select_dialog.js @@ -101,19 +101,25 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { columns[1] = []; columns[2] = []; - Object.keys(this.setters).forEach((setter, index) => { - let df_prop = frappe.meta.docfield_map[this.doctype][setter]; + if($.isArray(this.setters)) { + for (const df of this.setters) { + columns[1].push(df, {fieldtype: "Column Break"}); + } + } else { + Object.keys(this.setters).forEach((setter, index) => { + let df_prop = frappe.meta.docfield_map[this.doctype][setter]; - // Index + 1 to start filling from index 1 - // Since Search is a standrd field already pushed - columns[(index + 1) % 3].push({ - fieldtype: df_prop.fieldtype, - label: df_prop.label, - fieldname: setter, - options: df_prop.options, - default: this.setters[setter] + // Index + 1 to start filling from index 1 + // Since Search is a standrd field already pushed + columns[(index + 1) % 3].push({ + fieldtype: df_prop.fieldtype, + label: df_prop.label, + fieldname: setter, + options: df_prop.options, + default: this.setters[setter] + }); }); - }); + } // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal if (Object.seal) { @@ -217,7 +223,13 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { let contents = ``; let columns = ["name"]; - columns = columns.concat(Object.keys(this.setters)); + if($.isArray(this.setters)) { + for (let df of this.setters) { + columns.push(df.fieldname); + } + } else { + columns = columns.concat(Object.keys(this.setters)); + } columns.forEach(function (column) { contents += `
@@ -290,16 +302,24 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { let filters = this.get_query ? this.get_query().filters : {} || {}; let filter_fields = []; - Object.keys(this.setters).forEach(function (setter) { - var value = me.dialog.fields_dict[setter].get_value(); - if (me.dialog.fields_dict[setter].df.fieldtype == "Data" && value) { - filters[setter] = ["like", "%" + value + "%"]; - } else { - filters[setter] = value || undefined; - me.args[setter] = filters[setter]; - filter_fields.push(setter); + if($.isArray(this.setters)) { + for (let df of this.setters) { + filters[df.fieldname] = me.dialog.fields_dict[df.fieldname].get_value() || undefined; + me.args[df.fieldname] = filters[df.fieldname]; + filter_fields.push(df.fieldname); } - }); + } else { + Object.keys(this.setters).forEach(function (setter) { + var value = me.dialog.fields_dict[setter].get_value(); + if (me.dialog.fields_dict[setter].df.fieldtype == "Data" && value) { + filters[setter] = ["like", "%" + value + "%"]; + } else { + filters[setter] = value || undefined; + me.args[setter] = filters[setter]; + filter_fields.push(setter); + } + }); + } let filter_group = this.get_custom_filters(); Object.assign(filters, filter_group); From f146d1ffb251eb22d95daeb62f13711aef2471a1 Mon Sep 17 00:00:00 2001 From: Afshan Date: Sat, 27 Jun 2020 18:01:26 +0530 Subject: [PATCH 2/3] style: format according to sider --- frappe/public/js/frappe/form/multi_select_dialog.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/form/multi_select_dialog.js b/frappe/public/js/frappe/form/multi_select_dialog.js index bb157efc38..6920870859 100644 --- a/frappe/public/js/frappe/form/multi_select_dialog.js +++ b/frappe/public/js/frappe/form/multi_select_dialog.js @@ -101,7 +101,7 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { columns[1] = []; columns[2] = []; - if($.isArray(this.setters)) { + if ($.isArray(this.setters)) { for (const df of this.setters) { columns[1].push(df, {fieldtype: "Column Break"}); } @@ -223,7 +223,7 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { let contents = ``; let columns = ["name"]; - if($.isArray(this.setters)) { + if ($.isArray(this.setters)) { for (let df of this.setters) { columns.push(df.fieldname); } @@ -302,7 +302,7 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { let filters = this.get_query ? this.get_query().filters : {} || {}; let filter_fields = []; - if($.isArray(this.setters)) { + if ($.isArray(this.setters)) { for (let df of this.setters) { filters[df.fieldname] = me.dialog.fields_dict[df.fieldname].get_value() || undefined; me.args[df.fieldname] = filters[df.fieldname]; From 620fafeb964407412e34dc3efc69ffb88ba24f2e Mon Sep 17 00:00:00 2001 From: Afshan Date: Sat, 27 Jun 2020 22:19:27 +0530 Subject: [PATCH 3/3] fix: divide filter fields into 3 columns using index. --- frappe/public/js/frappe/form/multi_select_dialog.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/form/multi_select_dialog.js b/frappe/public/js/frappe/form/multi_select_dialog.js index 6920870859..a0bb927563 100644 --- a/frappe/public/js/frappe/form/multi_select_dialog.js +++ b/frappe/public/js/frappe/form/multi_select_dialog.js @@ -102,9 +102,9 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { columns[2] = []; if ($.isArray(this.setters)) { - for (const df of this.setters) { - columns[1].push(df, {fieldtype: "Column Break"}); - } + this.setters.forEach((setter, index) => { + columns[(index + 1) % 3].push(setter); + }); } else { Object.keys(this.setters).forEach((setter, index) => { let df_prop = frappe.meta.docfield_map[this.doctype][setter];