{% extends "base.html" %} {% block title %}Dashboard — pngx-controller{% endblock %} {% block content %}

Dashboard

{% if progress.running %} {{ progress.phase }} {% if progress.docs_total > 0 %} — {{ progress.docs_done }} / {{ progress.docs_total }} documents {% else %} {% endif %} {% endif %}
{% if last_run %}
Last sync run: {% if last_run.finished_at %} finished {{ last_run.finished_at.strftime('%Y-%m-%d %H:%M:%S') }} UTC — {{ last_run.docs_synced }} synced, {{ last_run.docs_failed }} failed {% if last_run.timed_out %}timed out{% endif %} {% else %} running… {% endif %}

Triggered by: {{ last_run.triggered_by }} — Run #{{ last_run.id }}

{% endif %}

Replicas

{% if replica_rows %}
{% for row in replica_rows %} {% endfor %}
Name URL Status Lag Last run Actions
{{ row.replica.name }} {{ row.replica.url }} {{ row.status }} {% if row.replica.suspended_at %}
{{ row.replica.consecutive_failures }} failures {% endif %}
{{ row.lag }} {% if row.last_run %} ✓ {{ row.last_run.docs_synced }} {% if row.last_run.docs_failed %} · ✗ {{ row.last_run.docs_failed }}{% endif %} {% else %} never {% endif %} Details {% if row.replica.suspended_at %} {% endif %}
{% else %}

No replicas configured. Add one →

{% endif %} {% endblock %}