From 87b625036719c005e914c6ef4245cb2af64c2da2 Mon Sep 17 00:00:00 2001 From: krateng Date: Thu, 19 Oct 2023 17:55:01 +0200 Subject: [PATCH] Extended chart separation logic to performance --- maloja/database/__init__.py | 4 +++- maloja/web/jinja/partials/performance.jinja | 6 +++--- maloja/web/jinja/performance.jinja | 2 ++ maloja/web/jinja/snippets/links.jinja | 4 ++-- maloja/web/jinja/snippets/timeselection.jinja | 4 +++- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py index 847e5f1..4bb4834 100644 --- a/maloja/database/__init__.py +++ b/maloja/database/__init__.py @@ -425,6 +425,8 @@ def get_pulse(dbconn=None,**keys): @waitfordb def get_performance(dbconn=None,**keys): + separate = keys.get('separate') + rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]}) results = [] @@ -443,7 +445,7 @@ def get_performance(dbconn=None,**keys): #artist = sqldb.get_artist(artist_id,dbconn=dbconn) # ^this is the most useless line in programming history # but I like consistency - charts = get_charts_artists(timerange=rng,resolve_ids=False,dbconn=dbconn) + charts = get_charts_artists(timerange=rng,resolve_ids=False,separate=separate,dbconn=dbconn) rank = None for c in charts: if c["artist_id"] == artist_id: diff --git a/maloja/web/jinja/partials/performance.jinja b/maloja/web/jinja/partials/performance.jinja index 558df31..12e07f4 100644 --- a/maloja/web/jinja/partials/performance.jinja +++ b/maloja/web/jinja/partials/performance.jinja @@ -1,6 +1,6 @@ {% import 'snippets/links.jinja' as links %} -{% set ranges = dbc.get_performance(filterkeys,limitkeys,delimitkeys) %} +{% set ranges = dbc.get_performance(filterkeys,limitkeys,delimitkeys,specialkeys) %} {% set minrank = ranges|map(attribute="rank")|reject("none")|max|default(60) %} {% set minrank = minrank + 20 %} @@ -13,11 +13,11 @@ {{ thisrange.desc() }} - {{ links.link_rank(filterkeys,thisrange,rank=t.rank) }} + {{ links.link_rank(filterkeys,specialkeys,thisrange,rank=t.rank) }} {% set prct = ((minrank+1-t.rank)*100/minrank if t.rank is not none else 0) %} - {{ links.link_rank(filterkeys,thisrange,percent=prct,rank=t.rank) }} + {{ links.link_rank(filterkeys,specialkeys,thisrange,percent=prct,rank=t.rank) }} diff --git a/maloja/web/jinja/performance.jinja b/maloja/web/jinja/performance.jinja index 5ab281d..dd6c711 100644 --- a/maloja/web/jinja/performance.jinja +++ b/maloja/web/jinja/performance.jinja @@ -25,7 +25,9 @@
{{ filterdesc.desc(filterkeys,limitkeys,prefix='of') }}

+ {% with artistchart = True %} {% include 'snippets/timeselection.jinja' %} + {% endwith %} diff --git a/maloja/web/jinja/snippets/links.jinja b/maloja/web/jinja/snippets/links.jinja index f90a535..67b940c 100644 --- a/maloja/web/jinja/snippets/links.jinja +++ b/maloja/web/jinja/snippets/links.jinja @@ -45,14 +45,14 @@ {%- endmacro %} -{% macro link_rank(filterkeys,timerange,rank=None,percent=None) %} +{% macro link_rank(filterkeys,specialkeys,timerange,rank=None,percent=None) %} {% if 'track' in filterkeys %} {% set url = mlj_uri.create_uri("/charts_tracks",{'timerange':timerange}) %} {% elif 'album' in filterkeys %} {% set url = mlj_uri.create_uri("/charts_albums",{'timerange':timerange}) %} {% elif 'artist' in filterkeys %} - {% set url = mlj_uri.create_uri("/charts_artists",{'timerange':timerange}) %} + {% set url = mlj_uri.create_uri("/charts_artists",{'timerange':timerange},specialkeys) %} {% endif %} {% set rankclass = {1:'gold',2:'silver',3:'bronze'}[rank] or "" %} diff --git a/maloja/web/jinja/snippets/timeselection.jinja b/maloja/web/jinja/snippets/timeselection.jinja index efd4e60..e17510f 100644 --- a/maloja/web/jinja/snippets/timeselection.jinja +++ b/maloja/web/jinja/snippets/timeselection.jinja @@ -62,7 +62,9 @@ {% endif %} - {% if 'artist' in filterkeys %} + + {% if ('artist' in filterkeys) and (not artistchart) %}
{% for o in xassociated %} {% if o.replacekeys | map('compare_key_in_dicts',o.replacekeys,allkeys) | alltrue %}