diff --git a/frappe/public/js/frappe/list/list_sidebar.js b/frappe/public/js/frappe/list/list_sidebar.js index 7b3cb44acb..e5fa6366e5 100644 --- a/frappe/public/js/frappe/list/list_sidebar.js +++ b/frappe/public/js/frappe/list/list_sidebar.js @@ -63,74 +63,40 @@ frappe.views.ListSidebar = class ListSidebar { filters: (me.list_view.filter_area ? me.list_view.get_filters_for_args() : me.default_filters) || [] }, callback: function(r) { - me.render_stat("_user_tags", (r.message.stats || {})["_user_tags"]); + me.render_stat((r.message.stats || {})["_user_tags"]); let stats_dropdown = me.sidebar.find('.list-stats-dropdown'); frappe.utils.setup_search(stats_dropdown, '.stat-link', '.stat-label'); } }); } - render_stat(field, stat, tags) { - var me = this; - var sum = 0; - var stats = []; - var label = frappe.meta.docfield_map[this.doctype][field] ? - frappe.meta.docfield_map[this.doctype][field].label : field; - - stat = (stat || []).sort(function(a, b) { - return b[1] - a[1]; - }); - $.each(stat, function(i, v) { - sum = sum + v[1]; - }); - - if (tags) { - for (var t in tags) { - var nfound = -1; - for (var i in stat) { - if (tags[t] === stat[i][0]) { - stats.push(stat[i]); - nfound = i; - break; - } - } - if (nfound < 0) { - stats.push([tags[t], 0]); - } else { - me.tempstats["_user_tags"].splice(nfound, 1); - } - } - field = "_user_tags"; - } else { - stats = stat; - } - var context = { - field: field, - stat: stats, - sum: sum, - label: field === '_user_tags' ? (tags ? __(label) : __("Tags")) : __(label), + render_stat(stats) { + let args = { + stats: stats, + label: __("Tags") }; - $(frappe.render_template("list_sidebar_stat", context)) - .on("click", ".stat-link", function() { - var fieldname = $(this).attr('data-field'); - var label = $(this).attr('data-label'); - var condition = "like"; - var existing = me.list_view.filter_area.filter_list.get_filter(fieldname); - if(existing) { - existing.remove(); - } - if (label == "No Tags") { - label = "%,%"; - condition = "not like"; - } - me.list_view.filter_area.add( - me.doctype, - fieldname, - condition, - label - ); - }) - .appendTo(this.sidebar.find(".list-stats-dropdown")); + + let tag_list = $(frappe.render_template("list_sidebar_stat", args)).on("click", ".stat-link", (e) => { + let fieldname = $(e.currentTarget).attr('data-field'); + let label = $(e.currentTarget).attr('data-label'); + let condition = "like"; + let existing = this.list_view.filter_area.filter_list.get_filter(fieldname); + if (existing) { + existing.remove(); + } + if (label == "No Tags") { + label = "%,%"; + condition = "not like"; + } + this.list_view.filter_area.add( + this.doctype, + fieldname, + condition, + label + ); + }); + + this.sidebar.find(".list-stats-dropdown .stat-result").html(tag_list); } set_fieldtype(df) { diff --git a/frappe/public/js/frappe/list/list_sidebar_stat.html b/frappe/public/js/frappe/list/list_sidebar_stat.html index dd5b728af6..140202b5f3 100644 --- a/frappe/public/js/frappe/list/list_sidebar_stat.html +++ b/frappe/public/js/frappe/list/list_sidebar_stat.html @@ -1,13 +1,13 @@ -{% if(!stat.length) { %} +{% if (!stats.length) { %}
  • {{ __("No records tagged.") }}
  • {% } else { - for (var i=0, l=stat.length; i < l; i++) { - var stat_label = stat[i][0]; - var stat_count = stat[i][1]; + for (var i=0, l=stats.length; i < l; i++) { + var stat_label = stats[i][0]; + var stat_count = stats[i][1]; %}
  • - + {{ __(stat_label) }} {{ stat_count }}