import 'rxjs/add/observable/throw';
+/* FIXME: syntax only compatible with TS>2.4.0
+export enum StatusType {
+ DISABLE = 'Disable',
+ NOT_INSTALLED = 'Not Installed',
+ INSTALLING = 'Installing',
+ UNINSTALLING = 'Un-installing',
+ INSTALLED = 'Installed'
+}
+*/
+export type StatusTypeEnum = 'Disable' | 'Not Installed' | 'Installing' | 'Un-installing' | 'Installed';
+export const StatusType = {
+ DISABLE: 'Disable',
+ NOT_INSTALLED: 'Not Installed',
+ INSTALLING: 'Installing',
+ UNINSTALLING: 'Un-installing',
+ INSTALLED: 'Installed',
+};
+
export interface ISdk {
id: string;
name: string;
this._addSdk(evMgt.sdk);
});
this.xdsSvr.onSdkRemove().subscribe(evMgt => {
- if (evMgt.sdk.status !== 'Not Installed') {
+ if (evMgt.sdk.status !== StatusType.NOT_INSTALLED) {
/* tslint:disable:no-console */
console.log('Error: received event:sdk-remove with invalid status: evMgt=', evMgt);
return;
private _addSdk(sdk: ISdk, noNext?: boolean): ISdk {
- // add new sdk
- this._sdksList.push(sdk);
+ // check if sdk already exists
+ const idx = this._sdksList.findIndex(s => s.id === sdk.id);
+ if (idx >= 0) {
+ this._sdksList[idx] = sdk;
+ } else {
+ // add new sdk
+ this._sdksList.push(sdk);
+ }
// sort sdk array
this._sdksList.sort((a, b) => {
*/
import { Component, Input, Pipe, PipeTransform } from '@angular/core';
-import { SdkService, ISdk } from '../../../@core-xds/services/sdk.service';
+import { SdkService, ISdk, StatusType } from '../../../@core-xds/services/sdk.service';
import { AlertService } from '../../../@core-xds/services/alert.service';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
) {
}
+ canRemove(sdk: ISdk) {
+ return sdk.status === StatusType.INSTALLED;
+ }
+
remove(sdk: ISdk) {
const modal = this.modalService.open(ConfirmModalComponent, {
size: 'lg',
import { SdkInstallComponent } from './sdk-install.component';
import { AlertService } from '../../../@core-xds/services/alert.service';
-import { SdkService, ISdk } from '../../../@core-xds/services/sdk.service';
+import { SdkService, ISdk, StatusType } from '../../../@core-xds/services/sdk.service';
import { ISdkMessage } from '../../../@core-xds/services/xdsagent.service';
interface ISdkMgt extends ISdk {
this.sdks = [];
sdks.forEach(s => {
// only display not installed SDK
- if (s.status !== 'Not Installed') {
+ if (s.status !== StatusType.NOT_INSTALLED) {
return;
}
profMap[s.profile] = s.profile;
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
-import { SdkService, ISdk } from '../../@core-xds/services/sdk.service';
+import { SdkService, ISdk, StatusType } from '../../@core-xds/services/sdk.service';
@Component({
selector: 'xds-sdks',
}
isVisible(sdk: ISdk) {
- return sdk.status === 'Installed' || sdk.status === 'Installing';
+ return sdk.status === StatusType.INSTALLED || sdk.status === StatusType.INSTALLING;
}
}