File size: 4,436 Bytes
6bcf797 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
{% extends "admin/base.html" %}
{% block title %}Дашборд{% endblock %}
{% block content %}
<div class="admin-header">
<h1><i class="fas fa-tachometer-alt"></i> Дашборд</h1>
</div>
<div class="row mb-4">
<div class="col-md-3">
<div class="stat-card bg-primary">
<div class="stat-icon">
<i class="fas fa-users"></i>
</div>
<div class="stat-info">
<h3>{{ users_count }}</h3>
<p>Пользователей</p>
</div>
</div>
</div>
<div class="col-md-3">
<div class="stat-card bg-success">
<div class="stat-icon">
<i class="fas fa-user-plus"></i>
</div>
<div class="stat-info">
<h3>{{ new_users }}</h3>
<p>Новых за 30 дней</p>
</div>
</div>
</div>
<div class="col-md-3">
<div class="stat-card bg-info">
<div class="stat-icon">
<i class="fas fa-chart-bar"></i>
</div>
<div class="stat-info">
<h3>{{ reports_count }}</h3>
<p>Анализов</p>
</div>
</div>
</div>
<div class="col-md-3">
<div class="stat-card bg-warning">
<div class="stat-icon">
<i class="fas fa-comments"></i>
</div>
<div class="stat-info">
<h3>{{ active_users }}</h3>
<p>Активных</p>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header">
<h5><i class="fas fa-chart-pie"></i> Распределение эмоций</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Эмоция</th>
<th>Количество</th>
<th>Процент</th>
</tr>
</thead>
<tbody>
{% for emotion, count in emotion_stats %}
<tr>
<td>{{ emotion_map.get(emotion, emotion) }}</td>
<td>{{ count }}</td>
<td>
<div class="progress">
<div class="progress-bar"
style="width: {{ (count / reports_count * 100) if reports_count > 0 else 0 }}%">
{{ (count / reports_count * 100)|round(1) if reports_count > 0 else 0 }}%
</div>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h5><i class="fas fa-user-chart"></i> Топ пользователей</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Пользователь</th>
<th>Анализов</th>
</tr>
</thead>
<tbody>
{% for user, count in user_activity %}
<tr>
<td>{{ user }}</td>
<td>{{ count }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endblock %} |