DMS/templates/dashboard.html
2025-05-01 00:24:26 +08:00

195 lines
9.0 KiB
HTML

{% extends "layout.html" %}
{% block content %}
<h2 class="mb-4"><i class="bi bi-speedometer2"></i> Dashboard</h2>
<div class="row">
<!-- Category Summary -->
<div class="col-md-6 mb-4">
<div class="card h-100">
<div class="card-header bg-primary text-white">
<h5 class="mb-0"><i class="bi bi-folder"></i> Document Categories</h5>
</div>
<div class="card-body">
{% if category_counts %}
<div class="row">
{% for category in category_counts %}
<div class="col-md-6 mb-3">
<div class="card border-0 shadow-sm">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h6 class="mb-0">{{ category.category|capitalize }}</h6>
<small class="text-muted">{{ category.count }} document{% if category.count != 1 %}s{% endif %}</small>
</div>
<a href="{{ url_for('files', category=category.category) }}" class="btn btn-sm btn-outline-primary">
<i class="bi bi-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
{% else %}
<div class="alert alert-info">
<i class="bi bi-info-circle"></i> No documents found. Upload your first document to get started!
</div>
{% endif %}
<div class="text-center mt-3">
<a href="{{ url_for('files') }}" class="btn btn-primary">
<i class="bi bi-table"></i> View All Documents
</a>
</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="col-md-6 mb-4">
<div class="card h-100">
<div class="card-header bg-success text-white">
<h5 class="mb-0"><i class="bi bi-lightning"></i> Quick Actions</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-6 mb-3">
<a href="{{ url_for('upload') }}" class="btn btn-outline-success w-100 h-100 d-flex flex-column justify-content-center align-items-center p-4">
<i class="bi bi-upload fs-2 mb-2"></i>
<span>Upload Document</span>
</a>
</div>
<div class="col-6 mb-3">
<a href="{{ url_for('files') }}" class="btn btn-outline-primary w-100 h-100 d-flex flex-column justify-content-center align-items-center p-4">
<i class="bi bi-table fs-2 mb-2"></i>
<span>View Files</span>
</a>
</div>
<div class="col-6 mb-3">
<a href="{{ url_for('files', category='admin') }}" class="btn btn-outline-secondary w-100 h-100 d-flex flex-column justify-content-center align-items-center p-4">
<i class="bi bi-briefcase fs-2 mb-2"></i>
<span>Admin Files</span>
</a>
</div>
<div class="col-6 mb-3">
<a href="{{ url_for('files', category='accounting') }}" class="btn btn-outline-info w-100 h-100 d-flex flex-column justify-content-center align-items-center p-4">
<i class="bi bi-calculator fs-2 mb-2"></i>
<span>Accounting Files</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<!-- Recent Documents -->
<div class="col-md-6 mb-4">
<div class="card h-100">
<div class="card-header bg-info text-white">
<h5 class="mb-0"><i class="bi bi-clock-history"></i> Recent Documents</h5>
</div>
<div class="card-body p-0">
{% if recent_documents %}
<div class="list-group list-group-flush">
{% for doc in recent_documents %}
<a href="{{ url_for('view_document', document_id=doc.id) }}" class="list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-between align-items-center">
<div>
<div class="d-flex align-items-center">
{% if doc.file_type == 'pdf' %}
<i class="bi bi-file-earmark-pdf text-danger me-2"></i>
{% elif doc.file_type == 'document' %}
<i class="bi bi-file-earmark-word text-primary me-2"></i>
{% elif doc.file_type == 'spreadsheet' %}
<i class="bi bi-file-earmark-excel text-success me-2"></i>
{% elif doc.file_type == 'image' %}
<i class="bi bi-file-earmark-image text-info me-2"></i>
{% elif doc.file_type == 'video' %}
<i class="bi bi-file-earmark-play text-warning me-2"></i>
{% else %}
<i class="bi bi-file-earmark text-secondary me-2"></i>
{% endif %}
<h6 class="mb-0">{{ doc.custom_filename }}</h6>
</div>
<small class="text-muted">
<span class="badge bg-secondary">{{ doc.category|capitalize }}</span>
{{ (doc.file_size / 1024)|round(1) }} KB
</small>
</div>
<small class="text-muted">{{ doc.created_at.split(' ')[0] }}</small>
</div>
</a>
{% endfor %}
</div>
{% else %}
<div class="alert alert-info m-3">
<i class="bi bi-info-circle"></i> No documents found. Upload your first document to get started!
</div>
{% endif %}
</div>
{% if recent_documents %}
<div class="card-footer text-center">
<a href="{{ url_for('files') }}" class="btn btn-sm btn-outline-info">View All Documents</a>
</div>
{% endif %}
</div>
</div>
<!-- Analytics (Admin Only) -->
{% if session.role == 'admin' and analytics %}
<div class="col-md-6 mb-4">
<div class="card h-100">
<div class="card-header bg-warning text-dark">
<h5 class="mb-0"><i class="bi bi-graph-up"></i> Analytics Overview</h5>
</div>
<div class="card-body">
<h6>Most Viewed Documents</h6>
<div class="table-responsive">
<table class="table table-sm table-striped">
<thead>
<tr>
<th>Document</th>
<th>Views</th>
</tr>
</thead>
<tbody>
{% for doc in analytics %}
<tr>
<td>{{ doc.custom_filename }}</td>
<td>{{ doc.view_count }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% if user_activity %}
<h6 class="mt-4">Most Active Users</h6>
<div class="table-responsive">
<table class="table table-sm table-striped">
<thead>
<tr>
<th>User</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for user in user_activity %}
<tr>
<td>{{ user.username }}</td>
<td>{{ user.action_count }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>
</div>
</div>
{% endif %}
</div>
{% endblock %}