mirror of
https://github.com/wowlikon/LiB.git
synced 2026-02-04 04:31:09 +00:00
138 lines
7.8 KiB
HTML
138 lines
7.8 KiB
HTML
{% extends "base.html" %}{% block content %}
|
||
<div class="container mx-auto p-4 max-w-7xl">
|
||
<div class="mb-8">
|
||
<h1 class="text-2xl font-semibold text-gray-900 mb-1">Аналитика выдач и возвратов</h1>
|
||
<p class="text-sm text-gray-500">Статистика и графики по выдачам книг</p>
|
||
</div>
|
||
|
||
<div class="bg-white rounded-xl shadow-sm p-4 mb-6 border border-gray-100">
|
||
<div class="flex items-center gap-4">
|
||
<label class="text-sm font-medium text-gray-600">Период анализа:</label>
|
||
<select id="period-select" class="px-3 py-1.5 text-sm border border-gray-200 rounded-lg focus:outline-none focus:ring-1 focus:ring-gray-400 transition bg-white">
|
||
<option value="7" selected>7 дней</option>
|
||
<option value="30">30 дней</option>
|
||
<option value="90">90 дней</option>
|
||
<option value="180">180 дней</option>
|
||
<option value="365">365 дней</option>
|
||
</select>
|
||
<button id="refresh-btn" class="px-3 py-1.5 bg-gray-600 text-white rounded-lg hover:bg-gray-700 transition-colors text-sm font-medium">
|
||
Обновить
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-6">
|
||
<div class="bg-white rounded-xl shadow-sm p-5 border border-gray-100">
|
||
<div class="flex items-center justify-between">
|
||
<div>
|
||
<p class="text-xs text-gray-500 mb-1.5 uppercase tracking-wide">Всего выдач</p>
|
||
<p class="text-2xl font-semibold text-gray-900" id="total-loans">—</p>
|
||
</div>
|
||
<div class="w-10 h-10 bg-gray-100 rounded-full flex items-center justify-center">
|
||
<svg class="w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bg-white rounded-xl shadow-sm p-5 border border-gray-100">
|
||
<div class="flex items-center justify-between">
|
||
<div>
|
||
<p class="text-xs text-gray-500 mb-1.5 uppercase tracking-wide">Активные выдачи</p>
|
||
<p class="text-2xl font-semibold text-gray-900" id="active-loans">—</p>
|
||
</div>
|
||
<div class="w-10 h-10 bg-gray-100 rounded-full flex items-center justify-center">
|
||
<svg class="w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bg-white rounded-xl shadow-sm p-5 border border-gray-100">
|
||
<div class="flex items-center justify-between">
|
||
<div>
|
||
<p class="text-xs text-gray-500 mb-1.5 uppercase tracking-wide">Возвращено</p>
|
||
<p class="text-2xl font-semibold text-gray-900" id="returned-loans">—</p>
|
||
</div>
|
||
<div class="w-10 h-10 bg-gray-100 rounded-full flex items-center justify-center">
|
||
<svg class="w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 13l4 4L19 7"></path>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bg-white rounded-xl shadow-sm p-5 border border-gray-100">
|
||
<div class="flex items-center justify-between">
|
||
<div>
|
||
<p class="text-xs text-gray-500 mb-1.5 uppercase tracking-wide">Просрочено</p>
|
||
<p class="text-2xl font-semibold text-red-600" id="overdue-loans">—</p>
|
||
</div>
|
||
<div class="w-10 h-10 bg-red-50 rounded-full flex items-center justify-center">
|
||
<svg class="w-5 h-5 text-red-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bg-white rounded-xl shadow-sm p-5 border border-gray-100">
|
||
<div class="flex items-center justify-between">
|
||
<div>
|
||
<p class="text-xs text-gray-500 mb-1.5 uppercase tracking-wide">Забронировано</p>
|
||
<p class="text-2xl font-semibold text-gray-900" id="reserved-books">—</p>
|
||
</div>
|
||
<div class="w-10 h-10 bg-gray-100 rounded-full flex items-center justify-center">
|
||
<svg class="w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bg-white rounded-xl shadow-sm p-5 border border-gray-100">
|
||
<div class="flex items-center justify-between">
|
||
<div>
|
||
<p class="text-xs text-gray-500 mb-1.5 uppercase tracking-wide">Выдано сейчас</p>
|
||
<p class="text-2xl font-semibold text-gray-900" id="borrowed-books">—</p>
|
||
</div>
|
||
<div class="w-10 h-10 bg-gray-100 rounded-full flex items-center justify-center">
|
||
<svg class="w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6">
|
||
<div class="bg-white rounded-xl shadow-sm p-6 border border-gray-100">
|
||
<h2 class="text-base font-medium text-gray-700 mb-6">Выдачи по дням</h2>
|
||
<div class="h-64">
|
||
<canvas id="loans-chart"></canvas>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bg-white rounded-xl shadow-sm p-6 border border-gray-100">
|
||
<h2 class="text-base font-medium text-gray-700 mb-6">Возвраты по дням</h2>
|
||
<div class="h-64">
|
||
<canvas id="returns-chart"></canvas>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bg-white rounded-xl shadow-sm p-6 border border-gray-100">
|
||
<h2 class="text-base font-medium text-gray-700 mb-6">Топ книг по выдачам</h2>
|
||
<div id="top-books-container" class="space-y-2">
|
||
<div class="text-center text-gray-500 py-8">Загрузка данных...</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% endblock %} {% block extra_head %}
|
||
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
|
||
{% endblock %} {% block scripts %}
|
||
<script src="/static/page/analytics.js"></script>
|
||
{% endblock %}
|