Project

General

Profile

1 57496 k.triantaf
import {Injectable} from "@angular/core";
2
import {BehaviorSubject, Observable} from "rxjs";
3 57606 k.triantaf
import {ActivationStart, Router} from "@angular/router";
4 57496 k.triantaf
5
@Injectable({
6
  providedIn: 'root'
7
})
8 57706 k.triantaf
export class LayoutService {
9 57496 k.triantaf
10 57591 k.triantaf
  /**
11
   * Set this to true when sidebar items are ready.
12
   */
13 57831 k.triantaf
  private openSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
14 57496 k.triantaf
15 57591 k.triantaf
  /**
16 57618 k.triantaf
   *  Add hasSidebar: false on data of route config, if sidebar is not needed.
17 57591 k.triantaf
   */
18 57837 k.triantaf
  private hasSidebarSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
19 57591 k.triantaf
20 57706 k.triantaf
  /**
21
   *  Add hasHeader: false on data of route config, if header is not needed.
22
   */
23 57837 k.triantaf
  private hasHeaderSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
24 57951 k.triantaf
25 57935 argiro.kok
  /**
26 57951 k.triantaf
   *  Add hasAdminMenu: true on data of route config, if global sidebar should be used.
27 57935 argiro.kok
   */
28
  private _hasAdminMenuSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
29 58836 argiro.kok
  private _hasMiniMenuSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
30
  private _isFrontPageSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
31 57935 argiro.kok
32 57606 k.triantaf
  constructor(private router: Router) {
33
    this.router.events.subscribe(event => {
34
      if (event instanceof ActivationStart) {
35
        let data = event.snapshot.data;
36 57951 k.triantaf
        if (data['hasSidebar'] !== undefined &&
37 57606 k.triantaf
          data['hasSidebar'] === false) {
38
          this.setHasSidebar(false);
39 57951 k.triantaf
        } else {
40 57606 k.triantaf
          this.setHasSidebar(true);
41
        }
42 57951 k.triantaf
        if (data['hasHeader'] !== undefined &&
43 57706 k.triantaf
          data['hasHeader'] === false) {
44
          this.setHasHeader(false);
45 57951 k.triantaf
        } else {
46 57706 k.triantaf
          this.setHasHeader(true);
47
        }
48 57951 k.triantaf
        if (data['hasAdminMenu'] !== undefined &&
49
          data['hasAdminMenu'] === true) {
50
          this.setHasAdminMenu(true);
51
        } else {
52 57935 argiro.kok
          this.setHasAdminMenu(false);
53
        }
54 58836 argiro.kok
        if (data['hasMiniMenu'] !== undefined &&
55
          data['hasMiniMenu'] === true) {
56
          this.setHasMiniMenu(true);
57
        } else {
58
          this.setHasMiniMenu(false);
59
        }
60
        if (data['isFrontPage'] !== undefined &&
61
          data['isFrontPage'] === true) {
62
          this.setFrontPage(true);
63
        } else {
64
          this.setFrontPage(false);
65
        }
66 57606 k.triantaf
      }
67
    });
68
  }
69 57496 k.triantaf
70
  get open(): boolean {
71
    return this.openSubject.getValue();
72
  }
73
74
  setOpen(value: boolean) {
75
    this.openSubject.next(value);
76
  }
77
78
  get hasSidebar(): Observable<boolean> {
79
    return this.hasSidebarSubject.asObservable();
80
  }
81
82
  setHasSidebar(value: boolean) {
83
    this.hasSidebarSubject.next(value);
84
  }
85 57706 k.triantaf
86
  get hasHeader(): Observable<boolean> {
87
    return this.hasHeaderSubject.asObservable();
88
  }
89
90
  setHasHeader(value: boolean) {
91
    this.hasHeaderSubject.next(value);
92
  }
93 57935 argiro.kok
94
95 58102 k.triantaf
  get hasAdminMenu(): Observable<boolean> {
96
    return this._hasAdminMenuSubject.asObservable();
97 57935 argiro.kok
  }
98
99
  setHasAdminMenu(value: boolean) {
100
    this._hasAdminMenuSubject.next(value);
101
  }
102 58836 argiro.kok
103
  get hasMiniMenu(): Observable<boolean> {
104
    return this._hasMiniMenuSubject.asObservable();
105
  }
106
107
  setHasMiniMenu(value: boolean) {
108
    this._hasMiniMenuSubject.next(value);
109
  }
110
  get isFrontPage(): Observable<boolean> {
111
    return this._isFrontPageSubject.asObservable();
112
  }
113
114
  setFrontPage(value: boolean) {
115
    this._isFrontPageSubject.next(value);
116
  }
117 57496 k.triantaf
}