Serveur web local sans dépendance nouvelle (http.server, Jinja2, htmx et Leaflet fournis). Écrans : Mes voyages, nouveau voyage, un voyage (journées avec carte, rattachement des traces sans heures à un jour avec suggestion d'après les photos, sources avec choix de dossier, infos et récit, génération avec avancement et arrêt), réglages du site et vérification des outils. Chaîne : jours imposés ([dates_traces] dans voyage.toml), arrêt propre de la compression, suivi des étapes, état structuré (site.tableau_etat), titre du voyage repris de voyage.toml sur l'accueil. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mf2kATMtqVABHSYdxJMnim
64 lines
2.9 KiB
HTML
64 lines
2.9 KiB
HTML
{% extends "base.html" %}
|
|
{% block titre %}Mes voyages{% endblock %}
|
|
{% block contenu %}
|
|
{% if not site_existe %}
|
|
<div class="encart">
|
|
<p><strong>Ce dossier n'est pas encore un site RTG.</strong> Il n'y a pas de <code>site.toml</code> dans <code>{{ racine }}</code>.</p>
|
|
<p><button class="principal" hx-post="/site/creer">Créer le site dans ce dossier</button></p>
|
|
<p class="aide">Pour un autre dossier, relancez avec <code>rtg interface --racine CHEMIN</code>.</p>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="entete-page">
|
|
<h1>Mes voyages <span class="compte">{{ nb }}</span></h1>
|
|
<div class="actions">
|
|
<a class="bouton principal" href="/nouveau">+ Nouveau voyage</a>
|
|
<form hx-post="/tache/lancer" hx-target="#tache-zone">
|
|
<input type="hidden" name="quoi" value="accueil">
|
|
<button title="index.html, pages des rubriques et carte globale">Refaire l'accueil</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div id="tache-zone"></div>
|
|
|
|
{% for g, liste in groupes %}
|
|
<section>
|
|
<h2>{{ g }} <span class="compte">{{ liste|length }}</span></h2>
|
|
<table class="voyages">
|
|
<thead><tr><th>Voyage</th><th>Dates</th><th class="num">Jours</th><th>Vidéos web</th><th>Photos web</th><th>Pages</th><th></th></tr></thead>
|
|
<tbody>
|
|
{% for v in liste %}
|
|
<tr>
|
|
<td><a href="/voyage?v={{ v.chemin|url }}"><strong>{{ v.titre }}</strong></a>
|
|
{% if v.moto %}<div class="discret">{{ v.moto }}</div>{% endif %}</td>
|
|
<td>{{ periode(v.debut, v.fin) }}</td>
|
|
<td class="num">{{ v.jours or "—" }}</td>
|
|
<td>
|
|
{% if v.videos_sources %}
|
|
<span class="pastille {{ 'ok' if v.videos_faites == v.videos_sources else 'attention' }}">{{ v.videos_faites }}/{{ v.videos_sources }}</span>
|
|
{% elif v.videos_web %}
|
|
<span class="pastille neutre" title="Les rushs ne sont pas accessibles (disque débranché ?)">{{ v.videos_web }} · sources absentes</span>
|
|
{% else %}<span class="discret">—</span>{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if v.photos %}
|
|
<span class="pastille {{ 'ok' if v.photos_web >= v.photos else 'attention' }}">{{ v.photos_web }}/{{ v.photos }}</span>
|
|
{% else %}<span class="discret">—</span>{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if not v.genere %}<span class="pastille neutre">jamais générées</span>
|
|
{% elif v.pages_a_jour %}<span class="pastille ok">à jour</span>
|
|
{% else %}<span class="pastille attention">à refaire</span>{% endif %}
|
|
{% if v.a_verifier %}<span class="pastille attention" title="{{ v.a_verifier|join('\n') }}">⚠️ {{ v.a_verifier|length }}</span>{% endif %}
|
|
</td>
|
|
<td class="droite">{% if v.genere %}<a href="/site/{{ v.chemin }}/index.html" target="_blank">Voir ↗</a>{% endif %}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</section>
|
|
{% else %}
|
|
<p class="vide">Aucun voyage pour l'instant. Commencez par « Nouveau voyage ».</p>
|
|
{% endfor %}
|
|
{% endblock %}
|