New dashboard look & feel
[src/xds/xds-agent.git] / webapp / src / app / @core / data / state.service.ts
1 import { Injectable } from '@angular/core';
2
3 import { Observable } from 'rxjs/Observable';
4 import { BehaviorSubject } from 'rxjs/BehaviorSubject';
5 import 'rxjs/add/observable/of';
6
7 @Injectable()
8 export class StateService {
9
10   protected layouts: any = [
11     {
12       name: 'One Column',
13       icon: 'nb-layout-default',
14       id: 'one-column',
15       selected: true,
16     },
17     {
18       name: 'Two Column',
19       icon: 'nb-layout-two-column',
20       id: 'two-column',
21     },
22     {
23       name: 'Center Column',
24       icon: 'nb-layout-centre',
25       id: 'center-column',
26     },
27   ];
28
29   protected sidebars: any = [
30     {
31       name: 'Left Sidebar',
32       icon: 'nb-layout-sidebar-left',
33       id: 'left',
34       selected: true,
35     },
36     {
37       name: 'Right Sidebar',
38       icon: 'nb-layout-sidebar-right',
39       id: 'right',
40     },
41   ];
42
43   protected layoutState$ = new BehaviorSubject(this.layouts[0]);
44   protected sidebarState$ = new BehaviorSubject(this.sidebars[0]);
45
46   setLayoutState(state: any): any {
47     this.layoutState$.next(state);
48   }
49
50   getLayoutStates(): Observable<any[]> {
51     return Observable.of(this.layouts);
52   }
53
54   onLayoutState(): Observable<any> {
55     return this.layoutState$.asObservable();
56   }
57
58   setSidebarState(state: any): any {
59     this.sidebarState$.next(state);
60   }
61
62   getSidebarStates(): Observable<any[]> {
63     return Observable.of(this.sidebars);
64   }
65
66   onSidebarState(): Observable<any> {
67     return this.sidebarState$.asObservable();
68   }
69 }