102 lines
3.7 KiB
HTML
102 lines
3.7 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}Dashboard{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="dashboard-grid">
|
|
<div class="stat-card">
|
|
<div class="stat-number">{{ stats.feeds_totales }}</div>
|
|
<div class="stat-label">Feeds Totales</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<div class="stat-number">{{ stats.noticias_totales }}</div>
|
|
<div class="stat-label">Noticias Totales</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<div class="stat-number">{{ stats.feeds_caidos }}</div>
|
|
<div class="stat-label">Feeds Caídos</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6 mb-4">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3>Gestión de Feeds RSS</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p>Exporta tu lista de feeds RSS o restaura/importa desde un archivo CSV.</p>
|
|
<a href="{{ url_for('backup_feeds') }}" class="btn"><i class="fas fa-download"></i> Exportar Feeds</a>
|
|
<a href="{{ url_for('restore_feeds') }}" class="btn btn-info"><i class="fas fa-upload"></i> Importar Feeds</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6 mb-4">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3>Gestión de Fuentes URL</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p>Exporta tu lista de fuentes URL o restaura/importa desde un archivo CSV.</p>
|
|
<a href="{{ url_for('backup_urls') }}" class="btn"><i class="fas fa-download"></i> Exportar URLs</a>
|
|
<a href="{{ url_for('restore_urls') }}" class="btn btn-info"><i class="fas fa-upload"></i> Importar Fuentes URL</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3>Operaciones del Sistema</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p>Genera una copia de seguridad completa de todas tus fuentes y noticias en un archivo .zip.</p>
|
|
<a href="{{ url_for('backup_completo') }}" class="btn btn-secondary"><i class="fas fa-archive"></i> Backup Completo (.zip)</a>
|
|
</div>
|
|
</div>
|
|
|
|
{% if top_tags and top_tags|length > 0 %}
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3>Top tags (últimas 24h)</h3>
|
|
</div>
|
|
<div class="card-body" style="padding:0;">
|
|
<table style="width:100%; border-collapse: collapse;">
|
|
<thead>
|
|
<tr style="background-color: rgba(0,0,0,0.05);">
|
|
<th style="padding: 12px 15px; text-align: left;">Tag</th>
|
|
<th style="padding: 12px 15px; text-align: left;">Tipo</th>
|
|
<th style="padding: 12px 15px; text-align: right;">Apariciones</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for t in top_tags %}
|
|
<tr>
|
|
<td style="padding: 12px 15px; border-top: 1px solid var(--border-color);">
|
|
{{ t.valor }}
|
|
</td>
|
|
<td style="padding: 12px 15px; border-top: 1px solid var(--border-color); text-transform: capitalize;">
|
|
{{ t.tipo }}
|
|
</td>
|
|
<td style="padding: 12px 15px; border-top: 1px solid var(--border-color); text-align: right;">
|
|
{{ t.apariciones }}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3>Top tags (últimas 24h)</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p style="color: var(--text-color-light); margin: 0;">No hay tags para mostrar todavía.</p>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endblock %}
|
|
|