// Imports
import * as Auth from "/services/auth/auth.js";
import * as Election from "/components/management/election.js";
import * as Areas from "/components/management/area.js";
import * as Sections from "/components/management/section.js";
import * as Desks from "/components/management/desk.js";

// DOM elements

// local variables
let current_user;

export async function mount(where) {
  const genericElectionComponent = new GenericElection();
  await genericElectionComponent.mount(where);
}

class GenericElection {
  constructor() {}

  async mount(where) {
    const mountpoint = where;
    document.getElementById(mountpoint).innerHTML = /* HTML */ `
      <div class="columns">
        <div class="column">
          <div id="election" class="card"></div>
        </div>
        <div class="column">
          <div id="areas" class="card"></div>
        </div>
        <div class="column">
          <div id="sections" class="card"></div>
        </div>
        <div class="column">
          <div id="desks" class="card"></div>
        </div>
      </div>

      <div class="modal" id="election-modal"></div>
      <div class="modal" id="election-clone-modal"></div>
      <div class="modal" id="area-modal"></div>
      <div class="modal" id="section-modal"></div>
      <div class="modal" id="desk-modal"></div>
    `;
    current_user = await Auth.GetUser();
    this.electionHandler = await Election.mount("election", this);
    this.areaHandler = await Areas.mount("areas", this);
    this.sectionHandler = await Sections.mount("sections", this);
    this.deskHandler = await Desks.mount("desks", this);
  }
}