Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { serverEndpoint } from "/src/js/templates.js";
  2. import { request, isStatusValid } from "/src/js/helpers.js";
  3.  
  4. export default class Navigation {
  5.   constructor() {
  6.     this.hamburger = document.querySelector(".hamburger");
  7.     this.header = document.querySelector(".header");
  8.     this.heroesEndpoint = `${serverEndpoint}/heroes`;
  9.     this.loader = document.querySelector(".loader-wrapper");
  10.   }
  11.  
  12.   init() {
  13.     this.handleHamburger();
  14.     this.header.addEventListener("click", this.handleClick);
  15.   }
  16.  
  17.   handleClick(e) {
  18.     e.preventDefault();
  19.     switch (e.target.id) {
  20.       case "home":
  21.         {
  22.           history.pushState({ id: "primaryHTML" }, "/index", "/index.html");
  23.           document.body.classList.remove("open");
  24.         }
  25.         break;
  26.  
  27.       case "addHero":
  28.         {
  29.           history.pushState({ id: "addHeroHTML" }, "/form", "/addHero.html");
  30.           document.body.classList.remove("open");
  31.         }
  32.         break;
  33.  
  34.       case "editHero":
  35.         {
  36.           history.pushState({ id: "editHeroHTML" }, "/index", "/editHero.html");
  37.           document.body.classList.remove("open");
  38.         }
  39.         break;
  40.  
  41.       case "deleteHero":
  42.         {
  43.           history.pushState(
  44.             { id: "deleteHeroHTML" },
  45.             "/index",
  46.             "/deleteHero.html"
  47.           );
  48.           document.body.classList.remove("open");
  49.         }
  50.         break;
  51.  
  52.       case "clearDatabase":
  53.         {
  54.           await this.clearDatabase();
  55.           localStorage.clear();
  56.           document.body.classList.remove("open");
  57.         }
  58.         break;
  59.     }
  60.   }
  61.  
  62.   handleHamburger() {
  63.     this.hamburger.addEventListener("click", this.toggleOpen);
  64.   }
  65.  
  66.   toggleOpen() {
  67.     document.body.classList.toggle("open");
  68.   }
  69.  
  70.   async clearDatabase() {
  71.     try {
  72.       this.loader.classList.add("loading");
  73.       const response = await request(`${this.heroesEndpoint}`, "DELETE");
  74.       if (!isStatusValid(response.status)) {
  75.         this.loader.classList.remove("loading");
  76.         return;
  77.       }
  78.       const heroesData = await response.json();
  79.       history.pushState({ id: "primaryHTML" }, "/index", "/index.html");
  80.       console.log(heroesData);
  81.       this.loader.classList.remove("loading");
  82.       alert(`Database has been cleared`);
  83.     } catch (error) {
  84.       console.log(`Error when fetching hero: ${error}`);
  85.     }
  86.   }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement