Amélioration des messages d'alerte et gestion des erreurs pour la configuration et l'arrêt de la caméra. Ajout de vérifications pour empêcher la suppression de projets en cours de capture.
This commit is contained in:
@@ -197,8 +197,10 @@ async function start_timelapse(id,frequency,nbimages){
|
|||||||
data: mydata
|
data: mydata
|
||||||
});
|
});
|
||||||
|
|
||||||
alert("data retrieval started:", response);
|
alert("Configuration de la caméra réussie");
|
||||||
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
alert("Erreur lors de la configuration de la caméra: " + error);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -216,9 +218,10 @@ async function stopCamera(id){
|
|||||||
data: mydata
|
data: mydata
|
||||||
});
|
});
|
||||||
|
|
||||||
alert("Camera stopped succesfully :", response);
|
alert("La caméra a été arrêtée avec succès");
|
||||||
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
alert("Error stopping the camera :", error);
|
alert("Erreur lors de l'arrêt de la caméra : " + error);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,9 @@ function formatStatusWithColor(status) {
|
|||||||
colorClass = "status-idle";
|
colorClass = "status-idle";
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
statusText = "En cours d'arrêt";
|
statusText = "En cours d\'arrêt";
|
||||||
colorClass = "status-stopping";
|
colorClass = "status-stopping";
|
||||||
|
break; // Ajout du break manquant ici
|
||||||
default:
|
default:
|
||||||
statusText = "Inconnu";
|
statusText = "Inconnu";
|
||||||
colorClass = "status-unknown";
|
colorClass = "status-unknown";
|
||||||
@@ -149,6 +150,14 @@ function setupCarousel(global_project_list) {
|
|||||||
deleteButton.addEventListener('click', (event) => {
|
deleteButton.addEventListener('click', (event) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
const projectName = project.name;
|
const projectName = project.name;
|
||||||
|
const projectStatus = parseInt(project.status);
|
||||||
|
|
||||||
|
// Vérifier si le projet est en cours de capture (statut 1) ou en cours d'arrêt (statut 3)
|
||||||
|
if (projectStatus === 1 || projectStatus === 3) {
|
||||||
|
alert(`Impossible de supprimer "${projectName}" car sa capture est ${projectStatus === 1 ? 'en cours' : 'en cours d\'arrêt'}.\nVeuillez d'abord arrêter la procédure de capture.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
document.getElementById('alertMessage').textContent = `Veux-tu vraiment supprimer le projet : ${projectName} ?`;
|
document.getElementById('alertMessage').textContent = `Veux-tu vraiment supprimer le projet : ${projectName} ?`;
|
||||||
document.getElementById('customAlert').style.display = 'block';
|
document.getElementById('customAlert').style.display = 'block';
|
||||||
|
|
||||||
|
|||||||
@@ -86,9 +86,13 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|||||||
const frequency = days * 1440 + hours * 60 + minutes;
|
const frequency = days * 1440 + hours * 60 + minutes;
|
||||||
if(frequency >= 3) {
|
if(frequency >= 3) {
|
||||||
const nbrimages = document.getElementById("totalImages").value;
|
const nbrimages = document.getElementById("totalImages").value;
|
||||||
start_timelapse(projectId, frequency, nbrimages).then(() => {
|
try {
|
||||||
|
// Attendre que la requête API soit terminée avant de recharger la page
|
||||||
|
await start_timelapse(projectId, frequency, nbrimages);
|
||||||
location.reload();
|
location.reload();
|
||||||
});
|
} catch (error) {
|
||||||
|
console.error("Erreur lors du démarrage du timelapse:", error);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
alert("La fréquence doit être supérieure à 3 minutes !");
|
alert("La fréquence doit être supérieure à 3 minutes !");
|
||||||
}
|
}
|
||||||
@@ -98,8 +102,13 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|||||||
document
|
document
|
||||||
.getElementById("stop-camera")
|
.getElementById("stop-camera")
|
||||||
.addEventListener("click", async () => {
|
.addEventListener("click", async () => {
|
||||||
stopCamera(projectId);
|
try {
|
||||||
|
// Attendre que la requête API soit terminée avant de recharger la page
|
||||||
|
await stopCamera(projectId);
|
||||||
location.reload();
|
location.reload();
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Erreur lors de l'arrêt de la caméra:", error);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -379,9 +388,14 @@ async function generateViewMetric(projectId) {
|
|||||||
if (measurements != 404) {
|
if (measurements != 404) {
|
||||||
let samples;
|
let samples;
|
||||||
if (videoId != -1) {
|
if (videoId != -1) {
|
||||||
|
try {
|
||||||
|
console.log("videoId", videoId);
|
||||||
currentVideoDatas = await getDataVideoFromApi(videoId);
|
currentVideoDatas = await getDataVideoFromApi(videoId);
|
||||||
samples = JSON.parse(currentVideoDatas[0]["measurement_ids"]);
|
console.log("currentVideoDatas", currentVideoDatas);
|
||||||
if (currentVideoDatas[0].status != 0) {
|
// Vérifier que currentVideoDatas existe et contient au moins un élément
|
||||||
|
if (currentVideoDatas) {
|
||||||
|
samples = JSON.parse(currentVideoDatas["measurement_ids"]);
|
||||||
|
if (currentVideoDatas.status != 0) {
|
||||||
videoPlaceHolder.innerHTML = `
|
videoPlaceHolder.innerHTML = `
|
||||||
<video class="video" controls>
|
<video class="video" controls>
|
||||||
<source src="${api_url}/videos/file/${videoId}" type="video/mp4">
|
<source src="${api_url}/videos/file/${videoId}" type="video/mp4">
|
||||||
@@ -397,6 +411,21 @@ async function generateViewMetric(projectId) {
|
|||||||
showConfirmationAlert(videoId);
|
showConfirmationAlert(videoId);
|
||||||
});
|
});
|
||||||
tempoMeasure = filterAndSortMeasurementsByNumber(measurements, samples);
|
tempoMeasure = filterAndSortMeasurementsByNumber(measurements, samples);
|
||||||
|
} else {
|
||||||
|
// Si aucune donnée n'est disponible pour cette vidéo
|
||||||
|
console.warn("Aucune donnée disponible pour la vidéo sélectionnée");
|
||||||
|
deletePlaceHolder.innerHTML = "";
|
||||||
|
videoPlaceHolder.innerHTML = `<h2>Données de vidéo non disponibles</h2>`;
|
||||||
|
samples = measurements.map((measurement) => measurement.id);
|
||||||
|
tempoMeasure = filterAndSortMeasurementsByIds(measurements, samples);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Erreur lors de la récupération des données vidéo:", error);
|
||||||
|
deletePlaceHolder.innerHTML = "";
|
||||||
|
videoPlaceHolder.innerHTML = `<h2>Erreur lors de la récupération des données vidéo</h2>`;
|
||||||
|
samples = measurements.map((measurement) => measurement.id);
|
||||||
|
tempoMeasure = filterAndSortMeasurementsByIds(measurements, samples);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
deletePlaceHolder.innerHTML = "";
|
deletePlaceHolder.innerHTML = "";
|
||||||
videoPlaceHolder.innerHTML = "";
|
videoPlaceHolder.innerHTML = "";
|
||||||
@@ -530,10 +559,19 @@ function filterAndSortMeasurementsByNumber(measurements, Numbers) {
|
|||||||
|
|
||||||
function checkVideoPath(videos, name) {
|
function checkVideoPath(videos, name) {
|
||||||
let res = true;
|
let res = true;
|
||||||
|
|
||||||
|
// Vérifier si videos est un tableau et s'il a une méthode forEach
|
||||||
|
if (videos && Array.isArray(videos) && videos.length > 0) {
|
||||||
videos.forEach((video) => {
|
videos.forEach((video) => {
|
||||||
const videoName = video.name;
|
const videoName = video.name;
|
||||||
if (videoName == name) res = false;
|
if (videoName == name) res = false;
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
// Si videos n'est pas un tableau valide, on considère qu'aucune vidéo n'existe
|
||||||
|
// et donc n'importe quel nom est valide
|
||||||
|
console.log("Aucune vidéo existante détectée");
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -579,6 +617,11 @@ async function populateTimelapseLogic(placeholder, id) {
|
|||||||
placeholder.innerHTML = `<button class="default-button" id="show-form-button-project">
|
placeholder.innerHTML = `<button class="default-button" id="show-form-button-project">
|
||||||
<span> Reconfigurer la caméra </span>
|
<span> Reconfigurer la caméra </span>
|
||||||
</button>`;
|
</button>`;
|
||||||
|
} else if (data.status == 3) {
|
||||||
|
// Affichage d'un message pour indiquer que l'arrêt est en cours
|
||||||
|
placeholder.innerHTML = `<button class="default-button" disabled>
|
||||||
|
<span> Arrêt en cours... </span>
|
||||||
|
</button>`;
|
||||||
} else {
|
} else {
|
||||||
placeholder.innerHTML = ``;
|
placeholder.innerHTML = ``;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user