import Notifier from "./Notifier.js"; import Elem from "./Elem.js"; export default class Navigator{ constructor(container, options){ const navBox = new Elem("div") .addClass("navigator") .appendTo(container); for(let i = 0; i < options.length; i++){ const option = options[i].split("-"); switch(option[0]){ case "home": navBox.append(this.homeButton()); break; case "back": navBox.append(this.backButton(option[1])); break; case "logout": navBox.append(this.logoutButton()); break; case "viewMenu": navBox.append(this.viewMenuButton()); break; case "addMenu": navBox.append(this.addMenuButton()); break; } } } homeButton(){ const homeSvg = ''; return new Elem("button") .innerHtml(homeSvg) .addClass("navButton") .onclick(()=>{changePage("home")}); } backButton(page){ const backSvg = ''; return new Elem("button") .innerHtml(backSvg) .addClass("navButton") .onclick(()=>{changePage(page)}); } logoutButton(){ const logoutSvg = ''; return new Elem("button") .innerHtml(logoutSvg) .addClass("navButton") .onclick(this.logout); } viewMenuButton(){ const viewSvg = ''; return new Elem("button") .innerHtml(viewSvg) .addClass("navButton") .onclick(()=>{changePage("viewMenu")}); } addMenuButton(){ const addSvg = ''; return new Elem("button") .innerHtml(addSvg) .addClass("navButton") .onclick(()=>{changePage("addMenu")}); } async logout(){ let response; try{ response = await fetch("/api/user/logout", { method: "GET", headers: {"Content-Type": "application/json"} }); }catch(e){ new Notifier("error", "Something went wrong, try refreshing the page"); } if(!response.ok) return new Notifier("error", response.error.message); changePage("login"); } }