|
|
|
|
@ -6,8 +6,8 @@
@@ -6,8 +6,8 @@
|
|
|
|
|
<h1>Tableau de bord</h1> |
|
|
|
|
</div> |
|
|
|
|
<div class="topbar-actions"> |
|
|
|
|
<button type="button" class="danger" id="btn-stop-audio">Arreter l'audio</button> |
|
|
|
|
<a href="{{ url_for('ui.logout') }}" class="ghost-link">Deconnexion</a> |
|
|
|
|
<button type="button" class="danger" id="btn-stop-audio">Arrêter l'audio</button> |
|
|
|
|
<a href="{{ url_for('ui.logout') }}" class="ghost-link">Déconnexion</a> |
|
|
|
|
</div> |
|
|
|
|
</header> |
|
|
|
|
|
|
|
|
|
@ -25,7 +25,7 @@
@@ -25,7 +25,7 @@
|
|
|
|
|
</label> |
|
|
|
|
<label> |
|
|
|
|
Nom |
|
|
|
|
<input type="text" name="name" id="trigger_name" placeholder="Bouton entree" required /> |
|
|
|
|
<input type="text" name="name" id="trigger_name" placeholder="Bouton entrée" required /> |
|
|
|
|
</label> |
|
|
|
|
<label> |
|
|
|
|
Fichier audio |
|
|
|
|
@ -46,7 +46,7 @@
@@ -46,7 +46,7 @@
|
|
|
|
|
</label> |
|
|
|
|
<div class="time-row"> |
|
|
|
|
<label> |
|
|
|
|
Debut (s) |
|
|
|
|
Début (s) |
|
|
|
|
<input type="number" step="0.1" min="0" name="start_seconds" id="start_seconds" value="0" /> |
|
|
|
|
</label> |
|
|
|
|
<label> |
|
|
|
|
@ -64,7 +64,7 @@
@@ -64,7 +64,7 @@
|
|
|
|
|
|
|
|
|
|
<section class="panel reveal delay-2"> |
|
|
|
|
<h2>Liste des triggers</h2> |
|
|
|
|
<p class="muted" id="no-triggers-msg"{% if triggers %} hidden{% endif %}>Aucun trigger configure.</p> |
|
|
|
|
<p class="muted" id="no-triggers-msg"{% if triggers %} hidden{% endif %}>Aucun trigger configuré.</p> |
|
|
|
|
<div class="table-wrap"{% if not triggers %} hidden{% endif %} id="triggers-table-wrap"> |
|
|
|
|
<table |
|
|
|
|
id="triggers-table" |
|
|
|
|
@ -77,7 +77,7 @@
@@ -77,7 +77,7 @@
|
|
|
|
|
<th>Nom</th> |
|
|
|
|
<th>Type</th> |
|
|
|
|
<th>Audio</th> |
|
|
|
|
<th>Debut</th> |
|
|
|
|
<th>Début</th> |
|
|
|
|
<th>Fin</th> |
|
|
|
|
<th>Volume</th> |
|
|
|
|
<th>Actions</th> |
|
|
|
|
@ -133,7 +133,7 @@
@@ -133,7 +133,7 @@
|
|
|
|
|
|
|
|
|
|
<form method="post" action="{{ url_for('ui.upload_audio') }}" enctype="multipart/form-data" class="upload-row" id="upload-audio-form"> |
|
|
|
|
<input type="file" name="audio_file" id="audio_file_input" accept=".mp3,.wav,.ogg,.flac,.aac,.m4a" required /> |
|
|
|
|
<button type="submit">Televerser</button> |
|
|
|
|
<button type="submit">Téléverser</button> |
|
|
|
|
</form> |
|
|
|
|
|
|
|
|
|
{% if audio_files %} |
|
|
|
|
@ -150,7 +150,7 @@
@@ -150,7 +150,7 @@
|
|
|
|
|
> |
|
|
|
|
Lire |
|
|
|
|
</button> |
|
|
|
|
<a href="{{ url_for('ui.download_audio', filename=filename) }}" class="small-button">Telecharger</a> |
|
|
|
|
<a href="{{ url_for('ui.download_audio', filename=filename) }}" class="small-button">Télécharger</a> |
|
|
|
|
<form method="post" action="{{ url_for('ui.delete_audio') }}" class="inline-form js-delete-audio-form" data-filename="{{ filename }}"> |
|
|
|
|
<input type="hidden" name="filename" value="{{ filename }}" /> |
|
|
|
|
<button type="submit" class="small danger">Supprimer</button> |
|
|
|
|
@ -189,8 +189,8 @@
@@ -189,8 +189,8 @@
|
|
|
|
|
|
|
|
|
|
<div class="modal-backdrop" id="duplicate-name-modal" aria-hidden="true"> |
|
|
|
|
<div class="modal-card" role="dialog" aria-modal="true" aria-labelledby="duplicate-name-title"> |
|
|
|
|
<h3 id="duplicate-name-title">Nom deja utilise</h3> |
|
|
|
|
<p id="duplicate-name-message">Ce nom existe deja dans les fichiers enregistres.</p> |
|
|
|
|
<h3 id="duplicate-name-title">Nom déjà utilisé</h3> |
|
|
|
|
<p id="duplicate-name-message">Ce nom existe déjà dans les fichiers enregistrés.</p> |
|
|
|
|
<div class="modal-actions"> |
|
|
|
|
<button type="button" class="ghost-link" id="duplicate-name-close">Fermer</button> |
|
|
|
|
</div> |
|
|
|
|
@ -302,8 +302,8 @@
@@ -302,8 +302,8 @@
|
|
|
|
|
body: body.toString(), |
|
|
|
|
}) |
|
|
|
|
.then((res) => res.json()) |
|
|
|
|
.then((d) => { showFlash(d.ok ? (d.message || "Trigger demarre.") : (d.error || "Echec."), d.ok ? "success" : "error"); }) |
|
|
|
|
.catch(() => { showFlash("Erreur reseau lors du lancement.", "error"); }) |
|
|
|
|
.then((d) => { showFlash(d.ok ? (d.message || "Trigger démarré.") : (d.error || "Échec."), d.ok ? "success" : "error"); }) |
|
|
|
|
.catch(() => { showFlash("Erreur réseau lors du lancement.", "error"); }) |
|
|
|
|
.finally(() => { playBtn.disabled = false; }); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
@ -326,13 +326,13 @@
@@ -326,13 +326,13 @@
|
|
|
|
|
.then((res) => res.json()) |
|
|
|
|
.then((data) => { |
|
|
|
|
if (data.ok) { |
|
|
|
|
showFlash(data.message || "Audio arrete.", "info"); |
|
|
|
|
showFlash(data.message || "Audio arrêté.", "info"); |
|
|
|
|
} else { |
|
|
|
|
showFlash(data.error || "Echec de l'arret audio.", "error"); |
|
|
|
|
showFlash(data.error || "Échec de l'arrêt audio.", "error"); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.catch(() => { |
|
|
|
|
showFlash("Erreur reseau lors de l'arret audio.", "error"); |
|
|
|
|
showFlash("Erreur réseau lors de l'arrêt audio.", "error"); |
|
|
|
|
}) |
|
|
|
|
.finally(() => { |
|
|
|
|
btn.disabled = false; |
|
|
|
|
@ -357,13 +357,13 @@
@@ -357,13 +357,13 @@
|
|
|
|
|
.then((res) => res.json()) |
|
|
|
|
.then((data) => { |
|
|
|
|
if (data.ok) { |
|
|
|
|
showFlash(data.message || "Trigger demarre.", "success"); |
|
|
|
|
showFlash(data.message || "Trigger démarré.", "success"); |
|
|
|
|
} else { |
|
|
|
|
showFlash(data.error || "Echec du lancement.", "error"); |
|
|
|
|
showFlash(data.error || "Échec du lancement.", "error"); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.catch(() => { |
|
|
|
|
showFlash("Erreur reseau lors du lancement.", "error"); |
|
|
|
|
showFlash("Erreur réseau lors du lancement.", "error"); |
|
|
|
|
}) |
|
|
|
|
.finally(() => { |
|
|
|
|
btn.disabled = false; |
|
|
|
|
@ -402,14 +402,14 @@
@@ -402,14 +402,14 @@
|
|
|
|
|
.then((res) => res.json()) |
|
|
|
|
.then((data) => { |
|
|
|
|
if (data.ok) { |
|
|
|
|
showFlash(data.message || "Trigger enregistre.", "success"); |
|
|
|
|
showFlash(data.message || "Trigger enregistré.", "success"); |
|
|
|
|
upsertTriggerRow(data); |
|
|
|
|
} else { |
|
|
|
|
showFlash(data.error || "Echec de l'enregistrement.", "error"); |
|
|
|
|
showFlash(data.error || "Échec de l'enregistrement.", "error"); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.catch(() => { |
|
|
|
|
showFlash("Erreur reseau lors de l'enregistrement.", "error"); |
|
|
|
|
showFlash("Erreur réseau lors de l'enregistrement.", "error"); |
|
|
|
|
}) |
|
|
|
|
.finally(() => { |
|
|
|
|
if (submitBtn) submitBtn.disabled = false; |
|
|
|
|
@ -642,13 +642,13 @@
@@ -642,13 +642,13 @@
|
|
|
|
|
if (tableWrap) tableWrap.hidden = true; |
|
|
|
|
if (noMsg) noMsg.hidden = false; |
|
|
|
|
} |
|
|
|
|
showFlash(data.message || "Trigger supprime.", "success"); |
|
|
|
|
showFlash(data.message || "Trigger supprimé.", "success"); |
|
|
|
|
} else { |
|
|
|
|
showFlash(data.error || "Echec de la suppression.", "error"); |
|
|
|
|
showFlash(data.error || "Échec de la suppression.", "error"); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.catch(() => { |
|
|
|
|
showFlash("Erreur reseau lors de la suppression.", "error"); |
|
|
|
|
showFlash("Erreur réseau lors de la suppression.", "error"); |
|
|
|
|
}) |
|
|
|
|
.finally(() => { |
|
|
|
|
confirmBtn.disabled = false; |
|
|
|
|
|