From 098f9b2823edfa4f1853d2db21806d49eea7a5cb Mon Sep 17 00:00:00 2001
From: AlexisPoyen <apoyen@grandlyon.com>
Date: Fri, 10 Jul 2020 09:12:00 +0200
Subject: [PATCH] Fix : prevent iterating on empty deskRounds

---
 web/components/vote/desk-round.js | 69 ++++++++++++++++---------------
 1 file changed, 36 insertions(+), 33 deletions(-)

diff --git a/web/components/vote/desk-round.js b/web/components/vote/desk-round.js
index 38a74b8..9055135 100644
--- a/web/components/vote/desk-round.js
+++ b/web/components/vote/desk-round.js
@@ -205,46 +205,49 @@ class DeskRoundSelector {
     let selectRound = document.getElementById("round-select");
     if (selectRound.value == 0) {
       deskRounds = [];
-    }
-    let deskRoundsFiltered = [];
-    let selectArea = document.getElementById("area-select");
-    if (selectArea.value != 0) {
-      let area = await this.AreaModel.getArea(selectArea.value);
-      for (let i in area.Sections) {
+    } else {
+      let deskRoundsFiltered = [];
+      let selectArea = document.getElementById("area-select");
+      if (selectArea.value != 0) {
+        let area = await this.AreaModel.getArea(selectArea.value);
+        for (let i in area.Sections) {
+          for (let deskRound of deskRounds) {
+            let desk = await deskRoundHandler.DeskModel.getDesk(
+              deskRound.DeskID
+            );
+            if (desk.SectionID == area.Sections[i].ID)
+              deskRoundsFiltered.push(deskRound);
+          }
+        }
+        deskRounds = deskRoundsFiltered;
+      }
+      deskRoundsFiltered = [];
+      let selectSection = document.getElementById("section-select");
+      if (selectSection.value != 0) {
         for (let deskRound of deskRounds) {
           let desk = await deskRoundHandler.DeskModel.getDesk(deskRound.DeskID);
-          if (desk.SectionID == area.Sections[i].ID)
+          if (desk.SectionID == deskRoundHandler.SectionID)
             deskRoundsFiltered.push(deskRound);
         }
+        deskRounds = deskRoundsFiltered;
       }
-      deskRounds = deskRoundsFiltered;
-    }
-    deskRoundsFiltered = [];
-    let selectSection = document.getElementById("section-select");
-    if (selectSection.value != 0) {
-      for (let deskRound of deskRounds) {
+      const markup = deskRounds
+        .map((deskRound) => this.deskRoundTemplate(deskRound))
+        .join("");
+      document.getElementById("select-desks").innerHTML = markup;
+
+      deskRounds.map(async (deskRound) => {
         let desk = await deskRoundHandler.DeskModel.getDesk(deskRound.DeskID);
-        if (desk.SectionID == deskRoundHandler.SectionID)
-          deskRoundsFiltered.push(deskRound);
-      }
-      deskRounds = deskRoundsFiltered;
+        document.getElementById(
+          `deskrounds-deskround-desc-${deskRound.ID}`
+        ).innerHTML = desk.Name;
+        document
+          .getElementById(`deskrounds-deskround-${deskRound.ID}`)
+          .addEventListener("click", async function () {
+            deskRoundHandler.openVotes(deskRound);
+          });
+      });
     }
-    const markup = deskRounds
-      .map((deskRound) => this.deskRoundTemplate(deskRound))
-      .join("");
-    document.getElementById("select-desks").innerHTML = markup;
-
-    deskRounds.map(async (deskRound) => {
-      let desk = await deskRoundHandler.DeskModel.getDesk(deskRound.DeskID);
-      document.getElementById(
-        `deskrounds-deskround-desc-${deskRound.ID}`
-      ).innerHTML = desk.Name;
-      document
-        .getElementById(`deskrounds-deskround-${deskRound.ID}`)
-        .addEventListener("click", async function () {
-          deskRoundHandler.openVotes(deskRound);
-        });
-    });
   }
 
   async openVotes(deskRound) {
-- 
GitLab