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:
+41
-12
@@ -9,21 +9,28 @@
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-7">
|
||||
|
||||
<!-- Import 3mf -->
|
||||
<!-- Import 3mf (collapsible) -->
|
||||
<div class="card mb-3 border border-warning border-opacity-50">
|
||||
<div class="card-header py-3">
|
||||
<i class="bi bi-file-earmark-zip text-warning me-2"></i>Import Bambu Studio (.3mf)
|
||||
<span class="badge bg-warning text-dark ms-1">Optionnel</span>
|
||||
<div class="card-header py-2 d-flex align-items-center" role="button"
|
||||
id="bambuToggle" style="cursor:pointer;user-select:none"
|
||||
onclick="toggleBambu()">
|
||||
<i class="bi bi-file-earmark-zip text-warning me-2"></i>
|
||||
<span class="fw-semibold">Import Bambu Studio (.3mf)</span>
|
||||
<span class="badge bg-warning text-dark ms-2">Optionnel</span>
|
||||
<i class="bi bi-chevron-down ms-auto" id="bambuChevron"
|
||||
style="transition:transform .2s"></i>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<input type="file" id="file3mf" accept=".3mf" class="form-control" style="max-width:320px">
|
||||
<button type="button" class="btn btn-outline-warning" onclick="parse3mf()">
|
||||
<i class="bi bi-magic me-1"></i>Extraire
|
||||
</button>
|
||||
<span id="parseStatus" class="text-muted small"></span>
|
||||
<div class="collapse" id="bambuBody">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<input type="file" id="file3mf" accept=".3mf" class="form-control" style="max-width:320px">
|
||||
<button type="button" class="btn btn-outline-warning" onclick="parse3mf()">
|
||||
<i class="bi bi-magic me-1"></i>Extraire
|
||||
</button>
|
||||
<span id="parseStatus" class="text-muted small"></span>
|
||||
</div>
|
||||
<div class="form-text mt-1">Votre fichier .3mf depuis Bambu Studio pour remplir poids et durée automatiquement.</div>
|
||||
</div>
|
||||
<div class="form-text mt-1">Votre fichier .3mf depuis Bambu Studio pour remplir poids et duree automatiquement.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -320,6 +327,28 @@
|
||||
|
||||
{% block scripts %}
|
||||
<script>
|
||||
// ── Section Bambu collapsible ────────────────────────────────────────────────
|
||||
(function () {
|
||||
const KEY = 'bambu_open';
|
||||
const body = document.getElementById('bambuBody');
|
||||
const chevron = document.getElementById('bambuChevron');
|
||||
const isOpen = localStorage.getItem(KEY) !== 'false'; // open by default
|
||||
if (isOpen) {
|
||||
body.classList.add('show');
|
||||
chevron.style.transform = 'rotate(180deg)';
|
||||
}
|
||||
})();
|
||||
|
||||
function toggleBambu() {
|
||||
const KEY = 'bambu_open';
|
||||
const body = document.getElementById('bambuBody');
|
||||
const chevron = document.getElementById('bambuChevron');
|
||||
const opening = !body.classList.contains('show');
|
||||
body.classList.toggle('show', opening);
|
||||
chevron.style.transform = opening ? 'rotate(180deg)' : '';
|
||||
localStorage.setItem(KEY, opening);
|
||||
}
|
||||
|
||||
// ── 3MF parser avec sélecteur de plaque ──────────────────────────────────────
|
||||
let _3mfPlates = [];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user