Refactor admin backup tab into subtabs for backup, restore, and help
Co-authored-by: mathieumoran1 <[email protected]>
This commit is contained in:
co-authored by
mathieumoran1
parent
eee37c7608
commit
d51372dc21
+101
-36
@@ -624,20 +624,47 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab-pane fade" id="admin-backup" role="tabpanel" aria-labelledby="admin-backup-tab">
|
<div class="tab-pane fade" id="admin-backup" role="tabpanel" aria-labelledby="admin-backup-tab">
|
||||||
<div class="row g-3">
|
<div class="card p-3">
|
||||||
<div class="col-12 col-xxl-6">
|
<div class="d-flex flex-wrap align-items-end justify-content-between gap-2">
|
||||||
<div class="card p-3">
|
<div>
|
||||||
<h4 class="mb-1">Backup</h4>
|
<h4 class="mb-1">Backup / Restore</h4>
|
||||||
<p class="text-muted mb-3">
|
<div class="text-muted">Sauvegarde et restauration de la base MongoDB.</div>
|
||||||
Crée une sauvegarde de la base MongoDB (format <code>.ndjson.gz</code>) et conserve-la sur le serveur.
|
</div>
|
||||||
</p>
|
</div>
|
||||||
|
|
||||||
<div class="d-flex flex-wrap gap-2">
|
<ul class="nav nav-pills admin-subtabs mt-3" id="adminBackupSubTabs" role="tablist">
|
||||||
<button type="button" id="db-backup-create" class="btn btn-warning">Créer une sauvegarde</button>
|
<li class="nav-item" role="presentation">
|
||||||
<button type="button" id="db-backup-refresh" class="btn btn-outline-primary">Rafraîchir la liste</button>
|
<button class="nav-link active" id="admin-backup-subtab-backup" data-bs-toggle="tab" data-bs-target="#admin-backup-pane-backup" type="button" role="tab" aria-controls="admin-backup-pane-backup" aria-selected="true">
|
||||||
|
Backup
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link" id="admin-backup-subtab-restore" data-bs-toggle="tab" data-bs-target="#admin-backup-pane-restore" type="button" role="tab" aria-controls="admin-backup-pane-restore" aria-selected="false">
|
||||||
|
Restore
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link" id="admin-backup-subtab-help" data-bs-toggle="tab" data-bs-target="#admin-backup-pane-help" type="button" role="tab" aria-controls="admin-backup-pane-help" aria-selected="false">
|
||||||
|
Aide
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="tab-content pt-3">
|
||||||
|
<!-- Backup -->
|
||||||
|
<div class="tab-pane fade show active" id="admin-backup-pane-backup" role="tabpanel" aria-labelledby="admin-backup-subtab-backup" tabindex="0">
|
||||||
|
<div class="d-flex flex-wrap align-items-end justify-content-between gap-2 mb-2">
|
||||||
|
<div>
|
||||||
|
<div class="fw-semibold">Sauvegardes</div>
|
||||||
|
<div class="text-muted small">Format <code>.ndjson.gz</code>, stocké sur le serveur.</div>
|
||||||
|
</div>
|
||||||
|
<div class="d-flex flex-wrap gap-2">
|
||||||
|
<button type="button" id="db-backup-create" class="btn btn-warning">Créer une sauvegarde</button>
|
||||||
|
<button type="button" id="db-backup-refresh" class="btn btn-outline-secondary">Rafraîchir</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="table-responsive mt-3">
|
<div class="table-responsive">
|
||||||
<table class="table table-sm align-middle mb-0">
|
<table class="table table-sm align-middle mb-0">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -653,36 +680,74 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 col-xxl-6">
|
<!-- Restore -->
|
||||||
<div class="card p-3">
|
<div class="tab-pane fade" id="admin-backup-pane-restore" role="tabpanel" aria-labelledby="admin-backup-subtab-restore" tabindex="0">
|
||||||
<h4 class="mb-1 text-danger">Restore</h4>
|
<div class="row g-3">
|
||||||
<p class="text-muted mb-3">
|
<div class="col-12 col-xxl-7">
|
||||||
Restaure une sauvegarde (fichier <code>.ndjson.gz</code>). Option recommandée: <strong>drop</strong> pour supprimer les collections avant import.
|
<div class="border rounded p-3 bg-light">
|
||||||
</p>
|
<div class="fw-semibold text-danger mb-1">Restaurer une sauvegarde</div>
|
||||||
|
<div class="text-muted small mb-3">
|
||||||
|
Restaure un fichier <code>.ndjson.gz</code>. L’option <strong>drop</strong> est recommandée.
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="alert alert-warning">
|
<div class="alert alert-warning mb-3">
|
||||||
La restauration peut <strong>écraser</strong> les données. Fais un backup juste avant si besoin.
|
La restauration peut <strong>écraser</strong> les données. Fais un backup juste avant si besoin.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="db-restore-file" class="form-label">Fichier de backup</label>
|
||||||
|
<input class="form-control" type="file" id="db-restore-file" accept=".gz,.ndjson.gz,application/gzip">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-check mb-3">
|
||||||
|
<input class="form-check-input" type="checkbox" id="db-restore-drop" checked>
|
||||||
|
<label class="form-check-label" for="db-restore-drop">
|
||||||
|
Drop les collections avant restore (recommandé)
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex flex-wrap justify-content-end gap-2">
|
||||||
|
<button type="button" id="db-restore-run" class="btn btn-danger">Restaurer</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="db-restore-result" class="small text-muted mt-3"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-xxl-5">
|
||||||
|
<div class="border rounded p-3 bg-white">
|
||||||
|
<div class="fw-semibold mb-2">Conseil</div>
|
||||||
|
<div class="text-muted">
|
||||||
|
Utilise <strong>drop</strong> sauf si tu sais exactement ce que tu fais (sinon risque de doublons/erreurs).
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="mb-3">
|
<!-- Help -->
|
||||||
<label for="db-restore-file" class="form-label">Fichier de backup</label>
|
<div class="tab-pane fade" id="admin-backup-pane-help" role="tabpanel" aria-labelledby="admin-backup-subtab-help" tabindex="0">
|
||||||
<input class="form-control" type="file" id="db-restore-file" accept=".gz,.ndjson.gz,application/gzip">
|
<div class="row g-3">
|
||||||
|
<div class="col-12 col-xxl-8">
|
||||||
|
<div class="border rounded p-3 bg-white">
|
||||||
|
<div class="fw-semibold mb-2">Fonctionnement</div>
|
||||||
|
<ul class="mb-0 text-muted">
|
||||||
|
<li><strong>Backup</strong>: crée un fichier <code>.ndjson.gz</code> (export MongoDB) et le garde sur le serveur.</li>
|
||||||
|
<li><strong>Télécharger</strong>: récupère le fichier localement (utile avant une manipulation risquée).</li>
|
||||||
|
<li><strong>Restore</strong>: importe le fichier. Avec <strong>drop</strong>, les collections restaurées sont d’abord supprimées.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-xxl-4">
|
||||||
|
<div class="border rounded p-3 bg-light">
|
||||||
|
<div class="fw-semibold mb-2">Check rapide</div>
|
||||||
|
<div class="text-muted">
|
||||||
|
Après restore, recharge la page et vérifie “Films”, “Checklist” et “Statistiques”.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-check mb-3">
|
|
||||||
<input class="form-check-input" type="checkbox" id="db-restore-drop" checked>
|
|
||||||
<label class="form-check-label" for="db-restore-drop">
|
|
||||||
Drop les collections avant restore (recommandé)
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="d-flex flex-wrap justify-content-end gap-2">
|
|
||||||
<button type="button" id="db-restore-run" class="btn btn-danger">Restaurer</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="db-restore-result" class="small text-muted mt-3"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user