diff --git a/frappe/public/js/frappe/list/base_list.js b/frappe/public/js/frappe/list/base_list.js index a6c076c985..9bffee93aa 100644 --- a/frappe/public/js/frappe/list/base_list.js +++ b/frappe/public/js/frappe/list/base_list.js @@ -889,13 +889,17 @@ class FilterArea { const doctype_fields = this.list_view.meta.fields; const title_field = this.list_view.meta.title_field; + const user_setting_fields = + frappe.get_user_settings(this.list_view.doctype)?.group_by_fields || []; fields = fields.concat( doctype_fields .filter( (df) => (df.fieldname === title_field || - (df.in_standard_filter && frappe.model.is_value_type(df.fieldtype))) && + ((df.in_standard_filter || + user_setting_fields.includes(df.fieldname)) && + frappe.model.is_value_type(df.fieldtype))) && frappe.perm.has_perm(this.list_view.doctype, df.permlevel) ) .map((df) => { diff --git a/frappe/public/js/frappe/list/list_sidebar.js b/frappe/public/js/frappe/list/list_sidebar.js index 1fa9798be4..5026707798 100644 --- a/frappe/public/js/frappe/list/list_sidebar.js +++ b/frappe/public/js/frappe/list/list_sidebar.js @@ -39,12 +39,6 @@ frappe.views.ListSidebar = class ListSidebar { this.reload_stats(); }); } - - if (frappe.user.has_role("System Manager")) { - this.add_insights_banner(); - this.add_crm_banner(); - this.add_helpdesk_banner(); - } } setup_views() { @@ -280,67 +274,4 @@ frappe.views.ListSidebar = class ListSidebar { this.sidebar.find(".stat-no-records").remove(); this.get_stats(); } - - add_banner(message, link, cta) { - try { - this.banner = $(` - - `).appendTo(this.sidebar); - } catch (error) { - console.error(error); - } - } - - add_insights_banner() { - if (cint(frappe.boot.sysdefaults.disable_product_suggestion)) { - return; - } - - if (this.list_view.view != "Report") { - return; - } - - if (localStorage.getItem("show_insights_banner") == "false") { - return; - } - - const message = __("Get more insights with"); - const link = "https://frappe.io/s/insights"; - const cta = "Frappe Insights"; - this.add_banner(message, link, cta); - } - - add_crm_banner() { - if (cint(frappe.boot.sysdefaults.disable_product_suggestion)) { - return; - } - - if (this.list_view.meta.module != "CRM" || this.list_view.view != "List") { - return; - } - - const message = ""; - const link = - "https://frappe.io/crm?utm_source=crm-sidebar&utm_medium=sidebar&utm_campaign=frappe-ad"; - const cta = __("Switch to Frappe CRM for smarter sales"); - this.add_banner(message, link, cta); - } - - add_helpdesk_banner() { - if (cint(frappe.boot.sysdefaults.disable_product_suggestion)) { - return; - } - - if (this.list_view.meta.module != "Support" || this.list_view.view != "List") { - return; - } - - const message = ""; - const link = - "https://frappe.io/helpdesk?utm_source=support-sidebar&utm_medium=sidebar&utm_campaign=frappe-ad"; - const cta = __("Upgrade your support experience with Frappe Helpdesk"); - this.add_banner(message, link, cta); - } }; diff --git a/frappe/public/js/frappe/list/list_sidebar_group_by.js b/frappe/public/js/frappe/list/list_sidebar_group_by.js index 5ce58abfd9..f3b2c35589 100644 --- a/frappe/public/js/frappe/list/list_sidebar_group_by.js +++ b/frappe/public/js/frappe/list/list_sidebar_group_by.js @@ -11,45 +11,10 @@ frappe.views.ListGroupBy = class ListGroupBy { this.group_by_fields = this.group_by_fields.concat(this.user_settings.group_by_fields); } this.render_group_by_items(); - this.make_group_by_fields_modal(); this.setup_dropdown(); this.setup_filter_by(); } - make_group_by_fields_modal() { - let d = new frappe.ui.Dialog({ - title: __("Select Filters"), - fields: this.get_group_by_dropdown_fields(), - }); - - d.set_primary_action(__("Save"), ({ group_by_fields }) => { - frappe.model.user_settings.save( - this.doctype, - "group_by_fields", - group_by_fields || null - ); - this.group_by_fields = group_by_fields - ? ["assigned_to", "owner", ...group_by_fields] - : ["assigned_to", "owner"]; - this.render_group_by_items(); - this.setup_dropdown(); - d.hide(); - }); - - d.$body.prepend(` - - `); - - this.page.sidebar.find(".add-list-group-by a").on("click", () => { - frappe.utils.setup_search(d.$body, ".unit-checkbox", ".label-area"); - d.show(); - }); - } - make_wrapper() { this.$wrapper = this.sidebar.sidebar.find(".list-group-by"); let html = ` @@ -141,25 +106,6 @@ frappe.views.ListGroupBy = class ListGroupBy { frappe.utils.setup_search($dropdown, ".group-by-item", ".group-by-value", "data-name"); } - get_group_by_dropdown_fields() { - let group_by_fields = []; - let fields = this.list_view.meta.fields.filter((f) => - ["Select", "Link", "Data", "Int", "Check"].includes(f.fieldtype) - ); - group_by_fields.push({ - label: __(this.doctype), - fieldname: "group_by_fields", - fieldtype: "MultiCheck", - columns: 2, - options: fields.map((df) => ({ - label: __(df.label, null, df.parent), - value: df.fieldname, - checked: this.group_by_fields.includes(df.fieldname), - })), - }); - return group_by_fields; - } - get_group_by_count(field) { let current_filters = this.list_view.get_filters_for_args(); diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 02ce0c1606..73321f2833 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -1990,6 +1990,14 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { }); } + items.push({ + label: __("Edit Filters", null, "Edit filters of List View"), + action: () => { + this.make_group_by_fields_modal(); + }, + standard: true, + }); + if (frappe.user.has_role("System Manager")) { if (this.get_view_settings) { items.push(this.get_view_settings()); @@ -1999,6 +2007,65 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { return items; } + make_group_by_fields_modal() { + let d = new frappe.ui.Dialog({ + title: __("Select Filters"), + fields: this.get_group_by_dropdown_fields(), + }); + + d.set_primary_action(__("Save"), ({ group_by_fields }) => { + frappe.model.user_settings.save( + this.doctype, + "group_by_fields", + group_by_fields || null + ); + this.group_by_fields = group_by_fields + ? ["assigned_to", "owner", ...group_by_fields] + : ["assigned_to", "owner"]; + d.hide(); + + frappe.msgprint(__("Saving Changes...")); + setTimeout(() => { + location.reload(); + }, 1500); + }); + + d.$body.prepend(` + + `); + + frappe.utils.setup_search(d.$body, ".unit-checkbox", ".label-area"); + d.show(); + } + + get_group_by_dropdown_fields() { + let group_by_fields = []; + let default_fields = ["assigned_to", "owner"]; + default_fields = default_fields.concat( + frappe.get_user_settings(this.doctype)?.group_by_fields || [] + ); + let fields = this.meta.fields.filter((f) => + ["Select", "Link", "Data", "Int", "Check"].includes(f.fieldtype) + ); + + group_by_fields.push({ + label: __(this.doctype), + fieldname: "group_by_fields", + fieldtype: "MultiCheck", + columns: 2, + options: fields.map((df) => ({ + label: __(df.label, null, df.parent), + value: df.fieldname, + checked: default_fields.includes(df.fieldname), + })), + }); + return group_by_fields; + } + get_view_settings() { return { label: __("List Settings", null, "Button in list view menu"), diff --git a/frappe/public/js/frappe/ui/page.html b/frappe/public/js/frappe/ui/page.html index 389345594b..162b29d6a4 100644 --- a/frappe/public/js/frappe/ui/page.html +++ b/frappe/public/js/frappe/ui/page.html @@ -2,17 +2,17 @@
-
+
{% if (!frappe.is_mobile()) { %} - + {% endif %} - +
diff --git a/frappe/public/js/frappe/ui/sidebar/sidebar.html b/frappe/public/js/frappe/ui/sidebar/sidebar.html index 11ad9a19bf..a8c352cbd9 100644 --- a/frappe/public/js/frappe/ui/sidebar/sidebar.html +++ b/frappe/public/js/frappe/ui/sidebar/sidebar.html @@ -50,7 +50,7 @@ aria-label="{{ __("User Menu") }}" >
{{ avatar }}
-
+
{{frappe.session.user_fullname}} {{frappe.session.user_email}}
diff --git a/frappe/public/js/frappe/ui/toolbar/navbar.html b/frappe/public/js/frappe/ui/toolbar/navbar.html index f5f91d4499..9ed4c3f74a 100644 --- a/frappe/public/js/frappe/ui/toolbar/navbar.html +++ b/frappe/public/js/frappe/ui/toolbar/navbar.html @@ -10,7 +10,7 @@ {% if (frappe.is_mobile()) { %} - + {% endif %}