Add sorting by last activity

* Update AnalyticsServer.py
* Update charts.html
* Update script.js
This commit is contained in:
silentguy256
2023-02-14 08:45:01 +01:00
committed by GitHub
parent ec6a8b7a56
commit fcfbdb9177
3 changed files with 22 additions and 2 deletions

View File

@@ -115,6 +115,13 @@ def get_challenge_points(streamer):
return 0
def get_last_activity(streamer):
datas = read_json(streamer, return_response=False)
if datas != {}:
return datas["series"][-1]["x"]
return 0
def json_all():
return Response(
json.dumps(
@@ -143,7 +150,7 @@ def streamers():
return Response(
json.dumps(
[
{"name": s, "points": get_challenge_points(s)}
{"name": s, "points": get_challenge_points(s), "last_activity": get_last_activity(s)}
for s in sorted(streamers_available())
]
),

View File

@@ -86,6 +86,12 @@
<a href="#" class="dropdown-item" onClick="changeSortBy(this)">
Points descending
</a>
<a href="#" class="dropdown-item" onClick="changeSortBy(this)">
Last activity ascending
</a>
<a href="#" class="dropdown-item" onClick="changeSortBy(this)">
Last activity descending
</a>
</div>
</div>
</div>

View File

@@ -85,6 +85,7 @@ var annotations = [];
var streamersList = [];
var sortBy = "Name ascending";
var sortField = 'name';
var startDate = new Date();
startDate.setDate(startDate.getDate() - daysAgo);
@@ -104,6 +105,9 @@ $(document).ready(function () {
$('#endDate').val(formatDate(endDate));
sortBy = localStorage.getItem("sort-by");
if (sortBy.includes("Points")) sortField = 'points';
else if (sortBy.includes("Last activity")) sortField = 'last_activity';
else sortField = 'name';
$('#sorting-by').text(sortBy);
getStreamers();
@@ -184,12 +188,15 @@ function renderStreamers() {
function sortStreamers() {
streamersList = streamersList.sort((a, b) => {
return (a[sortBy.includes("Name") ? 'name' : 'points'] > b[sortBy.includes("Name") ? 'name' : 'points'] ? 1 : -1) * (sortBy.includes("ascending") ? 1 : -1);
return (a[sortField] > b[sortField] ? 1 : -1) * (sortBy.includes("ascending") ? 1 : -1);
});
}
function changeSortBy(option) {
sortBy = option.innerText.trim();
if (sortBy.includes("Points")) sortField = 'points'
else if (sortBy.includes("Last activity")) sortField = 'last_activity'
else sortField = 'name';
sortStreamers();
renderStreamers();
$('#sorting-by').text(sortBy);