From 7fa9a3fd39cbc5ecc4db8da50317c3927e302271 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 25 Jan 2022 12:01:29 +0530 Subject: [PATCH 1/2] feat(minor): Add "in list view" fields in sort selector --- frappe/public/js/frappe/ui/sort_selector.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/ui/sort_selector.js b/frappe/public/js/frappe/ui/sort_selector.js index 544467fb14..470f48e0cf 100644 --- a/frappe/public/js/frappe/ui/sort_selector.js +++ b/frappe/public/js/frappe/ui/sort_selector.js @@ -121,9 +121,13 @@ frappe.ui.SortSelector = class SortSelector { _options.push({'fieldname': meta.title_field}); } - // bold or mandatory + // add bold, mandatory and fields that are available in list view meta.fields.forEach(function(df) { - if(df.mandatory || df.bold) { + if ( + (df.mandatory || df.bold || df.in_list_view) + && frappe.model.is_value_type(df.fieldtype) + && frappe.perm.has_perm(me.doctype, df.permlevel, "read") + ) { _options.push({fieldname: df.fieldname, label: df.label}); } }); From 5742217e8e680e52edc456f59870443398222e74 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 25 Jan 2022 12:13:02 +0530 Subject: [PATCH 2/2] refactor(minor): SortSelector.setup_from_doctype --- frappe/public/js/frappe/ui/sort_selector.js | 42 ++++++++++----------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/frappe/public/js/frappe/ui/sort_selector.js b/frappe/public/js/frappe/ui/sort_selector.js index 470f48e0cf..879466e8f7 100644 --- a/frappe/public/js/frappe/ui/sort_selector.js +++ b/frappe/public/js/frappe/ui/sort_selector.js @@ -113,15 +113,23 @@ frappe.ui.SortSelector = class SortSelector { if(!this.args.options) { // default options var _options = [ - {'fieldname': 'modified'} + {'fieldname': 'modified'}, + {'fieldname': 'name'}, + {'fieldname': 'creation'}, + {'fieldname': 'idx'}, ] // title field - if(meta.title_field) { - _options.push({'fieldname': meta.title_field}); + if (meta.title_field) { + _options.splice(1, 0, {'fieldname': meta.title_field}); } - // add bold, mandatory and fields that are available in list view + // sort field - set via DocType schema or Customize Form + if (meta_sort_field) { + _options.splice(1, 0, { 'fieldname': meta_sort_field }); + } + + // bold, mandatory and fields that are available in list view meta.fields.forEach(function(df) { if ( (df.mandatory || df.bold || df.in_list_view) @@ -132,26 +140,16 @@ frappe.ui.SortSelector = class SortSelector { } }); - // meta sort field - if(meta_sort_field) _options.push({ 'fieldname': meta_sort_field }); - - // more default options - _options.push( - {'fieldname': 'name'}, - {'fieldname': 'creation'}, - {'fieldname': 'idx'} - ) - - // de-duplicate - this.args.options = _options.uniqBy(function(obj) { - return obj.fieldname; + // add missing labels + _options.forEach(option => { + if (!option.label) { + option.label = me.get_label(option.fieldname); + } }); - // add missing labels - this.args.options.forEach(function(o) { - if(!o.label) { - o.label = me.get_label(o.fieldname); - } + // de-duplicate + this.args.options = _options.uniqBy(obj => { + return obj.fieldname; }); }