|
|
|
|
@@ -85,10 +85,14 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
|
const minutes = document.getElementById("minutes").value;
|
|
|
|
|
const frequency = days * 1440 + hours * 60 + minutes;
|
|
|
|
|
if(frequency >= 3) {
|
|
|
|
|
const nbrimages = document.getElementById("totalImages").value;
|
|
|
|
|
start_timelapse(projectId, frequency, nbrimages).then(() => {
|
|
|
|
|
const nbrimages = document.getElementById("totalImages").value;
|
|
|
|
|
try {
|
|
|
|
|
// Attendre que la requête API soit terminée avant de recharger la page
|
|
|
|
|
await start_timelapse(projectId, frequency, nbrimages);
|
|
|
|
|
location.reload();
|
|
|
|
|
});
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Erreur lors du démarrage du timelapse:", error);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
alert("La fréquence doit être supérieure à 3 minutes !");
|
|
|
|
|
}
|
|
|
|
|
@@ -98,8 +102,13 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
|
document
|
|
|
|
|
.getElementById("stop-camera")
|
|
|
|
|
.addEventListener("click", async () => {
|
|
|
|
|
stopCamera(projectId);
|
|
|
|
|
location.reload();
|
|
|
|
|
try {
|
|
|
|
|
// Attendre que la requête API soit terminée avant de recharger la page
|
|
|
|
|
await stopCamera(projectId);
|
|
|
|
|
location.reload();
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Erreur lors de l'arrêt de la caméra:", error);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
@@ -379,24 +388,44 @@ async function generateViewMetric(projectId) {
|
|
|
|
|
if (measurements != 404) {
|
|
|
|
|
let samples;
|
|
|
|
|
if (videoId != -1) {
|
|
|
|
|
currentVideoDatas = await getDataVideoFromApi(videoId);
|
|
|
|
|
samples = JSON.parse(currentVideoDatas[0]["measurement_ids"]);
|
|
|
|
|
if (currentVideoDatas[0].status != 0) {
|
|
|
|
|
videoPlaceHolder.innerHTML = `
|
|
|
|
|
<video class="video" controls>
|
|
|
|
|
<source src="${api_url}/videos/file/${videoId}" type="video/mp4">
|
|
|
|
|
Your browser does not support the video tag.
|
|
|
|
|
</video>`;
|
|
|
|
|
} else {
|
|
|
|
|
videoPlaceHolder.innerHTML = `<h2>La vidéo n'a pas été rendered</h2>`;
|
|
|
|
|
try {
|
|
|
|
|
console.log("videoId", videoId);
|
|
|
|
|
currentVideoDatas = await getDataVideoFromApi(videoId);
|
|
|
|
|
console.log("currentVideoDatas", currentVideoDatas);
|
|
|
|
|
// 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 = `
|
|
|
|
|
<video class="video" controls>
|
|
|
|
|
<source src="${api_url}/videos/file/${videoId}" type="video/mp4">
|
|
|
|
|
Your browser does not support the video tag.
|
|
|
|
|
</video>`;
|
|
|
|
|
} else {
|
|
|
|
|
videoPlaceHolder.innerHTML = `<h2>La vidéo n'a pas été rendered</h2>`;
|
|
|
|
|
}
|
|
|
|
|
deletePlaceHolder.innerHTML = `
|
|
|
|
|
<button id="delete-video" class="default-delete-button" data-video-id="${videoId}">Delete Video</button>
|
|
|
|
|
`;
|
|
|
|
|
document.getElementById("delete-video").addEventListener("click", () => {
|
|
|
|
|
showConfirmationAlert(videoId);
|
|
|
|
|
});
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
deletePlaceHolder.innerHTML = `
|
|
|
|
|
<button id="delete-video" class="default-delete-button" data-video-id="${videoId}">Delete Video</button>
|
|
|
|
|
`;
|
|
|
|
|
document.getElementById("delete-video").addEventListener("click", () => {
|
|
|
|
|
showConfirmationAlert(videoId);
|
|
|
|
|
});
|
|
|
|
|
tempoMeasure = filterAndSortMeasurementsByNumber(measurements, samples);
|
|
|
|
|
} else {
|
|
|
|
|
deletePlaceHolder.innerHTML = "";
|
|
|
|
|
videoPlaceHolder.innerHTML = "";
|
|
|
|
|
@@ -530,10 +559,19 @@ function filterAndSortMeasurementsByNumber(measurements, Numbers) {
|
|
|
|
|
|
|
|
|
|
function checkVideoPath(videos, name) {
|
|
|
|
|
let res = true;
|
|
|
|
|
videos.forEach((video) => {
|
|
|
|
|
const videoName = video.name;
|
|
|
|
|
if (videoName == name) res = false;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 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) => {
|
|
|
|
|
const videoName = video.name;
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -579,6 +617,11 @@ async function populateTimelapseLogic(placeholder, id) {
|
|
|
|
|
placeholder.innerHTML = `<button class="default-button" id="show-form-button-project">
|
|
|
|
|
<span> Reconfigurer la caméra </span>
|
|
|
|
|
</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 {
|
|
|
|
|
placeholder.innerHTML = ``;
|
|
|
|
|
}
|
|
|
|
|
|