Explorar el Código

Add tabs and clean up main page

Colin Powell hace 2 años
padre
commit
83b6ba9cc3
Se han modificado 2 ficheros con 117 adiciones y 94 borrados
  1. 1 1
      vrobbler/apps/scrobbles/views.py
  2. 116 93
      vrobbler/templates/scrobbles/scrobble_list.html

+ 1 - 1
vrobbler/apps/scrobbles/views.py

@@ -75,7 +75,7 @@ class RecentScrobbleList(ListView):
     def get_queryset(self):
         return Scrobble.objects.filter(
             track__isnull=False, in_progress=False
-        ).order_by('-timestamp')[:25]
+        ).order_by('-timestamp')[:15]
 
 
 @csrf_exempt

+ 116 - 93
vrobbler/templates/scrobbles/scrobble_list.html

@@ -3,7 +3,7 @@
 
 
 {% block content %}
-<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
+<main class="col-md-4 ms-sm-auto col-lg-10 px-md-4">
     <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
         <h1 class="h2">Dashboard</h1>
         <div class="btn-toolbar mb-2 mb-md-0">
@@ -18,108 +18,131 @@
         </div>
     </div>
 
-    <canvas class="my-4 w-100" id="myChart" width="900" height="380"></canvas>
+    <canvas class="my-4 w-100" id="myChart" width="900" height="220"></canvas>
 
     <div class="container">
+
+        <div class="row">
+            <p>Today <b>{{counts.today}}</b> | This Week <b>{{counts.week}}</b> | This Month <b>{{counts.month}}</b> | This Year <b>{{counts.year}}</b> | All Time <b>{{counts.alltime}}</b></p>
+        </div>
         <div class="row">
             <div class="col-md">
-                <h2>Top artists this week</h2>
-                <div class="table-responsive">
-                    <table class="table table-striped table-sm">
-                    <thead>
-                        <tr>
-                            <th scope="col">#</th>
-                            <th scope="col">Artist</th>
-                        </tr>
-                    </thead>
-                    <tbody>
-                        {% for artist in top_weekly_artists %}
-                        <tr>
-                            <td>{{artist.num_scrobbles}}</td>
-                            <td>{{artist.name}}</td>
-                        </tr>
-                        {% endfor %}
-                    </tbody>
-                    </table>
+                <ul class="nav nav-tabs" id="myTab" role="tablist">
+                    <li class="nav-item" role="presentation">
+                        <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#artists-week" type="button" role="tab" aria-controls="home" aria-selected="true">Weekly Artists</button>
+                    </li>
+                    <li class="nav-item" role="presentation">
+                        <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#tracks-week" type="button" role="tab" aria-controls="profile" aria-selected="false">Weekly Tracks</button>
+                    </li>
+                </ul>
+
+                <div class="tab-content" id="myTabContent">
+                    <div class="tab-pane fade show" id="artists-week" role="tabpanel" aria-labelledby="artists-week-tab">
+                        <h2>Top artists this week</h2>
+                        <div class="table-responsive">
+                            <table class="table table-striped table-sm">
+                            <thead>
+                                <tr>
+                                    <th scope="col">#</th>
+                                    <th scope="col">Artist</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                {% for artist in top_weekly_artists %}
+                                <tr>
+                                    <td>{{artist.num_scrobbles}}</td>
+                                    <td>{{artist.name}}</td>
+                                </tr>
+                                {% endfor %}
+                            </tbody>
+                            </table>
+                        </div>
+                    </div>
+
+                    <div class="tab-pane fade show active" id="tracks-week" role="tabpanel" aria-labelledby="tracks-week-tab">
+                        <h2>Top tracks this week</h2>
+                        <div class="table-responsive">
+                            <table class="table table-striped table-sm">
+                            <thead>
+                                <tr>
+                                    <th scope="col">#</th>
+                                    <th scope="col">Track</th>
+                                    <th scope="col">Artist</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                {% for track in top_weekly_tracks %}
+                                <tr>
+                                    <td>{{track.num_scrobbles}}</td>
+                                    <td>{{track.title}}</td>
+                                    <td>{{track.artist.name}}</td>
+                                </tr>
+                                {% endfor %}
+                            </tbody>
+                            </table>
+                        </div>
+                    </div>
                 </div>
             </div>
-            <div class="col-lg">
-                <h2>Top tracks this week</h2>
-                <div class="table-responsive">
-                    <table class="table table-striped table-sm">
-                    <thead>
-                        <tr>
-                            <th scope="col">#</th>
+        <div class="col-md">
+            <ul class="nav nav-tabs" id="myTab" role="tablist">
+                <li class="nav-item" role="presentation">
+                    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#latest-listened" type="button" role="tab" aria-controls="home" aria-selected="true">Latest Listened</button>
+                </li>
+                <li class="nav-item" role="presentation">
+                    <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#latest-watched" type="button" role="tab" aria-controls="profile" aria-selected="false">Latest Watched</button>
+                </li>
+            </ul>
+
+            <div class="tab-content" id="myTabContent2">
+                <div class="tab-pane fade show active" id="latest-listened" role="tabpanel" aria-labelledby="latest-listened-tab">
+                    <h2>Latest listened</h2>
+                    <div class="table-responsive">
+                        <table class="table table-striped table-sm">
+                        <thead>
+                            <tr>
+                            <th scope="col">Time</th>
                             <th scope="col">Track</th>
                             <th scope="col">Artist</th>
-                        </tr>
-                    </thead>
-                    <tbody>
-                        {% for track in top_weekly_tracks %}
-                        <tr>
-                            <td>{{track.num_scrobbles}}</td>
-                            <td>{{track.title}}</td>
-                            <td>{{track.artist.name}}</td>
-                        </tr>
-                        {% endfor %}
-                    </tbody>
-                    </table>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            {% for scrobble in object_list %}
+                            <tr>
+                                <td>{{scrobble.timestamp|naturaltime}}</td>
+                                <td>{{scrobble.track.title}}</td>
+                                <td>{{scrobble.track.artist.name}}</td>
+                            </tr>
+                            {% endfor %}
+                        </tbody>
+                        </table>
+                    </div>
                 </div>
-            </div>
-        </div>
-    </div>
-    <div class="container">
-        <div class="row">
-            <div class="col-lg">
-                <h2>Latest listened</h2>
-                <p>Today <b>{{counts.today}}</b> | This Week <b>{{counts.week}}</b> | This Month <b>{{counts.month}}</b> | This Year <b>{{counts.year}}</b> | All Time <b>{{counts.alltime}}</b></p>
-                <div class="table-responsive">
-                    <table class="table table-striped table-sm">
-                    <thead>
-                        <tr>
-                        <th scope="col">Time</th>
-                        <th scope="col">Track</th>
-                        <th scope="col">Artist</th>
-                        <th scope="col">Source</th>
-                        </tr>
-                    </thead>
-                    <tbody>
-                        {% for scrobble in object_list %}
-                        <tr>
-                            <td>{{scrobble.timestamp|naturaltime}}</td>
-                            <td>{{scrobble.track.title}}</td>
-                            <td>{{scrobble.track.artist.name}}</td>
-                            <td>{{scrobble.source}}</td>
-                        </tr>
-                        {% endfor %}
-                    </tbody>
-                    </table>
-                </div>
-            </div>
 
-            <div class="col-lg">
-                <h2>Latest watched</h2>
-                <div class="table-responsive">
-                    <table class="table table-striped table-sm">
-                    <thead>
-                        <tr>
-                        <th scope="col">Time</th>
-                        <th scope="col">Title</th>
-                        <th scope="col">Series</th>
-                        <th scope="col">Source</th>
-                        </tr>
-                    </thead>
-                    <tbody>
-                        {% for scrobble in video_scrobble_list %}
-                        <tr>
-                            <td>{{scrobble.timestamp|naturaltime}}</td>
-                            <td>{% if scrobble.video.tv_series %}E{{scrobble.video.season_number}}S{{scrobble.video.season_number}} -{% endif %} {{scrobble.video.title}}</td>
-                            <td>{% if scrobble.video.tv_series %}{{scrobble.video.tv_series}}{% endif %}</td>
-                            <td>{{scrobble.source}}</td>
-                        </tr>
-                        {% endfor %}
-                    </tbody>
-                    </table>
+                <div class="tab-pane fade show" id="latest-watched" role="tabpanel" aria-labelledby="latest-watched-tab">
+                    <h2>Latest watched</h2>
+                    <div class="table-responsive">
+                        <table class="table table-striped table-sm">
+                        <thead>
+                            <tr>
+                            <th scope="col">Time</th>
+                            <th scope="col">Title</th>
+                            <th scope="col">Series</th>
+                            <th scope="col">Source</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            {% for scrobble in video_scrobble_list %}
+                            <tr>
+                                <td>{{scrobble.timestamp|naturaltime}}</td>
+                                <td>{% if scrobble.video.tv_series %}E{{scrobble.video.season_number}}S{{scrobble.video.season_number}} -{% endif %} {{scrobble.video.title}}</td>
+                                <td>{% if scrobble.video.tv_series %}{{scrobble.video.tv_series}}{% endif %}</td>
+                                <td>{{scrobble.source}}</td>
+                            </tr>
+                            {% endfor %}
+                        </tbody>
+                        </table>
+                    </div>
                 </div>
             </div>
         </div>