Spaces:
No application file
No application file
| {% extends "base.html" %} | |
| {% block content %} | |
| <h2>📊 Dashboard</h2> | |
| <div class="stats"> | |
| <div class="stat-card"> | |
| <h3>Total Books</h3> | |
| <p>{{ stats.total_books }}</p> | |
| </div> | |
| <div class="stat-card"> | |
| <h3>Total Copies</h3> | |
| <p>{{ stats.total_copies }}</p> | |
| </div> | |
| <div class="stat-card"> | |
| <h3>Available Copies</h3> | |
| <p>{{ stats.available_copies }}</p> | |
| </div> | |
| <div class="stat-card"> | |
| <h3>Total Students</h3> | |
| <p>{{ stats.total_students }}</p> | |
| </div> | |
| <div class="stat-card"> | |
| <h3>Books Issued</h3> | |
| <p>{{ stats.books_issued }}</p> | |
| </div> | |
| <div class="stat-card"> | |
| <h3>Overdue Books</h3> | |
| <p style="color: #e74c3c;">{{ stats.overdue_books }}</p> | |
| </div> | |
| <div class="stat-card"> | |
| <h3>Total Fines</h3> | |
| <p>{{ stats.total_fines }} BDT</p> | |
| </div> | |
| <div class="stat-card"> | |
| <h3>Collected Fines</h3> | |
| <p style="color: #27ae60;">{{ stats.collected_fines }} BDT</p> | |
| </div> | |
| </div> | |
| {% if overdue %} | |
| <div class="card"> | |
| <h3 style="color: #e74c3c;">⚠️ Overdue Books ({{ overdue|length }})</h3> | |
| <table> | |
| <tr> | |
| <th>Student ID</th> | |
| <th>Book ID</th> | |
| <th>Due Date</th> | |
| <th>Days Overdue</th> | |
| <th>Fine</th> | |
| </tr> | |
| {% for issue in overdue %} | |
| <tr> | |
| <td>{{ issue.student_id }}</td> | |
| <td>{{ issue.book_id }}</td> | |
| <td>{{ issue.due_date.strftime('%Y-%m-%d') }}</td> | |
| <td>{{ issue.days_overdue() }}</td> | |
| <td>{{ issue.calculate_fine() }} BDT</td> | |
| </tr> | |
| {% endfor %} | |
| </table> | |
| </div> | |
| {% endif %} | |
| {% endblock %} | |