Added target and terminal support in Dashboard
[src/xds/xds-agent.git] / webapp / src / app / pages / targets / settings / target-select-dropdown.component.ts
1 /**
2 * @license
3 * Copyright (C) 2018 "IoT.bzh"
4 * Author Sebastien Douheret <sebastien@iot.bzh>
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *   http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19 import { Component, OnInit, Input } from '@angular/core';
20 import { Observable } from 'rxjs/Observable';
21
22 import { ITarget, TargetService } from '../../../@core-xds/services/target.service';
23
24 @Component({
25   selector: 'xds-target-select-dropdown',
26   template: `
27     <div class="form-group row">
28       <label class="col-sm-3 form-control-label" style="margin-top:  auto; margin-bottom:  auto;">Target</label>
29       <div class="col-sm-9">
30         <select class="form-control" style="min-width: 10rem;" [(ngModel)]="curTgt" (click)="select()">
31           <option  *ngFor="let tgt of targets$ | async" [ngValue]="tgt">{{ tgt.name }}</option>
32         </select>
33       </div>
34     </div>
35   `,
36 })
37 export class TargetSelectDropdownComponent implements OnInit {
38
39   targets$: Observable<ITarget[]>;
40   curTgt: ITarget;
41
42   constructor(private targetSvr: TargetService) { }
43
44   ngOnInit() {
45     this.curTgt = this.targetSvr.getCurrent();
46     this.targets$ = this.targetSvr.targets$;
47     this.targetSvr.curTarget$.subscribe(p => this.curTgt = p);
48   }
49
50   select() {
51     if (this.curTgt) {
52       this.targetSvr.setCurrentById(this.curTgt.id);
53     }
54   }
55 }
56
57