Migration to AGL gerrit (update go import)
[src/xds/xds-agent.git] / webapp / src / app / pages / config / config-xds / config-xds.component.ts
index ffd236d..2f8b252 100644 (file)
@@ -1,3 +1,21 @@
+/**
+* @license
+* Copyright (C) 2017-2018 "IoT.bzh"
+* Author Sebastien Douheret <sebastien@iot.bzh>
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 import { Component, OnInit } from '@angular/core';
 import { Observable } from 'rxjs/Observable';
 
@@ -15,12 +33,12 @@ import 'rxjs/add/operator/catch';
   styleUrls: ['./config-xds.component.scss'],
   templateUrl: './config-xds.component.html',
 })
-export class ConfigXdsComponent implements OnInit {
+export class ConfigXdsComponent {
 
   // TODO: cleanup agentStatus$: Observable<IAgentStatus>;
-  connecting = false;
+  applying = false;
   xdsServerUrl = '';
-  server: IXDServerCfg;
+  server: IXDServerCfg = { id: '', url: 'http://localhost:8000', connRetry: 10, connected: false };
 
   configFormChanged = false;
 
@@ -28,18 +46,21 @@ export class ConfigXdsComponent implements OnInit {
     private XdsConfigSvr: XDSConfigService,
     private alert: AlertService,
   ) {
-  }
-
-  ngOnInit() {
     // FIXME support multiple servers
+    this._updateServerCfg(this.XdsConfigSvr.getCurServer());
+    this.XdsConfigSvr.onCurServer().subscribe(svr => this._updateServerCfg(svr));
+  }
 
-    this.server = this.XdsConfigSvr.getCurServer();
-    this.xdsServerUrl = this.server.url;
+  private _updateServerCfg(svr: IXDServerCfg) {
+    if (!svr || svr.url === '') {
+      return;
+    }
+    this.xdsServerUrl = svr.url;
+    this.server = Object.assign({}, svr);
+  }
 
-    this.XdsConfigSvr.onCurServer().subscribe(svr => {
-      this.xdsServerUrl = svr.url;
-      this.server = svr;
-    });
+  isApplyBtnEnable(): boolean {
+    return this.xdsServerUrl !== '' && (!this.server.connected || this.configFormChanged);
   }
 
   onSubmit() {
@@ -47,14 +68,16 @@ export class ConfigXdsComponent implements OnInit {
       return;
     }
     this.configFormChanged = false;
-    this.connecting = true;
+    this.applying = true;
     this.server.url = this.xdsServerUrl;
     this.XdsConfigSvr.setCurServer(this.server)
       .subscribe(cfg => {
-        this.connecting = false;
-       },
+        this.alert.info('XDS Server successfully connected (' + cfg.url + ')');
+        this.server = Object.assign({}, cfg);
+        this.applying = false;
+      },
       err => {
-        this.connecting = false;
+        this.applying = false;
         this.alert.error(err);
       });
   }