Fixed build page when no project exists
[src/xds/xds-agent.git] / webapp / src / app / pages / config / config-xds / config-xds.component.ts
1 import { Component, OnInit } from '@angular/core';
2 import { Observable } from 'rxjs/Observable';
3
4 import { XDSConfigService } from '../../../@core-xds/services/xds-config.service';
5 import { IXDServerCfg } from '../../../@core-xds/services/xdsagent.service';
6 import { AlertService, IAlert } from '../../../@core-xds/services/alert.service';
7 import { NotificationsComponent } from '../../notifications/notifications.component';
8
9 // Import RxJs required methods
10 import 'rxjs/add/operator/map';
11 import 'rxjs/add/operator/catch';
12
13 @Component({
14   selector: 'xds-config-xds',
15   styleUrls: ['./config-xds.component.scss'],
16   templateUrl: './config-xds.component.html',
17 })
18 export class ConfigXdsComponent {
19
20   // TODO: cleanup agentStatus$: Observable<IAgentStatus>;
21   applying = false;
22   xdsServerUrl = '';
23   server: IXDServerCfg = { id: '', url: 'http://localhost:8000', connRetry: 10, connected: false };
24
25   configFormChanged = false;
26
27   constructor(
28     private XdsConfigSvr: XDSConfigService,
29     private alert: AlertService,
30   ) {
31     // FIXME support multiple servers
32     this.XdsConfigSvr.onCurServer().subscribe(svr => {
33       this.xdsServerUrl = svr.url;
34       this.server = Object.assign({}, svr);
35     });
36   }
37
38   isApplyBtnEnable(): boolean {
39     return this.xdsServerUrl !== '' && (!this.server.connected || this.configFormChanged);
40   }
41
42   onSubmit() {
43     if (!this.configFormChanged && this.server.connected) {
44       return;
45     }
46     this.configFormChanged = false;
47     this.applying = true;
48     this.server.url = this.xdsServerUrl;
49     this.XdsConfigSvr.setCurServer(this.server)
50       .subscribe(cfg => {
51         this.alert.info('XDS Server successfully connected (' + cfg.url + ')');
52         this.server = Object.assign({}, cfg);
53         this.applying = false;
54       },
55       err => {
56         this.applying = false;
57         this.alert.error(err);
58       });
59   }
60
61 }
62