diff --git a/web/components/visualization/results-section.js b/web/components/visualization/results-section.js index c01de45f9c2c99dfb9ef2d471aa4f14fdfe3a707..e1d76348f9a0d19c9467f3335a158e395174bb93 100644 --- a/web/components/visualization/results-section.js +++ b/web/components/visualization/results-section.js @@ -133,36 +133,7 @@ class ResultComponent { }); } - document.addEventListener( - "input", - function __listener(event) { - if (event.target.id == "select-areas") { - if (event.target.value != 0) { - let area = resultHandler.results.areasResults.find( - (area) => area.ID == event.target.value - ); - - if (resultHandler.zone === "areas") - resultHandler.resultsZone.displayZoneResults(area); - else if (resultHandler.zone === "sections") { - resultHandler.refreshSections(area); - resultHandler.resultsZone.displayZoneResults(area.Sections[0]); - } - } - } else if (event.target.id == "select-sections") { - let area = resultHandler.results.areasResults.find( - (area) => area.ID == document.getElementById("select-areas").value - ); - let section = area.Sections.find( - (section) => section.ID == event.target.value - ); - resultHandler.resultsZone.displayZoneResults(section); - } - }, - false - ); - - this.interval = setInterval(async () => { + window.intervalRefreshResults = setInterval(async () => { this.calculateResults(); this.resultsZone.displayResults(); this.resultsGeneral.displayRoundResults(); @@ -187,18 +158,4 @@ class ResultComponent { ); } } - - refreshSections(area) { - let selectSections = document.getElementById("select-sections"); - selectSections.parentNode.style.display = "block"; - for (let i = selectSections.options.length - 1; i >= 0; i--) { - selectSections.remove(i); - } - for (let i in area.Sections) { - let el = document.createElement("option"); - el.textContent = area.Sections[i].Name; - el.value = area.Sections[i].ID; - selectSections.appendChild(el); - } - } } diff --git a/web/components/visualization/results-zone.js b/web/components/visualization/results-zone.js index 53780d5ef447727e2a61c40b6ee4237a6a145b12..6bed9bb668d9073d2367935a5c3efb601b308a81 100644 --- a/web/components/visualization/results-zone.js +++ b/web/components/visualization/results-zone.js @@ -93,6 +93,7 @@ class ResultZoneComponent { </div> `; this.handleDom(); + this.scroller = Scroller.scrollInit("news-flow"); } resultFlowTemplate(zone) { @@ -108,7 +109,7 @@ class ResultZoneComponent { html.addEventListener("click", async () => { if (this.parent.zone == "sections") { let area = await this.AreaModel.getArea(zone.AreaID); - this.parent.refreshSections(area); + this.refreshSections(area); document.getElementById("select-sections").value = zone.ID; document.getElementById("select-areas").value = zone.AreaID; } else { @@ -148,25 +149,29 @@ class ResultZoneComponent { function __listener(event) { if (event.target.id == "select-areas") { if (event.target.value != 0) { - let area = resultHandler.results.areasResults.find( + let area = resultHandler.parent.results.areasResults.find( (area) => area.ID == event.target.value ); - if (resultHandler.zone === "areas") + if (resultHandler.parent.zone === "areas") { resultHandler.displayZoneResults(area); - else if (resultHandler.zone === "sections") { + resultHandler.areaDisplayed = area; + } else if (resultHandler.parent.zone === "sections") { resultHandler.refreshSections(area); resultHandler.displayZoneResults(area.Sections[0]); + resultHandler.areaDisplayed = area; + resultHandler.sectionDisplayed = area.Sections[0]; } } } else if (event.target.id == "select-sections") { - let area = resultHandler.results.areasResults.find( + let area = resultHandler.parent.results.areasResults.find( (area) => area.ID == document.getElementById("select-areas").value ); let section = area.Sections.find( (section) => section.ID == event.target.value ); resultHandler.displayZoneResults(section); + resultHandler.sectionDisplayed = section; } }, false @@ -229,18 +234,21 @@ class ResultZoneComponent { this.handleDom(); } - displayResults() { + async displayResults() { document.getElementById("news-flow").innerHTML = ""; if (this.parent.zone === "areas") { - this.displayFlowAreas(); + await this.displayFlowAreas(); this.displayAreasResults(); } else if (this.parent.zone === "sections") { - this.displayFlowSections(); + await this.displayFlowSections(); this.displaySectionsResults(); } - let scroller = Scroller.scrollInit("news-flow"); + + if (document.getElementById("auto-scroll").checked) { + this.scroller.scrollDiv(); + } document.getElementById("auto-scroll").addEventListener("change", () => { - scroller.switch(); + this.scroller.switch(); }); } @@ -319,7 +327,9 @@ class ResultZoneComponent { selectAreas.appendChild(el); }); - this.displayZoneResults(this.parent.results.areasResults[0]); + if (this.parent.zone == "areas" && this.areaDisplayed != undefined) { + document.getElementById("select-areas").value = this.areaDisplayed.ID; + } else this.displayZoneResults(this.parent.results.areasResults[0]); } displaySectionsResults() { @@ -338,9 +348,17 @@ class ResultZoneComponent { selectAreas.appendChild(el); }); - this.parent.refreshSections(this.parent.results.areasResults[0]); + this.refreshSections(this.parent.results.areasResults[0]); - this.displayZoneResults(this.parent.results.areasResults[0].Sections[0]); + if (this.parent.zone == "sections" && this.sectionDisplayed != undefined) { + document.getElementById("select-areas").value = this.areaDisplayed.ID; + this.refreshSections(this.areaDisplayed); + document.getElementById( + "select-sections" + ).value = this.sectionDisplayed.ID; + } else { + this.displayZoneResults(this.parent.results.areasResults[0].Sections[0]); + } } async displayZoneResults(zone) { @@ -348,19 +366,22 @@ class ResultZoneComponent { if (zone.status == "no_results") { document.getElementById( "zone-results" - ).innerHTML = Common.warningMessage("Pas de résultats", + ).innerHTML = Common.warningMessage( + "Pas de résultats", "Aucun résultats n'ont étaient saisis sur cette zone" ); } else if (zone.status == "incompleted") { document.getElementById( "zone-results" - ).innerHTML = Common.warningMessage("Pas complets", + ).innerHTML = Common.warningMessage( + "Pas complets", "Les résultats pour cette zone ne sont pas complets" ); } else if (zone.status == "not validated") { document.getElementById( "zone-results" - ).innerHTML = Common.warningMessage("Non validé", + ).innerHTML = Common.warningMessage( + "Non validé", "Les résultats pour cette zone n'ont pas étaient validés" ); } @@ -459,4 +480,18 @@ class ResultZoneComponent { } } } + + refreshSections(area) { + let selectSections = document.getElementById("select-sections"); + selectSections.parentNode.style.display = "block"; + for (let i = selectSections.options.length - 1; i >= 0; i--) { + selectSections.remove(i); + } + for (let i in area.Sections) { + let el = document.createElement("option"); + el.textContent = area.Sections[i].Name; + el.value = area.Sections[i].ID; + selectSections.appendChild(el); + } + } } diff --git a/web/main.js b/web/main.js index 80c8c44e223a6f928e679ae58ae029517d5b9efb..6cb579d0c7caced44ac2db8293fd566359a35d21 100644 --- a/web/main.js +++ b/web/main.js @@ -9,7 +9,6 @@ import { AnimateCSS } from "/services/common/common.js"; const mountPoint = document.getElementById("main"); const spinner = document.getElementById("spinner"); -let sysInfoInterval; document.addEventListener("DOMContentLoaded", function () { Navbar.mount("navbar"); @@ -18,7 +17,7 @@ document.addEventListener("DOMContentLoaded", function () { }); async function navigate() { - clearInterval(sysInfoInterval); + window.clearInterval(window.intervalRefreshResults); switch (location.hash) { case "#home": load(mountPoint, async function () { diff --git a/web/services/common/scroller.js b/web/services/common/scroller.js index 7274c566fcf406bead57ea778ed397d5130088e6..15cea30cbbfc070cfa4e39986395d08f6c186267 100644 --- a/web/services/common/scroller.js +++ b/web/services/common/scroller.js @@ -11,17 +11,16 @@ class Scroller { this.elmnt.scrollTop = 0; this.previousScrollTop = 0; - this.scrollDiv(); this.elmnt.addEventListener("mouseover", () => { if (this.autoScroll) this.pauseScroll(); }); this.elmnt.addEventListener("mouseout", () => { if (this.autoScroll) this.resumeScroll(); }); - this.autoScroll = true; } scrollDiv() { + this.autoScroll = true; if (!this.reachedMaxScroll) { this.elmnt.scrollBy({ top: 5, left: 0, behavior: "smooth" }); this.reachedMaxScroll =