From e1ce07e22a04145c165c66aed966349d965ef773 Mon Sep 17 00:00:00 2001
From: Alexis POYEN <punkylibre@localhost.localdomain>
Date: Wed, 17 Jun 2020 09:59:59 +0200
Subject: [PATCH] Feat : display votes captured

---
 web/components/vote/votes.js | 90 +++++++++++++++++++++++++++++++++++-
 1 file changed, 89 insertions(+), 1 deletion(-)

diff --git a/web/components/vote/votes.js b/web/components/vote/votes.js
index e5e957f..3847e8e 100644
--- a/web/components/vote/votes.js
+++ b/web/components/vote/votes.js
@@ -6,6 +6,8 @@ import * as AreaModel from "/services/model/area-model.js";
 import * as SectionModel from "/services/model/section-model.js";
 import * as DeskModel from "/services/model/desk-model.js";
 import * as DeskRoundModel from "/services/model/deskRound-model.js";
+import * as VoteModel from "/services/model/vote-model.js";
+import * as CandidateListModel from "/services/model/candidateList-model.js";
 
 export async function mount(parent) {
   const voteComponent = new Vote(parent);
@@ -22,6 +24,8 @@ class Vote {
     this.SectionModel = SectionModel.getSectionModel();
     this.DeskModel = DeskModel.getDeskModel();
     this.DeskRoundModel = DeskRoundModel.getDeskRoundModel();
+    this.VoteModel = VoteModel.getVoteModel();
+    this.CandidateListModel = CandidateListModel.getCandidateListModel();
   }
 
   async displayVotes(RoundID, AreaID, DeskRoundID) {
@@ -31,6 +35,8 @@ class Vote {
     this.SectionModel.current_user = await Auth.GetUser();
     this.DeskModel.current_user = await Auth.GetUser();
     this.DeskRoundModel.current_user = await Auth.GetUser();
+    this.VoteModel.current_user = await Auth.GetUser();
+    this.CandidateListModel.current_user = await Auth.GetUser();
 
     this.RoundID = RoundID;
     this.AreaID = AreaID;
@@ -44,7 +50,7 @@ class Vote {
         </nav>
         </p>
       </header>
-      <div id="votes-tables" class="card-content"></div>
+      <div id="votes-table" class="card-content"></div>
       <nav class="level">
         <div class="level-left"></div>
         <div class="level-right">
@@ -63,9 +69,28 @@ class Vote {
     this.handleDom();
 
     await this.refreshBreadCrumb();
+    await this.loadVotes();
+  }
+
+  voteTemplate(candidateList) {
+    return /* HTML */ `
+      <tr id="votes-vote-${candidateList.ID}">
+        <td>
+          ${candidateList.Name}
+        </td>
+        <td>
+          <input
+            class="input"
+            type="number"
+            id="${candidateList.ID}-vote-voice"
+          />
+        </td>
+      </tr>
+    `;
   }
 
   handleDom() {}
+
   async refreshBreadCrumb() {
     let round = await this.RoundModel.getRound(this.RoundID);
     let election = await this.ElectionModel.getElection(round.ElectionID);
@@ -96,4 +121,67 @@ class Vote {
     el.innerHTML = "<a>" + desk.Name + "</a>";
     breadcrumb.appendChild(el);
   }
+
+  async loadVotes() {
+    document.getElementById("votes-table").innerHTML = /* HTML */ `<div
+      class="table-container"
+    >
+      <table class="table is-bordered is-narrow is-hoverable is-fullwidth">
+        <thead>
+          <tr class="is-selected">
+            <th>Liste</th>
+            <th>Nombre de voix</th>
+          </tr>
+        </thead>
+        <tbody id="votes-list"></tbody>
+      </table>
+    </div> `;
+
+    let voteHandler = this;
+    let votes = await this.VoteModel.getVotes();
+    votes = votes.filter((vote) => {
+      return vote.DeskRoundID == voteHandler.DeskRoundID;
+    });
+    console.log(votes);
+    let candidateLists = await this.CandidateListModel.getCandidateLists();
+    candidateLists = candidateLists.filter((candidateList) => {
+      return candidateList.AreaID == voteHandler.AreaID;
+    });
+
+    const markup = candidateLists
+      .map((vote) => this.voteTemplate(vote))
+      .join("");
+    document.getElementById("votes-list").innerHTML = markup;
+    document.getElementById("votes-list").innerHTML += /* HTML */ `
+    <tr">
+      <td>Votes blanc</td>
+      <td>
+        <input
+          class="input"
+          type="number"
+          id="blank-vote-voice"
+        />
+      </td>
+    </tr>
+  `;
+    document.getElementById("votes-list").innerHTML += /* HTML */ `
+      <tr>
+        <td>Votes nul</td>
+        <td>
+          <input class="input" type="number" id="null-vote-voice" />
+        </td>
+      </tr>
+    `;
+
+    votes.forEach((vote) => {
+      if (vote.Blank) {
+        document.getElementById("blank-vote-voice").value = vote.VoiceNumber;
+      } else if (vote.NullVote) {
+        document.getElementById("null-vote-voice").value = vote.VoiceNumber;
+      } else {
+        document.getElementById(vote.CandidateListID + "-vote-voice").value =
+          vote.VoiceNumber;
+      }
+    });
+  }
 }
-- 
GitLab