Rotation automatique entre projets actifs (30 s), compteurs des six colonnes, cartes en vol avec âge, fermées du jour (journal), horloge; rafraîchissement en direct par le flux SSE (rechargement, aucune interaction à protéger) + filet de sécurité à 5 min. ?repo= fige un projet. Lien de navigation ajouté partout.
71 lines
2.7 KiB
HTML
71 lines
2.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Kanbante — Wallboard</title>
|
|
<link rel="stylesheet" href="/static/css/style.css">
|
|
</head>
|
|
<body class="wall-body">
|
|
{% if slides %}
|
|
<div class="wall-stage" id="wall-stage">
|
|
{% for slide in slides %}
|
|
<section class="wall-slide{% if loop.first %} active{% endif %}">
|
|
<header class="wall-head">
|
|
<div>
|
|
<div class="wall-kicker">📂 Projet</div>
|
|
<h1 class="wall-project">{{ slide.full_name }}</h1>
|
|
</div>
|
|
<div class="wall-clock">
|
|
<div class="wall-time" data-clock>--:--</div>
|
|
<div class="wall-date" data-date></div>
|
|
{% if not single and slides|length > 1 %}
|
|
<div class="wall-rotation">{{ loop.index }} / {{ slides|length }}</div>
|
|
{% endif %}
|
|
</div>
|
|
</header>
|
|
|
|
<div class="wall-counts">
|
|
{% for col in columns %}
|
|
<div class="wall-count" style="--col: {{ column_colors[col] }}">
|
|
<span class="wall-count-n">{{ slide.counts[col] }}</span>
|
|
<span class="wall-count-l">{{ column_labels[col] }}</span>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
{% if slide.cards %}
|
|
<ul class="wall-cards">
|
|
{% for card in slide.cards %}
|
|
<li class="wall-card">
|
|
<span class="wall-card-col" style="--col: {{ column_colors[card.column] }}">{{ card.column_label }}</span>
|
|
<span class="wall-card-title">#{{ card.number }} · {{ card.title }}</span>
|
|
{% if card.age_days is not none and card.age_days >= 1 %}
|
|
<span class="wall-card-age{% if card.aging %} hot{% endif %}">⏳ {{ card.age_days }} j</span>
|
|
{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% else %}
|
|
<p class="wall-idle">🌿 Rien en vol pour le moment — tout est au Backlog ou terminé.</p>
|
|
{% endif %}
|
|
|
|
<footer class="wall-foot">
|
|
<span>✅ Fermées aujourd'hui : <strong>{{ slide.closed_today }}</strong></span>
|
|
<span>📋 Ouvertes : <strong>{{ slide.open_total }}</strong></span>
|
|
<span class="wall-live">● EN DIRECT</span>
|
|
</footer>
|
|
</section>
|
|
{% endfor %}
|
|
</div>
|
|
{% else %}
|
|
<div class="wall-empty">
|
|
<h1>🖥️ Wallboard</h1>
|
|
<p>Aucun projet actif à afficher{% if single %} pour ce dépôt{% endif %}.</p>
|
|
<p class="wall-empty-hint">Astuce : <code>/wall?repo=Proprietaire/depot</code> fige un seul projet.</p>
|
|
</div>
|
|
{% endif %}
|
|
<script src="/static/js/wall.js"></script>
|
|
</body>
|
|
</html>
|