fix: add init.py and refactor get_user_rank function
This commit is contained in:
parent
4ce89cb8b0
commit
7491500142
3 changed files with 27 additions and 28 deletions
0
frappe/desk/page/user_profile/__init__.py
Normal file
0
frappe/desk/page/user_profile/__init__.py
Normal file
|
|
@ -374,21 +374,13 @@ class UserProfile {
|
|||
}
|
||||
}
|
||||
|
||||
get_user_rank(date) {
|
||||
get_user_rank() {
|
||||
return frappe.xcall('frappe.desk.page.user_profile.user_profile.get_user_rank', {
|
||||
user: this.user_id,
|
||||
date: date || null,
|
||||
}).then(r => {
|
||||
if (r[0]) {
|
||||
let user_rank = r[0];
|
||||
|
||||
//Check if monthly rank or all time rank
|
||||
if (!date) {
|
||||
this.rank = user_rank[1];
|
||||
} else {
|
||||
this.month_rank = user_rank[1];
|
||||
}
|
||||
}
|
||||
if (r.monthly_rank[0]) this.month_rank = r.monthly_rank[0][1];
|
||||
if (r.all_time_rank[0]) this.rank = r.all_time_rank[0][1];
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -410,18 +402,14 @@ class UserProfile {
|
|||
let $profile_details = this.wrapper.find('.profile-details');
|
||||
|
||||
this.get_user_rank().then(() => {
|
||||
this.get_user_points().then(() => {
|
||||
let html = $(__(`<p class="user-energy-points text-muted">${__('Energy Points: ')}<span class="rank">{0}</span></p>
|
||||
<p class="user-energy-points text-muted">${__('Review Points: ')}<span class="rank">{1}</span></p>
|
||||
<p class="user-energy-points text-muted">${__('Rank: ')}<span class="rank">{2}</span></p>
|
||||
<p class="user-energy-points text-muted">${__('Monthly Rank: ')}<span class="rank">{3}</span></p>
|
||||
`, [this.energy_points, this.review_points, this.rank, this.month_rank]));
|
||||
|
||||
this.get_user_rank(frappe.datetime.month_start()).then(() => {
|
||||
|
||||
this.get_user_points().then(() => {
|
||||
let html = $(__(`<p class="user-energy-points text-muted">${__('Energy Points: ')}<span class="rank">{0}</span></p>
|
||||
<p class="user-energy-points text-muted">${__('Review Points: ')}<span class="rank">{1}</span></p>
|
||||
<p class="user-energy-points text-muted">${__('Rank: ')}<span class="rank">{2}</span></p>
|
||||
<p class="user-energy-points text-muted">${__('Monthly Rank: ')}<span class="rank">{3}</span></p>
|
||||
`, [this.energy_points, this.review_points, this.rank, this.month_rank]));
|
||||
|
||||
$profile_details.append(html);
|
||||
});
|
||||
$profile_details.append(html);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import frappe
|
||||
from datetime import datetime
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_energy_points_heatmap_data(user, date):
|
||||
|
|
@ -30,14 +31,24 @@ def get_energy_points_percentage_chart_data(user, field):
|
|||
}
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_user_rank(user, date=None):
|
||||
result = frappe.db.get_all('Energy Point Log',
|
||||
group_by='user',
|
||||
filters={'creation': ['>', date], 'type' : ['!=', 'Review']},
|
||||
fields=['user', 'rank() over (order by sum(points) desc) as rank'],
|
||||
def get_user_rank(user):
|
||||
month_start = datetime.today().replace(day=1)
|
||||
monthly_rank = frappe.db.get_all('Energy Point Log',
|
||||
group_by = 'user',
|
||||
filters = {'creation': ['>', month_start], 'type' : ['!=', 'Review']},
|
||||
fields = ['user', 'rank() over (order by sum(points) desc) as rank'],
|
||||
as_list = True)
|
||||
|
||||
return [r for r in result if r[0] == user]
|
||||
all_time_rank = frappe.db.get_all('Energy Point Log',
|
||||
group_by = 'user',
|
||||
filters = {'type' : ['!=', 'Review']},
|
||||
fields = ['user', 'rank() over (order by sum(points) desc) as rank'],
|
||||
as_list = True)
|
||||
|
||||
return {
|
||||
'monthly_rank': [r for r in monthly_rank if r[0] == user],
|
||||
'all_time_rank': [r for r in all_time_rank if r[0] == user]
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue