templateManager.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import {DAL} from "../DAL/login";
  2. import login from "./login";
  3. import {Page} from "./page";
  4. import systemInfo from "./systemInfo";
  5. import systemMonitor from "./systemMonitor";
  6. import systemServices from './services';
  7. class TemplateManager {
  8. public currentSection: Page|null = null;
  9. protected pages: Array<Page> =[];
  10. protected loading: boolean =false;
  11. public constructor() {
  12. this.pages.push(login);
  13. this.pages.push(systemInfo);
  14. this.pages.push(systemMonitor);
  15. this.pages.push(systemServices);
  16. addEventListener("hashchange", () => this.showDefaultPage());
  17. }
  18. public async showDefaultPage(): Promise<void> {
  19. this.setLoading(true);
  20. if (!await DAL.isLoggedUser())
  21. return login.show();
  22. const hash = String(window.location.hash).slice(1);
  23. let page = this.pages.find(x => x.getPageName() === hash);
  24. if (!page)
  25. page = systemInfo;
  26. await page.show();
  27. this.setLoading(false);
  28. }
  29. public setLoading(loading: boolean) {
  30. if (this.loading === loading)
  31. return;
  32. this.loading = loading;
  33. document.body.classList.toggle("loading", loading);
  34. }
  35. }
  36. export default new TemplateManager();