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 = - `
- ${ - fields.map(col => { - let val = col === "rank"? index: item[col]; - let link = this.options.selected_doctype === "Energy Point Log" - ? `#user-profile/${item["name"]}` - : `#Form/${this.options.selected_doctype}/${item["name"]}`; - if (col == "name") { - val = this.options.selected_doctype === "Energy Point Log" - ? frappe.user.full_name(val) - : val; - var formatted_value = ` ${val} `; - } else { - var value = this.options.selected_doctype !== "Energy Point Log" && - this.options.selected_filter_item.indexOf("qty") == -1 && - col !== "rank" - ? format_currency(val, currency) - : val; - var formatted_value = `${value}`; - } - - return ( - `
- ${formatted_value} -
` - ); - }).join("") - } + `
+
+ ${index} +
+
+ ${name_html} +
+
+ ${value} +
`; return html; diff --git a/frappe/desk/page/leaderboard/leaderboard.json b/frappe/desk/page/leaderboard/leaderboard.json index e6478979fe..930aaeca32 100644 --- a/frappe/desk/page/leaderboard/leaderboard.json +++ b/frappe/desk/page/leaderboard/leaderboard.json @@ -4,7 +4,7 @@ "docstatus": 0, "doctype": "Page", "idx": 0, - "modified": "2019-09-24 11:47:27.726560", + "modified": "2019-09-27 13:07:27.225374", "modified_by": "Administrator", "module": "Desk", "name": "leaderboard",