This commit is contained in:
julien 2025-06-19 14:15:07 +02:00
parent cbc5a703f8
commit 43e31c36d8

View File

@ -64,15 +64,18 @@
<script>
let es = null;
if (typeof es === 'undefined') {
let es = new EventSource("/api/download/stream");
} else {
es = new EventSource("/api/download/stream");
// Fonction d'initialisation de l'EventSource
function startEventSource() {
if (es !== null) {
es.close(); // ferme l'ancien si déjà existant
}
es = new EventSource("/api/download/stream");
es.addEventListener("jobs", async (e) => {
console.log("🧪 Event brut reçu es const:", e.data);
console.log("🧪 Event brut reçu :", e.data);
const tbody = document.getElementById("test");
if (!tbody) {
@ -85,9 +88,7 @@
try {
const response = await fetch(url, {
headers: {
'HX-Request': 'true'
}
headers: { 'HX-Request': 'true' }
});
if (!response.ok) {
@ -103,10 +104,17 @@
}
});
es.onerror = e => console.error("❌ Erreur EventSource", e);
es.onerror = e => {
console.error("❌ Erreur EventSource", e);
// (optionnel) tu peux tenter de relancer le EventSource ici si besoin
};
}
es.onerror = e => console.error("❌ Erreur EventSource", e);
async function postJobAction(url) {
// Lancer dès le chargement initial :
startEventSource();
// Fonction POST générique
async function postJobAction(url) {
try {
const res = await fetch(url, {
method: "POST",
@ -117,10 +125,10 @@
} catch (err) {
console.error("❌ Erreur action POST :", err);
}
}
}
// DELETE avec effet visuel
async function deleteJobAnimated(jobId) {
// Fonction DELETE avec effet visuel
async function deleteJobAnimated(jobId) {
const row = document.getElementById(`job-${jobId}`);
if (!row) return;
@ -132,7 +140,6 @@
if (!res.ok) throw new Error("Échec DELETE");
// Animation fade out
row.style.transition = "opacity 0.4s ease, height 0.4s ease";
row.style.opacity = "0";
row.style.height = "0px";
@ -140,10 +147,10 @@
} catch (err) {
console.error("❌ Erreur suppression :", err);
}
}
}
// Dispatcher global
document.addEventListener("click", function (e) {
// Dispatcher global des boutons
document.addEventListener("click", function (e) {
const btn = e.target.closest("button[data-action]");
if (!btn) return;
@ -164,5 +171,6 @@
deleteJobAnimated(jobId);
break;
}
});
});
</script>