New dashboard look & feel
[src/xds/xds-agent.git] / webapp / src / app / @core-xds / services / sdk.service.ts
1 import { Injectable, SecurityContext } from '@angular/core';
2 import { Observable } from 'rxjs/Observable';
3 import { BehaviorSubject } from 'rxjs/BehaviorSubject';
4
5 import { XDSAgentService } from '../services/xdsagent.service';
6
7 import 'rxjs/add/observable/throw';
8
9 export interface ISdk {
10     id: string;
11     profile: string;
12     version: string;
13     arch: number;
14     path: string;
15 }
16
17 @Injectable()
18 export class SdkService {
19     public Sdks$: Observable<ISdk[]>;
20
21     private _sdksList = [];
22     private current: ISdk;
23     private sdksSubject = <BehaviorSubject<ISdk[]>>new BehaviorSubject(this._sdksList);
24
25     constructor(private xdsSvr: XDSAgentService) {
26         this.current = null;
27         this.Sdks$ = this.sdksSubject.asObservable();
28
29         this.xdsSvr.XdsConfig$.subscribe(cfg => {
30             if (!cfg || cfg.servers.length < 1) {
31                 return;
32             }
33             // FIXME support multiple server
34             // cfg.servers.forEach(svr => {
35             this.xdsSvr.getSdks(cfg.servers[0].id).subscribe((s) => {
36                 this._sdksList = s;
37                 this.sdksSubject.next(s);
38             });
39         });
40     }
41
42     public setCurrent(s: ISdk) {
43         this.current = s;
44     }
45
46     public getCurrent(): ISdk {
47         return this.current;
48     }
49
50     public getCurrentId(): string {
51         if (this.current && this.current.id) {
52             return this.current.id;
53         }
54         return '';
55     }
56
57     public add(sdk: ISdk): Observable<ISdk> {
58       // TODO SEB
59       return Observable.throw('Not implement yet');
60     }
61
62     public delete(sdk: ISdk): Observable<ISdk> {
63       // TODO SEB
64       return Observable.throw('Not implement yet');
65     }
66 }