{# The outcome of a push, or its progress while it runs. Included by the page and served on its own by /seek/sync/progress, which the bar polls until the result replaces it. #} {% set box = "border:1px solid var(--border, #ddd); border-radius:6px; padding:0.9rem 1rem; margin:1rem 0;" %} {# Many nodes of one entity type give the same reason; show each reason once with a count, rather than repeating it per node. #} {% macro reasons(items) %}{% set counts = {} %}{% for node_id, reason in items %}{% set _ = counts.update({reason: counts.get(reason, 0) + 1}) %}{% endfor %}{% for reason, n in counts.items() %}{{ reason }}{% if n > 1 %} (×{{ n }}){% endif %}{% if not loop.last %}; {% endif %}{% endfor %}{% endmacro %} {% if sync_job is defined and sync_job and not sync_job.done %}