Fix charts to do rolling day counts
This commit is contained in:
@ -95,6 +95,8 @@ def live_charts(
|
||||
now = now_user_timezone(user.profile)
|
||||
tzinfo = now.tzinfo
|
||||
|
||||
seven_days_ago = now - timedelta(days=7)
|
||||
thirty_days_ago = now - timedelta(days=30)
|
||||
start_of_today = datetime.combine(now, datetime.min.time(), tzinfo)
|
||||
start_day_of_week = now - timedelta(days=now.today().isoweekday() % 7)
|
||||
start_day_of_month = now.replace(day=1)
|
||||
@ -105,6 +107,8 @@ def live_charts(
|
||||
period_queries = {
|
||||
"today": {"scrobble__timestamp__gte": start_of_today},
|
||||
"week": {"scrobble__timestamp__gte": start_day_of_week},
|
||||
"last7": {"scrobble__timestamp__gte": seven_days_ago},
|
||||
"last30": {"scrobble__timestamp__gte": thirty_days_ago},
|
||||
"month": {"scrobble__timestamp__gte": start_day_of_month},
|
||||
"year": {"scrobble__timestamp__gte": start_day_of_year},
|
||||
"all": {},
|
||||
|
||||
@ -102,10 +102,17 @@ class RecentScrobbleList(ListView):
|
||||
limit = 14
|
||||
artist = {"user": user, "media_type": "Artist", "limit": limit}
|
||||
# This is weird. They don't display properly as QuerySets, so we cast to lists
|
||||
data["chart_keys"] = {
|
||||
"today": "Today",
|
||||
"last7": "Last 7 days",
|
||||
"last30": "Last 30 days",
|
||||
"year": "This year",
|
||||
"all": "All time",
|
||||
}
|
||||
data["current_artist_charts"] = {
|
||||
"today": list(live_charts(**artist, chart_period="today")),
|
||||
"week": list(live_charts(**artist, chart_period="week")),
|
||||
"month": list(live_charts(**artist, chart_period="month")),
|
||||
"last7": list(live_charts(**artist, chart_period="last7")),
|
||||
"last30": list(live_charts(**artist, chart_period="last30")),
|
||||
"year": list(live_charts(**artist, chart_period="year")),
|
||||
"all": list(live_charts(**artist)),
|
||||
}
|
||||
@ -113,8 +120,8 @@ class RecentScrobbleList(ListView):
|
||||
track = {"user": user, "media_type": "Track", "limit": limit}
|
||||
data["current_track_charts"] = {
|
||||
"today": list(live_charts(**track, chart_period="today")),
|
||||
"week": list(live_charts(**track, chart_period="week")),
|
||||
"month": list(live_charts(**track, chart_period="month")),
|
||||
"last7": list(live_charts(**track, chart_period="last7")),
|
||||
"last30": list(live_charts(**track, chart_period="last30")),
|
||||
"year": list(live_charts(**track, chart_period="year")),
|
||||
"all": list(live_charts(**track)),
|
||||
}
|
||||
|
||||
@ -89,20 +89,18 @@
|
||||
<div class="row">
|
||||
<h2>Top Artist</h2>
|
||||
<ul class="nav nav-tabs" id="artistTab" role="tablist">
|
||||
{% for chart_name in current_artist_charts.keys %}
|
||||
{% for key, name in chart_keys.items %}
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link {% if forloop.counter == 2 %}active{% endif %}"
|
||||
id="artist-{{chart_name}}-tab" data-bs-toggle="tab" data-bs-target="#artist-{{chart_name}}"
|
||||
type="button" role="tab" aria-controls="home" aria-selected="true">
|
||||
{% if chart_name == "all" %}All Time{% else %}{% if chart_name != "today" %}This {% endif %}{{chart_name|capfirst}}{% endif %}
|
||||
</button>
|
||||
id="artist-{{key}}-tab" data-bs-toggle="tab" data-bs-target="#artist-{{key}}"
|
||||
type="button" role="tab" aria-controls="home" aria-selected="true">{{name}}</button>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<div class="tab-content" id="artistTabContent" class="maloja-chart">
|
||||
{% for chart_name, artists in current_artist_charts.items %}
|
||||
<div class="tab-pane fade {% if forloop.counter == 2 %}show active{% endif %}" id="artist-{{chart_name}}" role="tabpanel" aria-labelledby="artist-{{chart_name}}-tab">
|
||||
{% for key, artists in current_artist_charts.items %}
|
||||
<div class="tab-pane fade {% if forloop.counter == 2 %}show active{% endif %}" id="artist-{{key}}" role="tabpanel" aria-labelledby="artist-{{key}}-tab">
|
||||
<div style="display:block">
|
||||
<div style="float:left;">
|
||||
<div class="image-wrapper" style="display:flex; flex-wrap: wrap; margin:0">
|
||||
@ -263,12 +261,10 @@
|
||||
<div class="row">
|
||||
<h2>Top Tracks</h2>
|
||||
<ul class="nav nav-tabs" id="trackTab" role="tablist">
|
||||
{% for chart_name in current_track_charts.keys %}
|
||||
{% for key, name in chart_keys.items %}
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link {% if forloop.counter == 2 %}active{% endif %}" id="track-{{chart_name}}-tab" data-bs-toggle="tab"
|
||||
data-bs-target="#track-{{chart_name}}" type="button" role="tab" aria-controls="home" aria-selected="true">
|
||||
{% if chart_name == "all" %}All Time{% else %}{% if chart_name != "today" %}This {% endif %}{{chart_name|capfirst}}{% endif %}
|
||||
</button>
|
||||
<button class="nav-link {% if forloop.counter == 2 %}active{% endif %}" id="track-{{key}}-tab" data-bs-toggle="tab"
|
||||
data-bs-target="#track-{{key}}" type="button" role="tab" aria-controls="home" aria-selected="true">{{name}}</button>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
Reference in New Issue
Block a user