From 39af16863d12b61d39ac1eccdc4a89aa8e831b49 Mon Sep 17 00:00:00 2001 From: Pruthvi Patel Date: Wed, 26 Jan 2022 11:19:30 +0530 Subject: [PATCH 1/2] feat: custom columns for `MultiSelectDialog` --- .../js/frappe/form/multi_select_dialog.js | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/frappe/public/js/frappe/form/multi_select_dialog.js b/frappe/public/js/frappe/form/multi_select_dialog.js index bc0286e62d..e35c1d3a7c 100644 --- a/frappe/public/js/frappe/form/multi_select_dialog.js +++ b/frappe/public/js/frappe/form/multi_select_dialog.js @@ -1,6 +1,6 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { constructor(opts) { - /* Options: doctype, target, setters, get_query, action, add_filters_group, data_fields, primary_action_label */ + /* Options: doctype, target, setters, get_query, action, add_filters_group, data_fields, primary_action_label, columns */ Object.assign(this, opts); this.for_select = this.doctype == "[Select]"; if (!this.for_select) { @@ -384,23 +384,22 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { return this.results.filter(res => checked_values.includes(res.name)); } + get_datatable_columns() { + if(this.get_query && this.get_query().query && this.columns) return this.columns; + + if(Array.isArray(this.setters)) + return ["name", ...this.setters.map(df => df.fieldname)] + + return ["name", ...Object.keys(this.setters)] + } + make_list_row(result = {}) { var me = this; // Make a head row by default (if result not passed) let head = Object.keys(result).length === 0; let contents = ``; - let columns = ["name"]; - - 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) { + this.get_datatable_columns().forEach(function (column) { contents += `
${ head ? `${__(frappe.model.unscrub(column))}` @@ -470,7 +469,7 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { get_filters_from_setters() { let me = this; - let filters = this.get_query ? this.get_query().filters : {} || {}; + let filters = (this.get_query ? this.get_query().filters : {}) || {}; let filter_fields = []; if ($.isArray(this.setters)) { From eba3c95f55b06deca4c460e097a6e05e568a83e7 Mon Sep 17 00:00:00 2001 From: Pruthvi Patel Date: Wed, 26 Jan 2022 16:14:18 +0530 Subject: [PATCH 2/2] fix: sider issues --- frappe/public/js/frappe/form/multi_select_dialog.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frappe/public/js/frappe/form/multi_select_dialog.js b/frappe/public/js/frappe/form/multi_select_dialog.js index e35c1d3a7c..5a670cee20 100644 --- a/frappe/public/js/frappe/form/multi_select_dialog.js +++ b/frappe/public/js/frappe/form/multi_select_dialog.js @@ -385,12 +385,12 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog { } get_datatable_columns() { - if(this.get_query && this.get_query().query && this.columns) return this.columns; + if (this.get_query && this.get_query().query && this.columns) return this.columns; - if(Array.isArray(this.setters)) - return ["name", ...this.setters.map(df => df.fieldname)] + if (Array.isArray(this.setters)) + return ["name", ...this.setters.map(df => df.fieldname)]; - return ["name", ...Object.keys(this.setters)] + return ["name", ...Object.keys(this.setters)]; } make_list_row(result = {}) {