diff --git a/frappe/desk/leaderboard.py b/frappe/desk/leaderboard.py index 06d9a968d4..218dae0ff4 100644 --- a/frappe/desk/leaderboard.py +++ b/frappe/desk/leaderboard.py @@ -1,12 +1,14 @@ from __future__ import unicode_literals, print_function import frappe +from frappe.utils import get_fullname def get_leaderboards(): leaderboards = { 'Energy Point Log': { 'fields': ['points'], 'method': 'frappe.desk.leaderboard.get_energy_point_leaderboard', + 'company_disabled': 1 } } return leaderboards @@ -31,4 +33,8 @@ def get_energy_point_leaderboard(from_date, company = None, field = None, limit if user not in energy_point_users_list: energy_point_users.append({'name': user, 'value': 0}) + for user in energy_point_users: + user_id = user['name'] + user['formatted_name'] = '{}'.format(user_id, get_fullname(user_id)) + return energy_point_users \ No newline at end of file diff --git a/frappe/desk/page/leaderboard/leaderboard.js b/frappe/desk/page/leaderboard/leaderboard.js index 8d6652df99..d5c5f12150 100644 --- a/frappe/desk/page/leaderboard/leaderboard.js +++ b/frappe/desk/page/leaderboard/leaderboard.js @@ -34,7 +34,12 @@ class Leaderboard { this.leaderboard_config = config; for (let doctype in this.leaderboard_config) { this.doctypes.push(doctype); - this.filters[doctype] = this.leaderboard_config[doctype].fields; + this.filters[doctype] = this.leaderboard_config[doctype].fields.map(field => { + if (typeof field ==='object') { + return field.label || field.fieldname; + } + return field; + }); } this.timespans = ["Week", "Month", "Quarter", "Year", "All Time"]; @@ -93,6 +98,7 @@ class Leaderboard { this.make_request(); } }); + this.timespan_select = this.page.add_select(__("Timespan"), this.timespans.map(d => { return {"label": __(d), value: d }; @@ -132,8 +138,7 @@ class Leaderboard { return {"label": __(frappe.model.unscrub(d)), value: d }; }) ); - - if (this.options.selected_doctype === "Energy Point Log") { + if (this.leaderboard_config[this.options.selected_doctype].company_disabled) { $(this.parent).find("[data-original-title=Company]").hide(); } else { $(this.parent).find("[data-original-title=Company]").show(); @@ -176,7 +181,7 @@ class Leaderboard { } show_leaderboard(doctype) { - if(this.doctypes.length) { + if (this.doctypes.length) { if (this.doctypes.includes(doctype)) { this.options.selected_doctype = doctype; this.$sidebar_list.find(`[doctype-value = "${this.options.selected_doctype}"]`).trigger("click"); @@ -322,41 +327,27 @@ class Leaderboard { } get_item_html(item, index) { - const company = this.options.selected_company; - const currency = frappe.get_doc(":Company", company).default_currency; - const fields = ["rank", "name", "value"]; + const fields = this.leaderboard_config[this.options.selected_doctype].fields; + const value = frappe.format(item.value, fields.find(field => { + let fieldname = field.fieldname || field; + return fieldname === this.options.selected_filter_item; + })); + const link = `#Form/${this.options.selected_doctype}/${item.name}`; + const name_html = item.formatted_name ? + `${item.formatted_name}` + : ` ${item.name} `; const html = - `