Skip to content
Snippets Groups Projects
round.js 2.97 KiB
Newer Older
  • Learn to ignore specific revisions
  • // Imports
    
    import * as RoundsCard from "/components/management/rounds-card.js";
    import * as RoundDesks from "/components/management/round-desks.js";
    import * as CandidateList from "/components/management/candidate-lists.js";
    
    
    // DOM elements
    
    export async function mount(where) {
      const roundComponent = new Round();
      await roundComponent.mount(where);
    }
    
    class Round {
      constructor() {}
    
      async mount(where) {
        const mountpoint = where;
        document.getElementById(mountpoint).innerHTML = /* HTML */ `
    
          <div class="columns">
    
            <div class="column is-full">
    
              <div id="rounds-list" class="card-no-hover">
    
                Liste des tours
              </div>
            </div>
    
            <div class="column" style="padding-right:40px;">
    
              <div id="round-desks" class="card-no-hover card-list">
    
                Liste des bureaux d'un tour
              </div>
    
              <div id="candidate-lists" class="card-no-hover card-list" ">
    
                Liste des listes de candidats d'un tour
              </div>
            </div>
          </div>
    
    Alexis POYEN's avatar
    Alexis POYEN committed
    
          <div class="modal" id="round-modal"></div>
    
          <div class="modal" id="capturers-modal"></div>
    
          <div class="modal" id="candidateList-modal"></div>
    
          <div class="modal" id="candidateList-clone-modal"></div>
    
        this.roundsHandler = await RoundsCard.mount("rounds-list", this);
        this.deskRoundsHandler = await RoundDesks.mount("round-desks", this);
        this.candidateListHandler = await CandidateList.mount(
          "candidate-lists",
          this
        );
        document.getElementById("candidate-lists-dropdown-content").style.display =
          "none";
        document.getElementById("candidate-lists").style.height = "auto";
        this.handleDOM();
      }
    
      handleDOM() {
        let dropdownRoundDesks = document.getElementById("dropdown-round-desks");
        let dropdownCandidateList = document.getElementById(
          "dropdown-candidate-lists"
        );
    
    
        dropdownRoundDesks.addEventListener("click", () => {
          if (document.getElementById("round-desks").style.height == "auto") {
            this.hideCandidateLists();
          } else {
            this.hideDesks();
          }
    
        dropdownCandidateList.addEventListener("click", () => {
          if (document.getElementById("round-desks").style.height == "auto") {
            this.hideCandidateLists();
          } else {
            this.hideDesks();
          }
    
    
      hideDesks() {
        document.getElementById("desk-rounds-dropdown-content").style.display =
          "none";
        document.getElementById("round-desks").style.height = "auto";
        document.getElementById("candidate-lists-dropdown-content").style.display =
          "flex";
    
        document.getElementById("candidate-lists").style.height = "65vh";
    
      }
    
      hideCandidateLists() {
        document.getElementById("desk-rounds-dropdown-content").style.display =
          "flex";
    
        document.getElementById("round-desks").style.height = "65vh";
    
        document.getElementById("candidate-lists-dropdown-content").style.display =
          "none";
        document.getElementById("candidate-lists").style.height = "auto";
      }