diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 26075f4daa..90f320b334 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -581,10 +581,24 @@ def get_list(doctype, *args, **kwargs): @frappe.whitelist() def get_count(doctype, filters=None): - if filters: - filters = json.loads(filters) - if isinstance(filters, list): filters = frappe.utils.make_filter_dict(filters) return frappe.db.count(doctype, filters=filters) + +@frappe.whitelist() +def set_filters(doctype, filters=None): + count = [] + if filters: + filters = json.loads(filters) + + for d in filters: + filt = [] + if d[0] != doctype: + doctype = d[0] + filt.append(d) + + count.append(get_count(doctype, filt)) + if count: + return min(count) + return count diff --git a/frappe/public/js/frappe/list/list_renderer.js b/frappe/public/js/frappe/list/list_renderer.js index 7a831b6606..864b15dab5 100644 --- a/frappe/public/js/frappe/list/list_renderer.js +++ b/frappe/public/js/frappe/list/list_renderer.js @@ -362,13 +362,13 @@ frappe.views.ListRenderer = Class.extend({ const $header_right = this.list_view.list_header.find('.list-item__content--activity'); frappe.call({ - method: 'frappe.model.db_query.get_count', + method: 'frappe.model.db_query.set_filters', args: { doctype: this.doctype, filters: this.list_view.get_filters_args() } }).then(r => { - const count = r.message; + const count = r.message ? r.message : current_count; const $html = $(`${current_count} of ${count}`); $html.css({