From e4e6d2796c786635c782f8638bb4e0c0225b638d Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Sat, 16 Feb 2019 16:15:20 +0530 Subject: [PATCH 1/3] Add custom get_value to get repective value in the option list instead of label selected by user --- .../js/frappe/form/controls/multiselect.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/frappe/public/js/frappe/form/controls/multiselect.js b/frappe/public/js/frappe/form/controls/multiselect.js index ae6a7a124e..03d0a580ae 100644 --- a/frappe/public/js/frappe/form/controls/multiselect.js +++ b/frappe/public/js/frappe/form/controls/multiselect.js @@ -32,6 +32,33 @@ frappe.ui.form.ControlMultiSelect = frappe.ui.form.ControlAutocomplete.extend({ }); }, + get_value() { + let data = this._super(); + // find value of label from option list and return actual value string + if (this.df.options[0].label) { + data = data.split(',').map(op => op.trim()); + data = data.map(val => { + let option = this.df.options.find(op => op.label === val); + if(option) { + return option.value; + } + }).filter(n => n != null).join(', '); + } + return data; + }, + + set_formatted_input(value) { + if (!value) return + // find label of value from option list and set from it as input + if (this.df.options[0].label) { + value = value.split(',').map(d => d.trim()).map(val => { + let option = this.df.options.find(op => op.value === val); + return option ? option.label : val; + }).filter(n => n != null).join(', '); + } + this._super(value); + }, + get_values() { const value = this.get_value() || ''; const values = value.split(/\s*,\s*/).filter(d => d); From 58e19de1ce17d7675ec5e5e62737ac38ec1e2fa7 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Sat, 16 Feb 2019 16:19:13 +0530 Subject: [PATCH 2/3] Remove extra code --- frappe/public/js/frappe/form/controls/multiselect.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/multiselect.js b/frappe/public/js/frappe/form/controls/multiselect.js index 03d0a580ae..783c3af731 100644 --- a/frappe/public/js/frappe/form/controls/multiselect.js +++ b/frappe/public/js/frappe/form/controls/multiselect.js @@ -39,9 +39,7 @@ frappe.ui.form.ControlMultiSelect = frappe.ui.form.ControlAutocomplete.extend({ data = data.split(',').map(op => op.trim()); data = data.map(val => { let option = this.df.options.find(op => op.label === val); - if(option) { - return option.value; - } + return option ? option.value : null; }).filter(n => n != null).join(', '); } return data; From 7984036ca44a8dd259d574db137e8693a8788b57 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Sat, 16 Feb 2019 21:03:17 +0530 Subject: [PATCH 3/3] Fix codacy --- frappe/public/js/frappe/form/controls/multiselect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/controls/multiselect.js b/frappe/public/js/frappe/form/controls/multiselect.js index 783c3af731..fc5cb05010 100644 --- a/frappe/public/js/frappe/form/controls/multiselect.js +++ b/frappe/public/js/frappe/form/controls/multiselect.js @@ -46,7 +46,7 @@ frappe.ui.form.ControlMultiSelect = frappe.ui.form.ControlAutocomplete.extend({ }, set_formatted_input(value) { - if (!value) return + if (!value) return; // find label of value from option list and set from it as input if (this.df.options[0].label) { value = value.split(',').map(d => d.trim()).map(val => {