diff --git a/web/assets/brand/brand.js b/web/assets/brand/brand.js index ee52b4de244ba72b3a7ac96712d8b6934b2d2b46..9f20fb0529bca254e3051afa76b130bf11e15b7e 100644 --- a/web/assets/brand/brand.js +++ b/web/assets/brand/brand.js @@ -1,3 +1,3 @@ -export const windowTitle = "SDK-GO"; -export const navTitle = "SDK-GO"; +export const windowTitle = "Elections"; +export const navTitle = "Elections"; export const loginModes = { inmemory: true, oauth2: true }; diff --git a/web/components/home/home.js b/web/components/home/home.js index 97b7678e4d7dc7bce02a857ee115411ad6bb91ee..7c041869da630a4918f62d3bd66a79aaf8ca1326 100644 --- a/web/components/home/home.js +++ b/web/components/home/home.js @@ -10,9 +10,9 @@ export async function mount(where) { document.getElementById(mountpoint).innerHTML = /* HTML */ ` <section class="section"> <div class="container"> - <h1 class="title">Accueil de la GO-banque</h1> + <h1 class="title">Accueil</h1> <h2 class="subtitle"> - Ceci est une application de démonstration du SDK écrit en GO avec GORM et Vanilla JS avec le framework CSS Bulma. + Cette application permet de gérer, saisir et voir les résultats d'une élection. </h2> </div> </section> diff --git a/web/components/management/election.js b/web/components/management/election.js new file mode 100644 index 0000000000000000000000000000000000000000..c7eaf2293d6c5d6f25de1df9b5223e3da6d271ce --- /dev/null +++ b/web/components/management/election.js @@ -0,0 +1,24 @@ +// Imports +import * as Auth from "/services/auth/auth.js"; + +// DOM elements + +// local variables +let current_user; + +export async function mount(where) { + const roundComponent = new Election(); + await roundComponent.mount(where); +} + +class Election { + constructor() {} + + async mount(where) { + const mountpoint = where; + document.getElementById(mountpoint).innerHTML = /* HTML */ ` + Ceci est une élection + `; + current_user = await Auth.GetUser(); + } +} diff --git a/web/components/management/management.js b/web/components/management/management.js new file mode 100644 index 0000000000000000000000000000000000000000..ab678413f85c45ee4ccff2593d62730d8aec9ffa --- /dev/null +++ b/web/components/management/management.js @@ -0,0 +1,62 @@ +// Imports +import * as Auth from "/services/auth/auth.js"; +import * as Election from "/components/management/election.js"; +import * as Round from "/components/management/round.js"; + +// DOM elements + +// local variables +let current_user; + +export async function mount(where) { + const managementPage = new Management(); + await managementPage.mount(where); +} + +class Management { + constructor() {} + + async mount(where) { + const mountpoint = where; + document.getElementById(mountpoint).innerHTML = /* HTML */ ` + <div class="tabs is-boxed is-toggle is-fullwidth"> + <ul> + <li id="election" class="is-active"> + <a> + <span class="icon is-small" + ><i class="fas fa-vote-yea" aria-hidden="true"></i + ></span> + <span>Election</span> + </a> + </li> + <li id="round"> + <a> + <span class="icon is-small" + ><i class="fas fa-calendar" aria-hidden="true"></i + ></span> + <span>Tour</span> + </a> + </li> + </ul> + </div> + <section class="section" id="management-section" style="margin-bottom: 230px;"></section> + `; + current_user = await Auth.GetUser(); + this.handleDom(); + document.getElementById("election").click() + + } + + handleDom(){ + document.getElementById("election").addEventListener("click", async function (){ + await Election.mount("management-section"); + document.getElementById("election").setAttribute("class", "is-active") + document.getElementById("round").setAttribute("class", "") + }); + document.getElementById("round").addEventListener("click", async function (){ + await Round.mount("management-section"); + document.getElementById("election").setAttribute("class", "") + document.getElementById("round").setAttribute("class", "is-active") + }); + } +} diff --git a/web/components/management/round.js b/web/components/management/round.js new file mode 100644 index 0000000000000000000000000000000000000000..74f89479bea3577d2db82d36237217f080ef90b3 --- /dev/null +++ b/web/components/management/round.js @@ -0,0 +1,24 @@ +// Imports +import * as Auth from "/services/auth/auth.js"; + +// DOM elements + +// local variables +let current_user; + +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 */ ` + Ceci est un tour d'élection. + `; + current_user = await Auth.GetUser(); + } +} diff --git a/web/components/navbar/navbar.js b/web/components/navbar/navbar.js index 98229b691b1afff8b361c05d332afd86864c620d..0e5145ca45d2b4e8c143e61c6f453a1e90375460 100644 --- a/web/components/navbar/navbar.js +++ b/web/components/navbar/navbar.js @@ -54,6 +54,7 @@ export async function CreateMenu() { <a class="navbar-item" href="#home"><i class="navbar-menu-icon fas fa-home"></i>Accueil</a> ${user.role == "ADMIN" ? /* HTML */ ` + <a class="navbar-item" href="#management"><i class="navbar-menu-icon fas fa-edit"></i>Gestion</a> <a class="navbar-item" href="#users"><i class="navbar-menu-icon fas fa-users"></i>Utilisateurs</a> ` : ""} diff --git a/web/index.html b/web/index.html index f8494dc3695f8806dd165177831402ecf051dfce..b294e902ff2fe7d89f084cac169f75e1063ec8f1 100644 --- a/web/index.html +++ b/web/index.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en" class="has-navbar-fixed-top"> <head> - <title>SDK-GO</title> + <title>Elections</title> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="icon" href="assets/brand/favicon.ico" /> @@ -28,7 +28,7 @@ <div class="navbar-brand"> <div class="navbar-item"> <div class="buttons"> - <a class="button is-danger" href="https://forge.grandlyon.com/apoyen/sdk-go" target="_blank" rel="noopener noreferrer"> + <a class="button is-danger" href="https://forge.grandlyon.com/apoyen/elections" target="_blank" rel="noopener noreferrer"> <span class="icon"> <svg class="svg-inline--fa fa-gitlab fa-w-16" diff --git a/web/main.js b/web/main.js index 552aa2f30d1eec6aa2076cdfcc5cc35c639226fb..fd9f743b458ca29deacd92ac35777d18ade7bec3 100644 --- a/web/main.js +++ b/web/main.js @@ -1,5 +1,6 @@ import * as Home from "/components/home/home.js"; import * as Users from "/components/users/users.js"; +import * as Management from "/components/management/management.js"; import * as Login from "/components/login/login.js"; import * as Navbar from "/components/navbar/navbar.js"; import { AnimateCSS } from "/services/common/common.js"; @@ -27,6 +28,11 @@ async function navigate() { await Users.mount("main"); }); break; + case "#management": + load(mountPoint, async function () { + await Management.mount("main"); + }); + break; case "#login": load(mountPoint, async function () { await Login.mount("main");