fix js
This commit is contained in:
parent
cbc5a703f8
commit
43e31c36d8
@ -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.addEventListener("jobs", async (e) => {
|
||||
console.log("🧪 Event brut reçu es const:", e.data);
|
||||
es = new EventSource("/api/download/stream");
|
||||
|
||||
es.addEventListener("jobs", async (e) => {
|
||||
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,66 +104,73 @@
|
||||
}
|
||||
});
|
||||
|
||||
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) {
|
||||
try {
|
||||
const res = await fetch(url, {
|
||||
method: "POST",
|
||||
headers: { "HX-Request": "true" }
|
||||
});
|
||||
if (!res.ok) throw new Error("Échec POST : " + res.status);
|
||||
console.log("✅ Action POST réussie :", url);
|
||||
} catch (err) {
|
||||
console.error("❌ Erreur action POST :", err);
|
||||
}
|
||||
// Lancer dès le chargement initial :
|
||||
startEventSource();
|
||||
|
||||
// Fonction POST générique
|
||||
async function postJobAction(url) {
|
||||
try {
|
||||
const res = await fetch(url, {
|
||||
method: "POST",
|
||||
headers: { "HX-Request": "true" }
|
||||
});
|
||||
if (!res.ok) throw new Error("Échec POST : " + res.status);
|
||||
console.log("✅ Action POST réussie :", url);
|
||||
} catch (err) {
|
||||
console.error("❌ Erreur action POST :", err);
|
||||
}
|
||||
}
|
||||
|
||||
// DELETE avec effet visuel
|
||||
async function deleteJobAnimated(jobId) {
|
||||
const row = document.getElementById(`job-${jobId}`);
|
||||
if (!row) return;
|
||||
// Fonction DELETE avec effet visuel
|
||||
async function deleteJobAnimated(jobId) {
|
||||
const row = document.getElementById(`job-${jobId}`);
|
||||
if (!row) return;
|
||||
|
||||
try {
|
||||
const res = await fetch(`/api/download/delete/${jobId}`, {
|
||||
method: "DELETE",
|
||||
headers: { "HX-Request": "true" }
|
||||
});
|
||||
try {
|
||||
const res = await fetch(`/api/download/delete/${jobId}`, {
|
||||
method: "DELETE",
|
||||
headers: { "HX-Request": "true" }
|
||||
});
|
||||
|
||||
if (!res.ok) throw new Error("Échec DELETE");
|
||||
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";
|
||||
setTimeout(() => row.remove(), 400);
|
||||
} catch (err) {
|
||||
console.error("❌ Erreur suppression :", err);
|
||||
}
|
||||
row.style.transition = "opacity 0.4s ease, height 0.4s ease";
|
||||
row.style.opacity = "0";
|
||||
row.style.height = "0px";
|
||||
setTimeout(() => row.remove(), 400);
|
||||
} catch (err) {
|
||||
console.error("❌ Erreur suppression :", err);
|
||||
}
|
||||
}
|
||||
|
||||
// Dispatcher global
|
||||
document.addEventListener("click", function (e) {
|
||||
const btn = e.target.closest("button[data-action]");
|
||||
if (!btn) return;
|
||||
// Dispatcher global des boutons
|
||||
document.addEventListener("click", function (e) {
|
||||
const btn = e.target.closest("button[data-action]");
|
||||
if (!btn) return;
|
||||
|
||||
const action = btn.dataset.action;
|
||||
const jobId = btn.dataset.id;
|
||||
const action = btn.dataset.action;
|
||||
const jobId = btn.dataset.id;
|
||||
|
||||
switch (action) {
|
||||
case "start-job":
|
||||
postJobAction(`/api/download/start/${jobId}`);
|
||||
break;
|
||||
case "pause-job":
|
||||
postJobAction(`/api/download/pause/${jobId}`);
|
||||
break;
|
||||
case "resume-job":
|
||||
postJobAction(`/api/download/resume/${jobId}`);
|
||||
break;
|
||||
case "delete-job":
|
||||
deleteJobAnimated(jobId);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
switch (action) {
|
||||
case "start-job":
|
||||
postJobAction(`/api/download/start/${jobId}`);
|
||||
break;
|
||||
case "pause-job":
|
||||
postJobAction(`/api/download/pause/${jobId}`);
|
||||
break;
|
||||
case "resume-job":
|
||||
postJobAction(`/api/download/resume/${jobId}`);
|
||||
break;
|
||||
case "delete-job":
|
||||
deleteJobAnimated(jobId);
|
||||
break;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
Loading…
Reference in New Issue
Block a user