|
{% 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 %} |