123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { Component, ElementRef, HostBinding, HostListener, OnDestroy, ViewChild } from '@angular/core';
- import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';
- import { NgxSpinnerService } from 'ngx-spinner';
- import { BehaviorSubject, Observable, Subscription } from 'rxjs';
- import { map } from 'rxjs/operators';
- import { AppConfig } from './app.config';
- import { ThemesService } from './services/themes.service';
- import { ShortcutsService } from './shortcuts/shortcuts.service';
- import { EvtIconInfo } from './ui-components/icon/icon.component';
- @Component({
- selector: 'evt-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.scss'],
- })
- export class AppComponent implements OnDestroy {
- @ViewChild('mainSpinner') mainSpinner: ElementRef;
- private subscriptions: Subscription[] = [];
- public hasNavBar = AppConfig.evtSettings.ui.enableNavBar;
- public navbarOpened$ = new BehaviorSubject(this.hasNavBar && AppConfig.evtSettings.ui.initNavBarOpened);
- public navbarTogglerIcon$: Observable<EvtIconInfo> = this.navbarOpened$.pipe(
- map((opened: boolean) => opened ? { icon: 'caret-down', iconSet: 'fas' } : { icon: 'caret-up', iconSet: 'fas' }),
- );
- constructor(
- private router: Router,
- private spinner: NgxSpinnerService,
- private shortcutsService: ShortcutsService,
- private themes: ThemesService,
- ) {
- this.router.events.subscribe((event) => {
- switch (true) {
- case event instanceof NavigationStart:
- this.spinner.show();
- break;
- case event instanceof NavigationEnd:
- case event instanceof NavigationCancel:
- case event instanceof NavigationError:
- this.spinner.hide();
- break;
- default:
- break;
- }
- });
- }
- @HostBinding('attr.data-theme') get dataTheme() { return this.themes.getCurrentTheme().value; }
- toggleToolbar() {
- this.navbarOpened$.next(!this.navbarOpened$.getValue());
- window.dispatchEvent(new Event('resize')); // Needed to tell Gridster to resize
- }
- ngOnDestroy() {
- this.subscriptions.forEach(subscription => subscription.unsubscribe());
- }
- @HostListener('window:keyup', ['$event'])
- keyEvent(e: KeyboardEvent) {
- this.shortcutsService.handleKeyboardEvent(e);
- }
- }
|