[17ed1da] | 1 | <!DOCTYPE html>
|
---|
| 2 | <html>
|
---|
| 3 | <head>
|
---|
[4abe330] | 4 | <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/css/bootstrap.min.css" rel="stylesheet"
|
---|
| 5 | integrity="sha384-SgOJa3DmI69IUzQ2PVdRZhwQ+dy64/BUtbMJw1MZ8t5HZApcHrRKUc4W0kG879m7" crossorigin="anonymous">
|
---|
| 6 | <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/js/bootstrap.bundle.min.js"
|
---|
| 7 | integrity="sha384-k6d4wzSIapyDyv1kpU366/PK5hCdSbCRGRCMv+eplOQJWyd1fbcAu9OCUj5zNLiq"
|
---|
| 8 | crossorigin="anonymous"></script>
|
---|
| 9 | <title>Number of Tracks from Each Genre per Customer</title>
|
---|
[17ed1da] | 10 | </head>
|
---|
[4abe330] | 11 | <body class="d-flex bg-light">
|
---|
| 12 | {% include 'sidebar.html' %}
|
---|
| 13 | <div class="container mt-5">
|
---|
| 14 | <h1 class="mb-4 text-center">Number of Tracks from Each Genre per Customer</h1>
|
---|
[17ed1da] | 15 |
|
---|
[4abe330] | 16 | <form method="GET" action="" class="row g-3 mb-4">
|
---|
| 17 | <div class="col-md-4">
|
---|
| 18 | <label for="customer_id" class="form-label">Select Customer:</label>
|
---|
| 19 | <select name="customer_id" id="customer_id" class="form-select">
|
---|
| 20 | <option value="">All Customers</option>
|
---|
| 21 | {% for customer in customers %}
|
---|
| 22 | <option value="{{ customer.customer_id }}"
|
---|
| 23 | {% if request.GET.customer_id == customer.0|stringformat:'s' %}selected{% endif %}>
|
---|
| 24 | {{ customer.first_name }} {{ customer.last_name }}
|
---|
| 25 | </option>
|
---|
| 26 | {% endfor %}
|
---|
| 27 | </select>
|
---|
| 28 | </div>
|
---|
[17ed1da] | 29 |
|
---|
[4abe330] | 30 | <div class="col-md-4 d-flex align-items-end">
|
---|
| 31 | <button type="submit" class="btn btn-primary w-100">Filter</button>
|
---|
| 32 | </div>
|
---|
| 33 | </form>
|
---|
[17ed1da] | 34 |
|
---|
[4abe330] | 35 | {% if not data %}
|
---|
| 36 | <div class="alert alert-warning" role="alert">
|
---|
| 37 | No data available for the selected customer.
|
---|
| 38 | </div>
|
---|
| 39 | {% else %}
|
---|
| 40 | <div class="table-responsive">
|
---|
| 41 | <table class="table table-striped">
|
---|
| 42 | <thead>
|
---|
| 43 | <tr>
|
---|
| 44 | <th scope="col">First Name</th>
|
---|
| 45 | <th scope="col">Last Name</th>
|
---|
| 46 | <th scope="col">Genre</th>
|
---|
| 47 | <th scope="col">Number of Tracks</th>
|
---|
| 48 | </tr>
|
---|
| 49 | </thead>
|
---|
| 50 | <tbody>
|
---|
| 51 | {% for row in data %}
|
---|
| 52 | <tr>
|
---|
| 53 | <td>{{ row.first_name }}</td>
|
---|
| 54 | <td>{{ row.last_name }}</td>
|
---|
| 55 | <td>{{ row.genre }}</td>
|
---|
| 56 | <td>{{ row.track_count }}</td>
|
---|
| 57 | </tr>
|
---|
| 58 | {% endfor %}
|
---|
| 59 | </tbody>
|
---|
| 60 | </table>
|
---|
| 61 | </div>
|
---|
| 62 | {% endif %}
|
---|
| 63 | </div>
|
---|
[17ed1da] | 64 |
|
---|
| 65 | </body>
|
---|
| 66 | </html>
|
---|