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