Super hack for chart pages

This commit is contained in:
2023-02-28 22:11:37 -05:00
parent bf3479dbc7
commit 0a9279dbd4
3 changed files with 82 additions and 69 deletions

View File

@ -458,7 +458,7 @@ class ChartRecordView(TemplateView):
if not date: if not date:
artist_params = {'user': user, 'media_type': 'Artist'} artist_params = {'user': user, 'media_type': 'Artist'}
context_data['artist_charts'] = { context_data['current_artist_charts'] = {
"today": live_charts(**artist_params, chart_period="today"), "today": live_charts(**artist_params, chart_period="today"),
"week": live_charts(**artist_params, chart_period="week"), "week": live_charts(**artist_params, chart_period="week"),
"month": live_charts(**artist_params, chart_period="month"), "month": live_charts(**artist_params, chart_period="month"),
@ -466,7 +466,7 @@ class ChartRecordView(TemplateView):
} }
track_params = {'user': user, 'media_type': 'Track'} track_params = {'user': user, 'media_type': 'Track'}
context_data['track_charts'] = { context_data['current_track_charts'] = {
"today": live_charts(**track_params, chart_period="today"), "today": live_charts(**track_params, chart_period="today"),
"week": live_charts(**track_params, chart_period="week"), "week": live_charts(**track_params, chart_period="week"),
"month": live_charts(**track_params, chart_period="month"), "month": live_charts(**track_params, chart_period="month"),
@ -511,21 +511,35 @@ class ChartRecordView(TemplateView):
now.month == month and now.year == year and now.day == day now.month == month and now.year == year and now.day == day
) )
media_filter = self.get_media_filter(media_type) media_filter = self.get_media_filter("Track")
charts = ChartRecord.objects.filter( track_charts = ChartRecord.objects.filter(
media_filter, user=self.request.user, **params
).order_by("rank")
media_filter = self.get_media_filter("Artist")
artist_charts = ChartRecord.objects.filter(
media_filter, user=self.request.user, **params media_filter, user=self.request.user, **params
).order_by("rank") ).order_by("rank")
if charts.count() == 0 and not in_progress: if track_charts.count() == 0 and not in_progress:
ChartRecord.build( ChartRecord.build(
user=self.request.user, model_str=media_type, **params user=self.request.user, model_str="Track", **params
) )
charts = ChartRecord.objects.filter( media_filter = self.get_media_filter("Track")
track_charts = ChartRecord.objects.filter(
media_filter, user=self.request.user, **params
).order_by("rank")
if artist_charts.count() == 0 and not in_progress:
ChartRecord.build(
user=self.request.user, model_str="Artist", **params
)
media_filter = self.get_media_filter("Artist")
artist_charts = ChartRecord.objects.filter(
media_filter, user=self.request.user, **params media_filter, user=self.request.user, **params
).order_by("rank") ).order_by("rank")
context_data['media_type'] = media_type context_data['media_type'] = media_type
context_data['charts'] = charts context_data['track_charts'] = track_charts
context_data['artist_charts'] = artist_charts
context_data['name'] = " ".join(["Top", media_type, "for", name]) context_data['name'] = " ".join(["Top", media_type, "for", name])
context_data['in_progress'] = in_progress context_data['in_progress'] = in_progress
return context_data return context_data

View File

@ -4,8 +4,8 @@
{% block lists %} {% block lists %}
<div class="row"> <div class="row">
{% if charts %} {% if artist_charts %}
{% if "Artist" in name %} <div class="col-md">
<div class="tab-content" id="artistTabContent"> <div class="tab-content" id="artistTabContent">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
@ -17,7 +17,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for chart in charts %} {% for chart in artist_charts %}
<tr> <tr>
<td>{{chart.rank}}</td> <td>{{chart.rank}}</td>
<td><a href="{{chart.media_obj.get_absolute_url}}">{{chart.media_obj}}</a></td> <td><a href="{{chart.media_obj.get_absolute_url}}">{{chart.media_obj}}</a></td>
@ -28,23 +28,25 @@
</table> </table>
</div> </div>
</div> </div>
{% elif media_type == "Track" %} </div>
{% endif %}
{% if track_charts %}
<div class="col-md">
<div class="tab-content" id="artistTabContent"> <div class="tab-content" id="artistTabContent">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr> <tr>
<th scope="col">Rank</th> <th scope="col">Rank</th>
<th scope="col">Artist</th>
<th scope="col">Track</th> <th scope="col">Track</th>
<th scope="col">Scrobbles</th> <th scope="col">Scrobbles</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for chart in charts %} {% for chart in track_charts %}
<tr> <tr>
<td>{{chart.rank}}</td> <td>{{chart.rank}}</td>
<td><a href="{{chart.media_obj.artist.get_absolute_url}}">{{chart.media_obj.artist}}</a></td>
<td><a href="{{chart.media_obj.get_absolute_url}}">{{chart.media_obj.title}}</a></td> <td><a href="{{chart.media_obj.get_absolute_url}}">{{chart.media_obj.title}}</a></td>
<td>{{chart.count}}</td> <td>{{chart.count}}</td>
</tr> </tr>
@ -53,17 +55,15 @@
</table> </table>
</div> </div>
</div> </div>
{% elif "Video" in name %} </div>
{% elif "Series" in name %}
{% endif %}
{% endif %} {% endif %}
{% if artist_charts %} {% if current_artist_charts %}
<div class="col-md"> <div class="col-md">
<h2>Top Artists</h2> <h2>Top Artists</h2>
<ul class="nav nav-tabs" id="artistTab" role="tablist"> <ul class="nav nav-tabs" id="artistTab" role="tablist">
{% for chart_name in artist_charts.keys %} {% for chart_name in current_artist_charts.keys %}
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link {% if forloop.first %}active{% endif %}" id="artist-{{chart_name}}-tab" data-bs-toggle="tab" data-bs-target="#artist-{{chart_name}}" <button class="nav-link {% if forloop.first %}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"> type="button" role="tab" aria-controls="home" aria-selected="true">
@ -74,7 +74,7 @@
</ul> </ul>
<div class="tab-content" id="artistTabContent"> <div class="tab-content" id="artistTabContent">
{% for chart_name, artists in artist_charts.items %} {% for chart_name, artists in current_artist_charts.items %}
<div class="tab-pane fade {% if forloop.first %}show active{% endif %}" id="artist-{{chart_name}}" role="tabpanel" <div class="tab-pane fade {% if forloop.first %}show active{% endif %}" id="artist-{{chart_name}}" role="tabpanel"
aria-labelledby="artist-{[chart}}-tab"> aria-labelledby="artist-{[chart}}-tab">
<div class="table-responsive"> <div class="table-responsive">
@ -101,12 +101,12 @@
{% endif %} {% endif %}
</div> </div>
{% if track_charts %} {% if current_track_charts %}
<div class="col-md"> <div class="col-md">
<h2>Top Tracks</h2> <h2>Top Tracks</h2>
<ul class="nav nav-tabs" id="artistTab" role="tablist"> <ul class="nav nav-tabs" id="artistTab" role="tablist">
{% for chart_name in track_charts.keys %} {% for chart_name in current_track_charts.keys %}
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link {% if forloop.first %}active{% endif %}" id="track-{{chart_name}}-tab" data-bs-toggle="tab" data-bs-target="#track-{{chart_name}}" <button class="nav-link {% if forloop.first %}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"> type="button" role="tab" aria-controls="home" aria-selected="true">
@ -117,7 +117,7 @@
</ul> </ul>
<div class="tab-content" id="trackTabContent"> <div class="tab-content" id="trackTabContent">
{% for chart_name, tracks in track_charts.items %} {% for chart_name, tracks in current_track_charts.items %}
<div class="tab-pane fade {% if forloop.first %}show active{% endif %}" id="track-{{chart_name}}" role="tabpanel" <div class="tab-pane fade {% if forloop.first %}show active{% endif %}" id="track-{{chart_name}}" role="tabpanel"
aria-labelledby="track-{[chart_name}}-tab"> aria-labelledby="track-{[chart_name}}-tab">
<div class="table-responsive"> <div class="table-responsive">

View File

@ -84,13 +84,12 @@
<tr> <tr>
<td>{{scrobble.timestamp|naturaltime}}</td> <td>{{scrobble.timestamp|naturaltime}}</td>
{% if scrobble.track.album.cover_image %} {% if scrobble.track.album.cover_image %}
<td><img src="{{scrobble.track.album.cover_image.url}}" width=25 height=25 <td><a href="{{scrobble.track.album.get_absolute_url}}"><img src="{{scrobble.track.album.cover_image.url}}" width=25 height=25 style="border:1px solid black;" /></aa></td>
style="border:1px solid black;" /></td>
{% else %} {% else %}
<td>{{scrobble.track.album.name}}</td> <td><a href="{{scrobble.track.album.get_absolute_url}}">{{scrobble.track.album.name}}</a></td>
{% endif %} {% endif %}
<td>{{scrobble.track.title}}</td> <td><a href="{{scrobble.track.get_absolute_url }}">{{scrobble.track.title}}</a></td>
<td>{{scrobble.track.artist.name}}</td> <td><a href="{{scrobble.track.artist.get_absolute_url }}">{{scrobble.track.artist.name}}</aa></td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>