2026-04-06 15:21:18 -04:00
|
|
|
|
{% extends "base.html" %}
|
|
|
|
|
|
{% block title %}Dashboard{% endblock %}
|
|
|
|
|
|
{% block content %}
|
|
|
|
|
|
<h1>Dashboard</h1>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="stats-grid">
|
|
|
|
|
|
<div class="stat-card">
|
|
|
|
|
|
<span class="number">{{ articles_this_week }}</span>
|
|
|
|
|
|
<span class="label">Articles This Week</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="stat-card">
|
|
|
|
|
|
<span class="number">{{ total_articles }}</span>
|
|
|
|
|
|
<span class="label">Total Cached</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="stat-card">
|
|
|
|
|
|
<span class="number">{{ total_issues }}</span>
|
|
|
|
|
|
<span class="label">Issues Published</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<hgroup>
|
|
|
|
|
|
<h3>Scheduler</h3>
|
|
|
|
|
|
<p>
|
2026-04-06 21:42:49 -04:00
|
|
|
|
Status: <strong>{{ "Enabled" if scheduler_status.running else "Disabled" }}</strong>
|
2026-04-06 15:21:18 -04:00
|
|
|
|
{% if scheduler_status.rss_fetch %}
|
2026-04-06 21:42:49 -04:00
|
|
|
|
· Next fetch: {{ scheduler_status.rss_fetch.next_run }}
|
|
|
|
|
|
· Interval: {{ scheduler_status.rss_fetch.interval_hours }}h
|
2026-04-06 15:21:18 -04:00
|
|
|
|
{% endif %}
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</hgroup>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="action-buttons">
|
|
|
|
|
|
<form method="post" action="/fetch-now">
|
|
|
|
|
|
<button type="submit">Fetch Now</button>
|
|
|
|
|
|
</form>
|
2026-04-06 17:41:21 -04:00
|
|
|
|
<a href="/articles" role="button" class="outline">View</a>
|
2026-04-06 18:40:04 -04:00
|
|
|
|
<a href="/publish" role="button" class="outline">Publish New</a>
|
2026-04-06 15:21:18 -04:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{% if latest_issue %}
|
|
|
|
|
|
<h3>Latest Issue</h3>
|
|
|
|
|
|
<p>
|
|
|
|
|
|
{{ latest_issue.week_start }} – {{ latest_issue.week_end }}
|
|
|
|
|
|
· <a href="/issues/{{ latest_issue.id }}/download">Download ePub</a>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
{% endblock %}
|