feat: viewer local upload, Bambu collapse, planning done/fail, stats waste, portal link in jobs, sidebar collapsible, settings layout fix
Deploy via Portainer / deploy (push) Successful in 0s
Deploy via Portainer / deploy (push) Successful in 0s
This commit is contained in:
+40
-1
@@ -60,6 +60,9 @@
|
||||
<button class="active" onclick="showTab('planning', this)">
|
||||
<i class="bi bi-calendar3 d-block mb-1"></i>Planning
|
||||
</button>
|
||||
<button onclick="showTab('done', this)">
|
||||
<i class="bi bi-check-circle d-block mb-1"></i>Terminé
|
||||
</button>
|
||||
<button onclick="showTab('block', this)">
|
||||
<i class="bi bi-calendar-x d-block mb-1"></i>Indispo
|
||||
</button>
|
||||
@@ -176,6 +179,36 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Tab : Terminé ─────────────────────────────────── -->
|
||||
<div class="tab-pane" id="tab-done">
|
||||
<div class="section-title">Marquer une impression comme terminée</div>
|
||||
<div class="form-card">
|
||||
<form method="POST">
|
||||
<input type="hidden" name="action" value="done">
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Créneau terminé</label>
|
||||
<select name="slot_id" class="form-select" required>
|
||||
<option value="">Choisir…</option>
|
||||
{% for s in upcoming %}
|
||||
<option value="{{ s.id }}">
|
||||
{{ s.job_name }} — {{ s.planned_start[:16].replace('T',' ') }} [{{ s.printer_name }}]
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Poids réel consommé (g) <small class="text-muted fw-normal">optionnel</small></label>
|
||||
<input type="number" name="actual_g" class="form-control" step="0.1" min="0"
|
||||
placeholder="ex: 48.5 — pour déduire du stock">
|
||||
<div class="form-text">Laissez vide si vous ne connaissez pas le poids exact.</div>
|
||||
</div>
|
||||
<button type="submit" class="btn w-100" style="background:#22c55e;color:#fff">
|
||||
<i class="bi bi-check-circle me-1"></i>Marquer comme terminé
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Tab : Échec ────────────────────────────────────── -->
|
||||
<div class="tab-pane" id="tab-fail">
|
||||
<div class="section-title">Signaler un échec d'impression</div>
|
||||
@@ -195,9 +228,15 @@
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Description du problème</label>
|
||||
<textarea name="failure_note" class="form-control" rows="3"
|
||||
<textarea name="failure_note" class="form-control" rows="2"
|
||||
placeholder="Détachement, sous-extrusion, bourrage…"></textarea>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Filament gaspillé (g) <small class="text-muted fw-normal">optionnel</small></label>
|
||||
<input type="number" name="wasted_g" class="form-control" step="0.1" min="0"
|
||||
placeholder="Poids plateau si vide">
|
||||
<div class="form-text">Si vide, le poids du plateau entier est déduit du stock.</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-danger w-100">
|
||||
<i class="bi bi-exclamation-triangle me-1"></i>Signaler l'échec
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user