From e83217f0f442f6ad2c376a384b7dcd2232b254bd Mon Sep 17 00:00:00 2001 From: cyuamber Date: Wed, 20 Nov 2019 18:02:21 +0800 Subject: feat: change the main menu to face the nsmf requirement Change-Id: I1c835e2798d91a929fb8aac54ff30229a0b85ee5 Issue-ID: USECASEUI-352 Signed-off-by: cyuamber --- usecaseui-portal/src/app/app-routing.module.ts | 9 +- usecaseui-portal/src/app/app.component.html | 43 ++- usecaseui-portal/src/app/app.component.ts | 51 +-- usecaseui-portal/src/app/app.module.ts | 8 +- .../fcaps/monitor-5g/monitor-5g.component.html | 3 + .../fcaps/monitor-5g/monitor-5g.component.less | 0 .../fcaps/monitor-5g/monitor-5g.component.spec.ts | 25 ++ .../views/fcaps/monitor-5g/monitor-5g.component.ts | 15 + .../onboard-vnf-vm/onboard-vnf-vm.component.css | 67 ++++ .../onboard-vnf-vm/onboard-vnf-vm.component.html | 123 +++++++ .../onboard-vnf-vm/onboard-vnf-vm.component.less | 138 ++++++++ .../onboard-vnf-vm.component.spec.ts | 36 +++ .../onboard-vnf-vm/onboard-vnf-vm.component.ts | 360 +++++++++++++++++++++ .../onboard-vnf-vm/onboard-vnf-vm.component.css | 67 ---- .../onboard-vnf-vm/onboard-vnf-vm.component.html | 123 ------- .../onboard-vnf-vm/onboard-vnf-vm.component.less | 138 -------- .../onboard-vnf-vm.component.spec.ts | 36 --- .../onboard-vnf-vm/onboard-vnf-vm.component.ts | 360 --------------------- .../slicing-management.component.html | 3 + .../slicing-management.component.less | 0 .../slicing-management.component.spec.ts | 25 ++ .../slicing-management.component.ts | 15 + usecaseui-portal/src/assets/i18n/cn.json | 258 +++++++-------- usecaseui-portal/src/assets/i18n/en.json | 258 +++++++-------- 24 files changed, 1143 insertions(+), 1018 deletions(-) create mode 100644 usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.html create mode 100644 usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.less create mode 100644 usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.spec.ts create mode 100644 usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.ts create mode 100644 usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.css create mode 100644 usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.html create mode 100644 usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.less create mode 100644 usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts create mode 100644 usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.ts delete mode 100644 usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.css delete mode 100644 usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.html delete mode 100644 usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.less delete mode 100644 usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts delete mode 100644 usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.ts create mode 100644 usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.html create mode 100644 usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.less create mode 100644 usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.spec.ts create mode 100644 usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.ts (limited to 'usecaseui-portal') diff --git a/usecaseui-portal/src/app/app-routing.module.ts b/usecaseui-portal/src/app/app-routing.module.ts index 55a2c5ba..8c8bf2e8 100644 --- a/usecaseui-portal/src/app/app-routing.module.ts +++ b/usecaseui-portal/src/app/app-routing.module.ts @@ -20,8 +20,10 @@ import { RouterModule, Routes } from '@angular/router'; import { HomeComponent } from './views/home/home.component'; import { ManagementComponent } from './views/management/management.component'; import { FcapsComponent } from './views/fcaps/fcaps.component'; +import { Monitor5gComponent } from './views/fcaps/monitor-5g/monitor-5g.component'; import { ServicesListComponent } from './views/services/services-list/services-list.component'; -import { OnboardVnfVmComponent } from './views/services/onboard-vnf-vm/onboard-vnf-vm.component'; +import { SlicingManagementComponent } from './views/services/slicing-management/slicing-management.component'; +import { OnboardVnfVmComponent } from './views/onboard-vnf-vm/onboard-vnf-vm.component'; import { AlarmComponent } from './views/alarm/alarm.component'; import { PerformanceComponent } from './views/performance/performance.component'; import { PerformanceVnfComponent } from './views/performance/performance-vnf/performance-vnf.component'; @@ -45,8 +47,11 @@ const routes: Routes = [ { path: 'home', component: HomeComponent }, { path: 'management', component: ManagementComponent }, { path: 'fcaps', component: FcapsComponent }, + { path: 'fcaps/5gslicing', component: Monitor5gComponent }, { path: 'services/services-list', component: ServicesListComponent }, - { path: 'services/onboard-vnf-vm', component: OnboardVnfVmComponent }, + { path: 'services/slicing-management', component: SlicingManagementComponent }, + // { path: 'services/onboard-vnf-vm', component: OnboardVnfVmComponent }, + { path: 'onboard-vnf-vm', component: OnboardVnfVmComponent }, { path: 'alarm', component: AlarmComponent }, { path: 'performance', component: PerformanceComponent }, { path: 'performance/performance-vnf', component: PerformanceVnfComponent }, diff --git a/usecaseui-portal/src/app/app.component.html b/usecaseui-portal/src/app/app.component.html index 385c4990..c64bf307 100644 --- a/usecaseui-portal/src/app/app.component.html +++ b/usecaseui-portal/src/app/app.component.html @@ -57,43 +57,62 @@ {{"i18nTextDefine_Services" | translate}}
- -
  • - +
  • + home - {{"i18nTextDefine_NetworkTopology" | translate}} + {{"i18nTextDefine_PackageManagement" | translate}}

  • - -
  • - + +
  • + - home - {{"i18nTextDefine_Monitor" | translate}} + {{"i18nTextDefine_NetworkTopology" | translate}}

  • + +
  • + + + home + + {{"i18nTextDefine_Monitor" | translate}} + + + +
  • +
    diff --git a/usecaseui-portal/src/app/app.component.ts b/usecaseui-portal/src/app/app.component.ts index d8dad5f9..90d5606f 100644 --- a/usecaseui-portal/src/app/app.component.ts +++ b/usecaseui-portal/src/app/app.component.ts @@ -13,33 +13,33 @@ See the License for the specific language governing permissions and limitations under the License. */ -import {Component} from '@angular/core'; -import {TranslateService} from '@ngx-translate/core'; -import {ServiceListService} from "./core/services/serviceList.service"; -import {HomesService} from "./core/services/homes.service"; -import {NavigationEnd, Router} from '@angular/router'; +import { Component } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { ServiceListService } from "./core/services/serviceList.service"; +import { HomesService } from "./core/services/homes.service"; +import { NavigationEnd, Router } from '@angular/router'; import 'rxjs/add/operator/map'; @Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.less'] + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.less'] }) export class AppComponent { - public url:string = 'home'; - constructor(private translate: TranslateService,private myhttp: HomesService,private router:Router,) { + public url: string = 'home'; + constructor(private translate: TranslateService, private myhttp: HomesService, private router: Router, ) { this.currentLanguageGet(); this.getUrl(); } // Get the current routing path - getUrl(){ - this.router.events.map(event=> { - if(event instanceof NavigationEnd){ + getUrl() { + this.router.events.map(event => { + if (event instanceof NavigationEnd) { this.url = event['urlAfterRedirects'].slice(1) } - }).subscribe(event=>{}) + }).subscribe(event => { }) } //209.05.08 Get the currentLanguage @@ -51,28 +51,35 @@ export class AppComponent { this.myhttp.getCurrentLanguage(this.currentloginId) .subscribe( (data) => { - console.log(data,"-------------getCurrentLanguage"); + console.log(data, "-------------getCurrentLanguage"); this.currentLanguage = data.languageAlias.toLowerCase(); this.translate.use(this.currentLanguage); - sessionStorage.setItem("DefaultLang",this.currentLanguage); + sessionStorage.setItem("DefaultLang", this.currentLanguage); }, (err) => { console.log(err); } ) - }else { + } else { this.translate.setDefaultLang(this.currentLanguage); - sessionStorage.setItem("DefaultLang",this.currentLanguage); + sessionStorage.setItem("DefaultLang", this.currentLanguage); } } // Whether the submenu expands the identifier - get flag () { - if(!this.url.indexOf('services')){ + get flag() { + if (!this.url.indexOf('services')) { return true - }else{ + } else { return false } } - + get monitorflag() { + if (!this.url.indexOf('fcaps')) { + return true + } else { + return false + } + } + } diff --git a/usecaseui-portal/src/app/app.module.ts b/usecaseui-portal/src/app/app.module.ts index 17804649..333ac520 100644 --- a/usecaseui-portal/src/app/app.module.ts +++ b/usecaseui-portal/src/app/app.module.ts @@ -41,7 +41,7 @@ import { AppComponent } from './app.component'; import { HomeComponent } from './views/home/home.component'; import { ManagementComponent } from './views/management/management.component'; import { ServicesListComponent } from './views/services/services-list/services-list.component'; -import { OnboardVnfVmComponent } from './views/services/onboard-vnf-vm/onboard-vnf-vm.component'; +import { OnboardVnfVmComponent } from './views/onboard-vnf-vm/onboard-vnf-vm.component'; import { AlarmComponent } from './views/alarm/alarm.component'; import { PerformanceComponent } from './views/performance/performance.component'; import { PerformanceVnfComponent } from './views/performance/performance-vnf/performance-vnf.component'; @@ -79,6 +79,8 @@ import { DeleteModelComponent } from './views/services/services-list/delete-mode import { NotificationComponent } from './shared/components/notification/notification.component'; import { ScaleModelComponent } from './views/services/services-list/scale-model/scale-model.component'; import { HealModelComponent } from './views/services/services-list/heal-model/heal-model.component'; +import { Monitor5gComponent } from './views/fcaps/monitor-5g/monitor-5g.component'; +import { SlicingManagementComponent } from './views/services/slicing-management/slicing-management.component'; @NgModule({ providers: [ @@ -124,7 +126,9 @@ import { HealModelComponent } from './views/services/services-list/heal-model/he DeleteModelComponent, NotificationComponent, ScaleModelComponent, - HealModelComponent + HealModelComponent, + Monitor5gComponent, + SlicingManagementComponent ], imports: [ BrowserModule, diff --git a/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.html b/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.html new file mode 100644 index 00000000..951eb5e7 --- /dev/null +++ b/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.html @@ -0,0 +1,3 @@ +

    + monitor-5g works! +

    diff --git a/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.less b/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.less new file mode 100644 index 00000000..e69de29b diff --git a/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.spec.ts b/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.spec.ts new file mode 100644 index 00000000..14203595 --- /dev/null +++ b/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Monitor5gComponent } from './monitor-5g.component'; + +describe('Monitor5gComponent', () => { + let component: Monitor5gComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ Monitor5gComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Monitor5gComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.ts b/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.ts new file mode 100644 index 00000000..128f1ba4 --- /dev/null +++ b/usecaseui-portal/src/app/views/fcaps/monitor-5g/monitor-5g.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-monitor-5g', + templateUrl: './monitor-5g.component.html', + styleUrls: ['./monitor-5g.component.less'] +}) +export class Monitor5gComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.css b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.css new file mode 100644 index 00000000..4e80750c --- /dev/null +++ b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.css @@ -0,0 +1,67 @@ +/* + Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + + 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. +*/ +.title { + font: 700 18px/18px "思源黑体"; + color: #4c5e70; + margin-bottom: 18px; +} +hr { + border: none; + height: 2px; + background-color: #dce1e7; + margin-bottom: 20px; +} +.list { + background-color: #fff; + border-radius: 5px; + padding: 10px; +} +.list nz-table tbody td span.onboarding { + font-size: 12px; + color: #147dc2; +} +.list nz-table tbody td span.onboarded { + font-size: 14px; + color: #147dc2; +} +.list nz-table tbody td span.updating { + font-size: 12px; + color: blue; +} +.list nz-table tbody td span.deleting { + font-size: 12px; + color: red; +} +.list nz-table tbody td span.invalid { + font-size: 14px; + color: purple; +} +.list nz-table tbody td i.anticon { + cursor: pointer; + font-size: 18px; + padding: 2px; +} +.list nz-table tbody td i.anticon:hover { + color: #147dc2; +} +.list nz-table tbody td .cannotclick { + pointer-events: none; + color: #aaa; + opacity: 0.6; +} +.list nz-table tbody td .fileIcon{ + display: none; +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.html b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.html new file mode 100644 index 00000000..c48d68f9 --- /dev/null +++ b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.html @@ -0,0 +1,123 @@ + + + + + + +
    + +
    +
    + +

    + +

    +

    {{"i18nTextDefine_Click_CSAR_File" | translate}}

    +

    +
    + +
    +
    +
    +
    {{"i18nTextDefine_Uploaded_files" | translate}}
    +
    {{"i18nTextDefine_Nofileuploading" | translate}}
    +
    + +
    {{file.name}}
    +
    + +
    +
    + {{"i18nTextDefine_File_upload_completed" | translate}} + {{"i18nTextDefine_File_upload_failed" | translate}} +
    +
    + + +
    +
    +
    +
    + + +
    + + + + {{"i18nTextDefine_NO" | translate}} + {{"i18nTextDefine_Name" | translate}} + {{"i18nTextDefine_Version" | translate}} + {{"i18nTextDefine_OnboardingState" | translate}} + {{"i18nTextDefine_OperationalState" | translate}} + {{"i18nTextDefine_UsageState" | translate}} + {{"i18nTextDefine_Operationbutton" | translate}} + + + + + {{i+1}} + {{item.nsdName || item.name }} + {{item.nsdVersion || item.version}} + {{item.nsdOnboardingState ? item.nsdOnboardingState : status}} + {{item.nsdOperationalState}} + {{item.nsdUsageState}} + + + + + + + + + {{i+1}} + {{item.vnfProductName || item.name }} + {{item.vnfdVersion || item.version}} + {{item.onboardingState}} + {{item.operationalState}} + {{item.usageState}} + + + + + + + + + {{i+1}} + {{item.pnfdName}} + {{item.pnfdVersion}} + {{item.pnfdOnboardingState}} + {{item.pnfdUsageState}} + + + + + + +
    +
    + \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.less b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.less new file mode 100644 index 00000000..f877e1ca --- /dev/null +++ b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.less @@ -0,0 +1,138 @@ +/* + Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + + 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. +*/ +th{ + background-color: rgba(241,243,244,.9) !important; +} +.list { + padding: 20px; + .listUploadContainer{ + display: flex; + align-items: flex-start; + width: 100%; + height: 30%; + margin-bottom: 1%; + .listupload { + position: relative; + width: 22%; + margin-left: 13%; + .upload{ + position: absolute; + left: 50%; + bottom: -48px; + transform: translateX(-50%); + color: #FFFFFF; + font-size: 13px; + background-color: #3E9BFF; + font-family: ArialMT; + } + } + .listlin { + width: 1%; + margin-left: 10%; + height: 177px; + margin-bottom: 30px; + border-right: 2px solid #EEEEEE; + } + .listfile { + width: 43%; + height: 100%; + margin-left: 10%; + .listFileTitle{ + height: 15%; + padding-bottom: 15px; + color: rgba(66,84,143,1); + font-family: ArialMT; + } + .nouploadfile{ + height: 80%; + width: 100%; + text-align: center; + font-size: 22px; + margin: 5% 0 10px; + } + .listfilebgc { + display: flex; + justify-content: space-around; + align-items: center; + width:100%; + height: 80%; + padding: 5px; + background-color: #fff; + border-radius: 2px; + color: #42548F; + .icon{ + width: 15px; + } + :nth-child(3){ + width: 50%; + } + :nth-child(4){ + width: 5%; + height:100%; + .success{ + color:#7BC7F3!important; + } + .fail{ + color:#fb5c5c!important; + } + } + .color { + color:rgba(66,84,143,1); + span{ + color:rgba(66,84,143,0.7); + } + .progress{ + color:rgba(66,84,143,0.7); + } + } + } + + } + + } + .listContainer{ + height: 69%; + .mask { + top: 0; + left: 0; + position: fixed; + width: 100%; + height: 100%; + opacity: 0.1; + background: black; + z-index: 1049; + } + } + nz-table { + tbody { + td { + i.anticon { + cursor: pointer; + font-size: 18px; + padding: 2px; + &:hover{ + color: #147dc2; + } + } + .cannotclick { + pointer-events: none; + color: #aaa; + opacity: 0.6; + } + } + } + } +} diff --git a/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts new file mode 100644 index 00000000..51980b8a --- /dev/null +++ b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts @@ -0,0 +1,36 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { TranslateModule } from '@ngx-translate/core'; +import { HttpClientModule } from '@angular/common/http'; +import { NzMessageService, NzModalService } from 'ng-zorro-antd'; + +import { OnboardVnfVmComponent } from './onboard-vnf-vm.component'; +import { onboardService } from '../../core/services/onboard.service'; + +describe('OnboardVnfVmComponent', () => { + let component: OnboardVnfVmComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + schemas: [ + CUSTOM_ELEMENTS_SCHEMA, + NO_ERRORS_SCHEMA + ], + imports: [TranslateModule, HttpClientModule], + declarations: [OnboardVnfVmComponent], + providers: [onboardService, NzMessageService, NzModalService] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OnboardVnfVmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.ts b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.ts new file mode 100644 index 00000000..682f48cf --- /dev/null +++ b/usecaseui-portal/src/app/views/onboard-vnf-vm/onboard-vnf-vm.component.ts @@ -0,0 +1,360 @@ +/* + Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + + 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 { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http'; +import { Component, OnInit, HostBinding, TemplateRef, ViewChild } from '@angular/core'; +import { onboardService } from '../../core/services/onboard.service'; +import { slideToRight } from '../../shared/utils/animates'; +import { NzMessageService, UploadFile, NzModalRef, NzModalService } from 'ng-zorro-antd'; +import { filter } from 'rxjs/operators'; + +@Component({ + selector: 'app-onboard-vnf-vm', + templateUrl: './onboard-vnf-vm.component.html', + styleUrls: ['./onboard-vnf-vm.component.less'], + animations: [slideToRight] +}) +export class OnboardVnfVmComponent implements OnInit { + @HostBinding('@routerAnimate') routerAnimateState; + @ViewChild('notification') notification: any; + + // upload + tabs: string[] = ['NS', 'VNF', 'PNF']; + currentTab: string = 'NS' + fileList: UploadFile[] = []; + uploading: boolean = false; + infoId: string; + display: string = 'block'; + + // table + isSpinning: boolean = false; + nsTableData: any[]; + vnfTableData: any[]; + pnfTableData: any[]; + status: string = "Onboard Available"; + pageIndex: number = 1; + pageSize: number = 10; + + // update or delete + isUpdate: boolean = false; + jobId: string; + + //url + url = { + ns: '/api/nsd/v1/ns_descriptors/*_*/nsd_content', + vnf: '/api/vnfpkgm/v1/vnf_packages/*_*/package_content', + pnf: '/api/nsd/v1/pnf_descriptors/*_*/pnfd_content' + }; + + file: { + name: string, + uid: string, + progress: number, + status: boolean, + success: number + }; + + constructor( + private myhttp: onboardService, + private http: HttpClient, + private msg: NzMessageService, + private modalService: NzModalService + ) { } + + //default Call ns data by default + ngOnInit() { + this.getTableData(); + } + + // Handling tab switching request data + handleTabChange(tab: string): void { + this.currentTab = tab; + this.fileList = []; + this.display = 'block'; + delete this.file; + switch (tab) { + case 'NS': + this.getTableData(); + break + case 'VNF': + this.getTableVnfData() + break + case 'PNF': + this.getTablePnfData() + break + } + } + + //before put create--Drag and drop files to the page before uploading + requestBody = { + "userDefinedData": { + "additionalProp1": "", + "additionalProp2": "", + "additionalProp3": "" + } + } + + beforeUpload = (file: UploadFile): boolean => { + this.fileList.splice(0, 1, file); + let API: string; + if (this.currentTab === 'NS') { + API = 'createNetworkServiceData'; + } else if (this.currentTab === 'VNF') { + API = 'createVnfData'; + } else { + API = 'createPnfData'; + } + this.myhttp.getCreatensData(API, this.requestBody)//on-line + .subscribe((data) => { + this.infoId = data["id"]; + }, (err) => { + console.log(err); + }) + return false; + } + + // Drag and drop and click the upload button + onClick(): void { + this.display = 'none'; + let tab = this.currentTab === 'NS' ? 'ns' : (this.currentTab === 'VNF' ? 'vnf' : 'pnf') + this.handleUpload(this.url[tab].replace("*_*", this.infoId)); + } + + handleUpload(url: string): void { + const formData = new FormData(); + // tslint:disable-next-line:no-any + this.fileList.forEach((file: any) => { + formData.set('file', file); + }); + this.uploading = true; + this.file = { + name: this.fileList[0].name, + uid: this.fileList[0].uid, + progress: 0, + status: true, + success: 0 + }; + let requery = (file) => { + file.progress += 3; + setTimeout(() => { + if (file.progress < 100) { + requery(file) + } + }, 100) + }; + requery(this.file); + const req = new HttpRequest('PUT', url, formData, { + reportProgress: true, + withCredentials: true + }); + //Upload pre-empty array + this.fileList = []; + this.http.request(req) + .pipe(filter(e => e instanceof HttpResponse)) + .subscribe( + (event: {}) => { + this.file.progress = 100; + this.file.status = false; + this.uploading = false; + this.msg.success('upload successfully.'); + this.currentTab === 'NS' ? this.getTableData() : (this.currentTab === 'VNF' ? this.getTableVnfData() : this.getTablePnfData()); + }, + err => { + this.file.progress = 100; + this.file.status = false; + this.file.success = 1; + this.uploading = false; + this.msg.error('upload failed.'); + } + ); + } + + // Get the NS list + getTableData(): void { + this.isSpinning = true; + //ns vfc lists + this.myhttp.getOnboardTableData() + .subscribe((data) => { + this.nsTableData = data; + //ns sdc list + this.myhttp.getSDC_NSTableData() + .subscribe((data) => { + this.isSpinning = false; //loading hide + let nsData = data; + // this.NSTableData.map((nsvfc) => { nsvfc.sameid = nsData.find((nssdc) => { return nsvfc.id == nssdc.uuid }) && nsvfc.id; return nsvfc; }); + let sameData = nsData.filter((nssdc) => { return !this.nsTableData.find((nsvfc) => { return nsvfc.id == nssdc.uuid }) }); + this.nsTableData = this.nsTableData.concat(sameData); + }, (err) => { + console.error(err); + this.isSpinning = false; + }) + }, (err) => { + console.error(err); + this.isSpinning = false; + }) + } + + // Get the vnf list + getTableVnfData(): void { + this.isSpinning = true; + //vnf vfc lists + this.myhttp.getOnboardTableVnfData() + .subscribe((data) => { + this.vnfTableData = data; + //vnf sdc lists + this.myhttp.getSDC_VNFTableData() + .subscribe((data) => { + this.isSpinning = false; //loading hide + let vnfData = data; + // this.VNFTableData.map((vnfvfc) => { vnfvfc.sameid = this.vnfData.find((nssdc) => { return vnfvfc.id == nssdc.uuid }) && vnfvfc.id; return vnfvfc; }); + let sameData = vnfData.filter((vnfsdc) => { return !this.vnfTableData.find((vnfvfc) => { return vnfvfc.id == vnfsdc.uuid }) }); + this.vnfTableData = this.vnfTableData.concat(sameData); + }, (err) => { + console.error(err); + this.isSpinning = false; + }) + }, (err) => { + console.error(err); + this.isSpinning = false; + }) + } + + // Get pnf list + getTablePnfData() { + this.isSpinning = true; + this.myhttp.getOnboardTablePnfData() + .subscribe((data) => { + this.pnfTableData = data; + this.isSpinning = false; //loading hide + }, (err) => { + console.error(err); + this.isSpinning = false; + }) + } + + // confirm + showConfirm(requestBody: object, id: string): void { + let API = this.currentTab === 'NS' ? 'getNsonboard' : 'getVnfonboard'; + this.modalService.confirm({ + nzTitle: '

    Are you sure you want to do this?

    ', + nzOnOk: () => { + this.myhttp[API](requestBody) + .subscribe((data) => { + if (data.status == "success") { + if (this.currentTab === 'NS') { + this.isUpdate = false; + this.notification.notificationSuccess(this.currentTab, "OnboardingState", id); + this.getTableData(); + } else { + this.jobId = data.jobId; + this.queryProgress(this.jobId, id); + this.getTableVnfData(); + } + } else { + this.isUpdate = false; + this.notification.notificationFailed(this.currentTab, "OnboardingState", id); + return false + } + }, (err) => { + console.log(err); + }) + } + }) + } + + + // ns onboard Upload button + updataService(id: string) { + this.isUpdate = true; + let requestBody = { "csarId": id }; + this.showConfirm(requestBody, id) + } + + //Progress Progress inquiry + queryProgress(jobId: string, id: string): any { + let mypromise = new Promise((res) => { + this.myhttp.getProgress(jobId, 0) + .subscribe((data) => { + if (data.responseDescriptor == null || data.responseDescriptor == "null" || data.responseDescriptor.progress == undefined || data.responseDescriptor.progress == null) { + this.isUpdate = true; + setTimeout(() => { + this.queryProgress(this.jobId, id); + }, 10000) + return false + } + if (data.responseDescriptor.progress > 100) { + this.isUpdate = false; + this.notification.notificationFailed(this.currentTab, 'OnboardingState', id); + } else if (data.responseDescriptor.progress < 100) { + this.isUpdate = true; + setTimeout(() => { + this.queryProgress(this.jobId, id); + }, 5000) + } else { + res(data); + this.isUpdate = false; + this.notification.notificationSuccess(this.currentTab, 'OnboardingState', id); + } + return false + }) + }) + return mypromise; + } + + /* delete button */ + showDeleteConfirm(pkgid: string): void { + this.modalService.confirm({ + nzTitle: 'Do you Want to delete these items?', + nzContent: 'Do you Want to delete these items?', + nzOkText: 'Yes', + nzCancelText: 'No', + nzOnOk: () => new Promise((resolve) => { + this.deleteService(pkgid, resolve); + }).catch(() => console.log('Oops errors!')) + }); + } + + //delete nsItem + deleteService(pkgid, resolve) { + let API: string; + if (this.currentTab === 'NS') { + API = 'deleteNsIdData'; + } else if (this.currentTab === 'VNF') { + API = 'deleteVnfIdData'; + } else { + API = 'deletePnfIdData'; + } + this.myhttp[API](pkgid) + .subscribe((data) => { + this.notification.notificationSuccess(this.currentTab, 'OnboardingState', pkgid); + resolve() + //refresh list after successful deletion + switch (this.currentTab) { + case 'NS': + this.getTableData(); + break + case 'VNF': + this.getTableVnfData(); + break + case 'PNF': + this.getTablePnfData(); + break + } + }, (err) => { + console.log(err); + this.notification.notificationFailed(this.currentTab, 'OnboardingState', pkgid); + }) + } +} diff --git a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.css b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.css deleted file mode 100644 index 4e80750c..00000000 --- a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.css +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. - - 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. -*/ -.title { - font: 700 18px/18px "思源黑体"; - color: #4c5e70; - margin-bottom: 18px; -} -hr { - border: none; - height: 2px; - background-color: #dce1e7; - margin-bottom: 20px; -} -.list { - background-color: #fff; - border-radius: 5px; - padding: 10px; -} -.list nz-table tbody td span.onboarding { - font-size: 12px; - color: #147dc2; -} -.list nz-table tbody td span.onboarded { - font-size: 14px; - color: #147dc2; -} -.list nz-table tbody td span.updating { - font-size: 12px; - color: blue; -} -.list nz-table tbody td span.deleting { - font-size: 12px; - color: red; -} -.list nz-table tbody td span.invalid { - font-size: 14px; - color: purple; -} -.list nz-table tbody td i.anticon { - cursor: pointer; - font-size: 18px; - padding: 2px; -} -.list nz-table tbody td i.anticon:hover { - color: #147dc2; -} -.list nz-table tbody td .cannotclick { - pointer-events: none; - color: #aaa; - opacity: 0.6; -} -.list nz-table tbody td .fileIcon{ - display: none; -} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.html b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.html deleted file mode 100644 index c48d68f9..00000000 --- a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -
    - -
    -
    - -

    - -

    -

    {{"i18nTextDefine_Click_CSAR_File" | translate}}

    -

    -
    - -
    -
    -
    -
    {{"i18nTextDefine_Uploaded_files" | translate}}
    -
    {{"i18nTextDefine_Nofileuploading" | translate}}
    -
    - -
    {{file.name}}
    -
    - -
    -
    - {{"i18nTextDefine_File_upload_completed" | translate}} - {{"i18nTextDefine_File_upload_failed" | translate}} -
    -
    - - -
    -
    -
    -
    - - -
    - - - - {{"i18nTextDefine_NO" | translate}} - {{"i18nTextDefine_Name" | translate}} - {{"i18nTextDefine_Version" | translate}} - {{"i18nTextDefine_OnboardingState" | translate}} - {{"i18nTextDefine_OperationalState" | translate}} - {{"i18nTextDefine_UsageState" | translate}} - {{"i18nTextDefine_Operationbutton" | translate}} - - - - - {{i+1}} - {{item.nsdName || item.name }} - {{item.nsdVersion || item.version}} - {{item.nsdOnboardingState ? item.nsdOnboardingState : status}} - {{item.nsdOperationalState}} - {{item.nsdUsageState}} - - - - - - - - - {{i+1}} - {{item.vnfProductName || item.name }} - {{item.vnfdVersion || item.version}} - {{item.onboardingState}} - {{item.operationalState}} - {{item.usageState}} - - - - - - - - - {{i+1}} - {{item.pnfdName}} - {{item.pnfdVersion}} - {{item.pnfdOnboardingState}} - {{item.pnfdUsageState}} - - - - - - -
    -
    - \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.less b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.less deleted file mode 100644 index f877e1ca..00000000 --- a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.less +++ /dev/null @@ -1,138 +0,0 @@ -/* - Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. - - 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. -*/ -th{ - background-color: rgba(241,243,244,.9) !important; -} -.list { - padding: 20px; - .listUploadContainer{ - display: flex; - align-items: flex-start; - width: 100%; - height: 30%; - margin-bottom: 1%; - .listupload { - position: relative; - width: 22%; - margin-left: 13%; - .upload{ - position: absolute; - left: 50%; - bottom: -48px; - transform: translateX(-50%); - color: #FFFFFF; - font-size: 13px; - background-color: #3E9BFF; - font-family: ArialMT; - } - } - .listlin { - width: 1%; - margin-left: 10%; - height: 177px; - margin-bottom: 30px; - border-right: 2px solid #EEEEEE; - } - .listfile { - width: 43%; - height: 100%; - margin-left: 10%; - .listFileTitle{ - height: 15%; - padding-bottom: 15px; - color: rgba(66,84,143,1); - font-family: ArialMT; - } - .nouploadfile{ - height: 80%; - width: 100%; - text-align: center; - font-size: 22px; - margin: 5% 0 10px; - } - .listfilebgc { - display: flex; - justify-content: space-around; - align-items: center; - width:100%; - height: 80%; - padding: 5px; - background-color: #fff; - border-radius: 2px; - color: #42548F; - .icon{ - width: 15px; - } - :nth-child(3){ - width: 50%; - } - :nth-child(4){ - width: 5%; - height:100%; - .success{ - color:#7BC7F3!important; - } - .fail{ - color:#fb5c5c!important; - } - } - .color { - color:rgba(66,84,143,1); - span{ - color:rgba(66,84,143,0.7); - } - .progress{ - color:rgba(66,84,143,0.7); - } - } - } - - } - - } - .listContainer{ - height: 69%; - .mask { - top: 0; - left: 0; - position: fixed; - width: 100%; - height: 100%; - opacity: 0.1; - background: black; - z-index: 1049; - } - } - nz-table { - tbody { - td { - i.anticon { - cursor: pointer; - font-size: 18px; - padding: 2px; - &:hover{ - color: #147dc2; - } - } - .cannotclick { - pointer-events: none; - color: #aaa; - opacity: 0.6; - } - } - } - } -} diff --git a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts deleted file mode 100644 index 07c8b959..00000000 --- a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { TranslateModule } from '@ngx-translate/core'; -import { HttpClientModule } from '@angular/common/http'; -import { NzMessageService, NzModalService } from 'ng-zorro-antd'; - -import { OnboardVnfVmComponent } from './onboard-vnf-vm.component'; -import { onboardService } from '../../../core/services/onboard.service'; - -describe('OnboardVnfVmComponent', () => { - let component: OnboardVnfVmComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - schemas: [ - CUSTOM_ELEMENTS_SCHEMA, - NO_ERRORS_SCHEMA - ], - imports: [TranslateModule, HttpClientModule], - declarations: [ OnboardVnfVmComponent ], - providers: [onboardService, NzMessageService, NzModalService] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(OnboardVnfVmComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.ts b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.ts deleted file mode 100644 index 3d312c5c..00000000 --- a/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.ts +++ /dev/null @@ -1,360 +0,0 @@ -/* - Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. - - 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 { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http'; -import { Component, OnInit, HostBinding, TemplateRef, ViewChild } from '@angular/core'; -import { onboardService } from '../../../core/services/onboard.service'; -import { slideToRight } from '../../../shared/utils/animates'; -import { NzMessageService, UploadFile, NzModalRef, NzModalService } from 'ng-zorro-antd'; -import { filter } from 'rxjs/operators'; - -@Component({ - selector: 'app-onboard-vnf-vm', - templateUrl: './onboard-vnf-vm.component.html', - styleUrls: ['./onboard-vnf-vm.component.less'], - animations: [slideToRight] -}) -export class OnboardVnfVmComponent implements OnInit { - @HostBinding('@routerAnimate') routerAnimateState; - @ViewChild('notification') notification: any; - - // upload - tabs: string[] = ['NS', 'VNF', 'PNF']; - currentTab: string = 'NS' - fileList: UploadFile[] = []; - uploading:boolean = false; - infoId: string; - display: string = 'block'; - - // table - isSpinning: boolean = false; - nsTableData: any[]; - vnfTableData: any[]; - pnfTableData: any[]; - status: string = "Onboard Available"; - pageIndex: number = 1; - pageSize: number = 10; - - // update or delete - isUpdate: boolean = false; - jobId: string; - - //url - url = { - ns: '/api/nsd/v1/ns_descriptors/*_*/nsd_content', - vnf: '/api/vnfpkgm/v1/vnf_packages/*_*/package_content', - pnf: '/api/nsd/v1/pnf_descriptors/*_*/pnfd_content' - }; - - file: { - name: string, - uid: string, - progress: number, - status: boolean, - success: number - }; - - constructor( - private myhttp: onboardService, - private http: HttpClient, - private msg: NzMessageService, - private modalService: NzModalService - ) { } - - //default Call ns data by default - ngOnInit() { - this.getTableData(); - } - - // Handling tab switching request data - handleTabChange(tab: string): void { - this.currentTab = tab; - this.fileList = []; - this.display = 'block'; - delete this.file; - switch (tab) { - case 'NS': - this.getTableData(); - break - case 'VNF': - this.getTableVnfData() - break - case 'PNF': - this.getTablePnfData() - break - } - } - - //before put create--Drag and drop files to the page before uploading - requestBody = { - "userDefinedData": { - "additionalProp1": "", - "additionalProp2": "", - "additionalProp3": "" - } - } - - beforeUpload = (file: UploadFile): boolean => { - this.fileList.splice(0,1,file); - let API: string; - if(this.currentTab === 'NS'){ - API = 'createNetworkServiceData'; - }else if(this.currentTab === 'VNF'){ - API = 'createVnfData'; - }else { - API = 'createPnfData'; - } - this.myhttp.getCreatensData(API, this.requestBody)//on-line - .subscribe((data) => { - this.infoId = data["id"]; - }, (err) => { - console.log(err); - }) - return false; - } - - // Drag and drop and click the upload button - onClick(): void { - this.display = 'none'; - let tab = this.currentTab === 'NS' ? 'ns' : (this.currentTab === 'VNF' ? 'vnf' : 'pnf') - this.handleUpload(this.url[tab].replace("*_*", this.infoId)); - } - - handleUpload(url: string): void { - const formData = new FormData(); - // tslint:disable-next-line:no-any - this.fileList.forEach((file: any) => { - formData.set('file', file); - }); - this.uploading = true; - this.file = { - name: this.fileList[0].name, - uid: this.fileList[0].uid, - progress: 0, - status: true, - success: 0 - }; - let requery = (file) => { - file.progress += 3; - setTimeout(() => { - if (file.progress < 100) { - requery(file) - } - }, 100) - }; - requery(this.file); - const req = new HttpRequest('PUT', url, formData, { - reportProgress: true, - withCredentials: true - }); - //Upload pre-empty array - this.fileList = []; - this.http.request(req) - .pipe(filter(e => e instanceof HttpResponse)) - .subscribe( - (event: {}) => { - this.file.progress = 100; - this.file.status = false; - this.uploading = false; - this.msg.success('upload successfully.'); - this.currentTab === 'NS' ? this.getTableData() : (this.currentTab === 'VNF' ? this.getTableVnfData() : this.getTablePnfData()); - }, - err => { - this.file.progress = 100; - this.file.status = false; - this.file.success = 1; - this.uploading = false; - this.msg.error('upload failed.'); - } - ); - } - - // Get the NS list - getTableData(): void{ - this.isSpinning = true; - //ns vfc lists - this.myhttp.getOnboardTableData() - .subscribe((data) => { - this.nsTableData = data; - //ns sdc list - this.myhttp.getSDC_NSTableData() - .subscribe((data) => { - this.isSpinning = false; //loading hide - let nsData = data; - // this.NSTableData.map((nsvfc) => { nsvfc.sameid = nsData.find((nssdc) => { return nsvfc.id == nssdc.uuid }) && nsvfc.id; return nsvfc; }); - let sameData = nsData.filter((nssdc) => { return !this.nsTableData.find((nsvfc) => { return nsvfc.id == nssdc.uuid }) }); - this.nsTableData = this.nsTableData.concat(sameData); - }, (err) => { - console.error(err); - this.isSpinning = false; - }) - }, (err) => { - console.error(err); - this.isSpinning = false; - }) - } - - // Get the vnf list - getTableVnfData(): void{ - this.isSpinning = true; - //vnf vfc lists - this.myhttp.getOnboardTableVnfData() - .subscribe((data) => { - this.vnfTableData = data; - //vnf sdc lists - this.myhttp.getSDC_VNFTableData() - .subscribe((data) => { - this.isSpinning = false; //loading hide - let vnfData = data; - // this.VNFTableData.map((vnfvfc) => { vnfvfc.sameid = this.vnfData.find((nssdc) => { return vnfvfc.id == nssdc.uuid }) && vnfvfc.id; return vnfvfc; }); - let sameData = vnfData.filter((vnfsdc) => { return !this.vnfTableData.find((vnfvfc) => { return vnfvfc.id == vnfsdc.uuid }) }); - this.vnfTableData = this.vnfTableData.concat(sameData); - }, (err) => { - console.error(err); - this.isSpinning = false; - }) - }, (err) => { - console.error(err); - this.isSpinning = false; - }) - } - - // Get pnf list - getTablePnfData() { - this.isSpinning = true; - this.myhttp.getOnboardTablePnfData() - .subscribe((data) => { - this.pnfTableData = data; - this.isSpinning = false; //loading hide - }, (err) => { - console.error(err); - this.isSpinning = false; - }) - } - - // confirm - showConfirm(requestBody: object, id: string): void{ - let API = this.currentTab === 'NS'? 'getNsonboard' : 'getVnfonboard'; - this.modalService.confirm({ - nzTitle: '

    Are you sure you want to do this?

    ', - nzOnOk: () => { - this.myhttp[API](requestBody) - .subscribe((data) => { - if (data.status == "success") { - if(this.currentTab === 'NS'){ - this.isUpdate = false; - this.notification.notificationSuccess(this.currentTab, "OnboardingState", id); - this.getTableData(); - }else{ - this.jobId = data.jobId; - this.queryProgress(this.jobId, id); - this.getTableVnfData(); - } - } else { - this.isUpdate = false; - this.notification.notificationFailed(this.currentTab, "OnboardingState", id); - return false - } - }, (err) => { - console.log(err); - }) - } - }) - } - - - // ns onboard Upload button - updataService(id: string) { - this.isUpdate = true; - let requestBody = { "csarId": id }; - this.showConfirm(requestBody, id) - } - - //Progress Progress inquiry - queryProgress(jobId: string, id: string): any{ - let mypromise = new Promise((res) => { - this.myhttp.getProgress(jobId, 0) - .subscribe((data) => { - if (data.responseDescriptor == null || data.responseDescriptor == "null" || data.responseDescriptor.progress == undefined || data.responseDescriptor.progress == null) { - this.isUpdate = true; - setTimeout(() => { - this.queryProgress(this.jobId, id); - }, 10000) - return false - } - if (data.responseDescriptor.progress > 100) { - this.isUpdate = false; - this.notification.notificationFailed(this.currentTab, 'OnboardingState', id); - }else if (data.responseDescriptor.progress < 100) { - this.isUpdate = true; - setTimeout(() => { - this.queryProgress(this.jobId, id); - }, 5000) - } else { - res(data); - this.isUpdate = false; - this.notification.notificationSuccess(this.currentTab, 'OnboardingState', id); - } - return false - }) - }) - return mypromise; - } - - /* delete button */ - showDeleteConfirm(pkgid: string): void { - this.modalService.confirm({ - nzTitle: 'Do you Want to delete these items?', - nzContent: 'Do you Want to delete these items?', - nzOkText: 'Yes', - nzCancelText: 'No', - nzOnOk: () => new Promise((resolve) => { - this.deleteService(pkgid, resolve); - }).catch(() => console.log('Oops errors!')) - }); - } - - //delete nsItem - deleteService(pkgid, resolve) { - let API: string; - if(this.currentTab === 'NS'){ - API = 'deleteNsIdData'; - }else if(this.currentTab === 'VNF'){ - API = 'deleteVnfIdData'; - }else{ - API = 'deletePnfIdData'; - } - this.myhttp[API](pkgid) - .subscribe((data) => { - this.notification.notificationSuccess(this.currentTab, 'OnboardingState', pkgid); - resolve() - //refresh list after successful deletion - switch(this.currentTab){ - case 'NS': - this.getTableData(); - break - case 'VNF': - this.getTableVnfData(); - break - case 'PNF': - this.getTablePnfData(); - break - } - }, (err) => { - console.log(err); - this.notification.notificationFailed(this.currentTab, 'OnboardingState', pkgid); - }) - } -} diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.html b/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.html new file mode 100644 index 00000000..91062607 --- /dev/null +++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.html @@ -0,0 +1,3 @@ +

    + slicing-management works! +

    diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.less b/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.less new file mode 100644 index 00000000..e69de29b diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.spec.ts b/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.spec.ts new file mode 100644 index 00000000..25fbf515 --- /dev/null +++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SlicingManagementComponent } from './slicing-management.component'; + +describe('SlicingManagementComponent', () => { + let component: SlicingManagementComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SlicingManagementComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SlicingManagementComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.ts b/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.ts new file mode 100644 index 00000000..ae2133de --- /dev/null +++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-management.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-slicing-management', + templateUrl: './slicing-management.component.html', + styleUrls: ['./slicing-management.component.less'] +}) +export class SlicingManagementComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/usecaseui-portal/src/assets/i18n/cn.json b/usecaseui-portal/src/assets/i18n/cn.json index f1dcc066..e2938833 100644 --- a/usecaseui-portal/src/assets/i18n/cn.json +++ b/usecaseui-portal/src/assets/i18n/cn.json @@ -1,139 +1,141 @@ { - "app-component":"--:", - "i18nTextDefine_Home":"首页", - "i18nTextDefine_Customer":"用户", - "i18nTextDefine_Monitor":"监控", - "i18nTextDefine_Services":"服务", - "i18nTextDefine_ServicesList":"服务列表", - "i18nTextDefine_PackageManagement":"包管理", - "i18nTextDefine_Alarm":"告警", - "i18nTextDefine_Performance":"性能", - "i18nTextDefine_NetworkTopology":"网络拓扑", + "app-component": "--:", + "i18nTextDefine_Home": "首页", + "i18nTextDefine_Customer": "用户", + "i18nTextDefine_Monitor": "监控", + "i18nTextDefine_Monitor_5g": "5G 切片", + "i18nTextDefine_Services": "服务", + "i18nTextDefine_ServicesList": "服务列表", + "i18nTextDefine_Mangement_5g": "5G切片管理", + "i18nTextDefine_PackageManagement": "包管理", + "i18nTextDefine_Alarm": "告警", + "i18nTextDefine_Performance": "性能", + "i18nTextDefine_NetworkTopology": "网络拓扑", - "home-component":"--:", - "i18nTextDefine_SERVICES":"服务", - "i18nTextDefine_PACKAGE":"包", - "i18nTextDefine_Total":"总数", - "i18nTextDefine_cutomers_and":"用户和", - "i18nTextDefine_service_instance":"服务实例", - "i18nTextDefine_ViewDetails":"查看详情", - "i18nTextDefine_ALARM":"告警", - "i18nTextDefine_VNF_Alarm":"VNF告警", - "i18nTextDefine_VM_Alarm":"VM告警", - "i18nTextDefine_VM_Performance":"VM性能", + "home-component": "--:", + "i18nTextDefine_SERVICES": "服务", + "i18nTextDefine_PACKAGE": "包", + "i18nTextDefine_Total": "总数", + "i18nTextDefine_cutomers_and": "用户和", + "i18nTextDefine_service_instance": "服务实例", + "i18nTextDefine_ViewDetails": "查看详情", + "i18nTextDefine_ALARM": "告警", + "i18nTextDefine_VNF_Alarm": "VNF告警", + "i18nTextDefine_VM_Alarm": "VM告警", + "i18nTextDefine_VM_Performance": "VM性能", - "services-list-component":"--:", - "i18nTextDefine_ServiceType":"服务类型", - "i18nTextDefine_Create":"创建", - "i18nTextDefine_Failed":"失败", - "i18nTextDefine_Success":"成功", - "i18nTextDefine_InProgress":"执行中", - "i18nTextDefine_End_To_End_Service":"端到端服务", - "i18nTextDefine_Network_Service":"NS服务", - "i18nTextDefine_Cross_Domain_and_Cross_Layer_VPN":"CCVPN服务", - "i18nTextDefine_NO":"序号", - "i18nTextDefine_Name":"名称", - "i18nTextDefine_Description":"描述", - "i18nTextDefine_UseCase":"场景用例", - "i18nTextDefine_Status":"状态", - "i18nTextDefine_Action":"动作", - "i18nTextDefine_Template":"模板", - "i18nTextDefine_Orchestrator":"编排器", - "i18nTextDefine_ServiceCreation":"服务创建", - "i18nTextDefine_Cancel":"取消", - "i18nTextDefine_modelOk":"确认", - "i18nTextDefine_Scale":"缩扩容", - "i18nTextDefine_SureScale":"您确定缩扩容此实例吗?", - "i18nTextDefine_InstanceName":"实例名称", - "i18nTextDefine_InstanceID":"实例ID", - "i18nTextDefine_ScaleType":"缩扩容类型", - "i18nTextDefine_AspectId":"详情Id", - "i18nTextDefine_Number_Of_Steps":"级数", - "i18nTextDefine_ScalingDirection":"缩扩容方向", - "i18nTextDefine_delete":"删除", - "i18nTextDefine_SureDelete":"您确定删除此实例吗?", - "i18nTextDefine_terminationType":"终止类型", - "i18nTextDefine_graceful":"优雅", - "i18nTextDefine_forceful":"强制", - "i18nTextDefine_gracefulTerminationTimeout":"优雅终止超时时间", - "i18nTextDefine_Heal":"自愈", - "i18nTextDefine_SureHeal":"您确定自愈此实例吗?", - "i18nTextDefine_degreeHealing":"自愈程度", - "i18nTextDefine_actionsHealing":"自愈行为", - "i18nTextDefine_healScript":"自愈脚本", - "i18nTextDefine_additionalParamsforNs":"NS附加参数", - "i18nTextDefine_cause":"原因", - "i18nTextDefine_action":"动作", - "i18nTextDefine_actionvminfo":"操作虚拟机信息", - "i18nTextDefine_Update":"更新", - "i18nTextDefine_InstanceCreationStarting":"创建开始", - "i18nTextDefine_InstanceCreatedSuccessfully":"创建成功", - "i18nTextDefine_InstanceCreationFailed":"创建失败!", - "i18nTextDefine_InstanceTeminationStarting":"删除开始", - "i18nTextDefine_InstanceTeminatedSuccessfully":"删除成功", - "i18nTextDefine_InstanceTeminationFailed":" 删除失败", - "i18nTextDefine_InstanceScaleStarting":"缩扩容开始", - "i18nTextDefine_InstanceScaledSuccessfully":"缩扩容成功", - "i18nTextDefine_InstanceScaleFailed":"缩扩容失败", - "i18nTextDefine_InstanceHealingStarting":"自愈开始", - "i18nTextDefine_InstanceHealedSuccessfully":"自愈成功", - "i18nTextDefine_InstanceHealingFailed":"自愈失败", - "i18nTextDefine_InstanceUpdateStarting":"更新开始", - "i18nTextDefine_InstanceUpdatedSuccessfully":"更新成功", - "i18nTextDefine_InstanceUpdateFailed":"更新失败", - "i18nTextDefine_Close":"关闭", + "services-list-component": "--:", + "i18nTextDefine_ServiceType": "服务类型", + "i18nTextDefine_Create": "创建", + "i18nTextDefine_Failed": "失败", + "i18nTextDefine_Success": "成功", + "i18nTextDefine_InProgress": "执行中", + "i18nTextDefine_End_To_End_Service": "端到端服务", + "i18nTextDefine_Network_Service": "NS服务", + "i18nTextDefine_Cross_Domain_and_Cross_Layer_VPN": "CCVPN服务", + "i18nTextDefine_NO": "序号", + "i18nTextDefine_Name": "名称", + "i18nTextDefine_Description": "描述", + "i18nTextDefine_UseCase": "场景用例", + "i18nTextDefine_Status": "状态", + "i18nTextDefine_Action": "动作", + "i18nTextDefine_Template": "模板", + "i18nTextDefine_Orchestrator": "编排器", + "i18nTextDefine_ServiceCreation": "服务创建", + "i18nTextDefine_Cancel": "取消", + "i18nTextDefine_modelOk": "确认", + "i18nTextDefine_Scale": "缩扩容", + "i18nTextDefine_SureScale": "您确定缩扩容此实例吗?", + "i18nTextDefine_InstanceName": "实例名称", + "i18nTextDefine_InstanceID": "实例ID", + "i18nTextDefine_ScaleType": "缩扩容类型", + "i18nTextDefine_AspectId": "详情Id", + "i18nTextDefine_Number_Of_Steps": "级数", + "i18nTextDefine_ScalingDirection": "缩扩容方向", + "i18nTextDefine_delete": "删除", + "i18nTextDefine_SureDelete": "您确定删除此实例吗?", + "i18nTextDefine_terminationType": "终止类型", + "i18nTextDefine_graceful": "优雅", + "i18nTextDefine_forceful": "强制", + "i18nTextDefine_gracefulTerminationTimeout": "优雅终止超时时间", + "i18nTextDefine_Heal": "自愈", + "i18nTextDefine_SureHeal": "您确定自愈此实例吗?", + "i18nTextDefine_degreeHealing": "自愈程度", + "i18nTextDefine_actionsHealing": "自愈行为", + "i18nTextDefine_healScript": "自愈脚本", + "i18nTextDefine_additionalParamsforNs": "NS附加参数", + "i18nTextDefine_cause": "原因", + "i18nTextDefine_action": "动作", + "i18nTextDefine_actionvminfo": "操作虚拟机信息", + "i18nTextDefine_Update": "更新", + "i18nTextDefine_InstanceCreationStarting": "创建开始", + "i18nTextDefine_InstanceCreatedSuccessfully": "创建成功", + "i18nTextDefine_InstanceCreationFailed": "创建失败!", + "i18nTextDefine_InstanceTeminationStarting": "删除开始", + "i18nTextDefine_InstanceTeminatedSuccessfully": "删除成功", + "i18nTextDefine_InstanceTeminationFailed": " 删除失败", + "i18nTextDefine_InstanceScaleStarting": "缩扩容开始", + "i18nTextDefine_InstanceScaledSuccessfully": "缩扩容成功", + "i18nTextDefine_InstanceScaleFailed": "缩扩容失败", + "i18nTextDefine_InstanceHealingStarting": "自愈开始", + "i18nTextDefine_InstanceHealedSuccessfully": "自愈成功", + "i18nTextDefine_InstanceHealingFailed": "自愈失败", + "i18nTextDefine_InstanceUpdateStarting": "更新开始", + "i18nTextDefine_InstanceUpdatedSuccessfully": "更新成功", + "i18nTextDefine_InstanceUpdateFailed": "更新失败", + "i18nTextDefine_Close": "关闭", "i18nTextDefine_Templateparsingfailed": "模板解析失败", - "ccvpn-creation-component":"--:", - "i18nTextDefine_InstanceCreation":"实例创建", - "i18nTextDefine_InstanceTopology":"实例拓扑", - "i18nTextDefine_Add":"新增", - "i18nTextDefine_Base":"基本信息", - "i18nTextDefine_templateInputs":"模板输入", + "ccvpn-creation-component": "--:", + "i18nTextDefine_InstanceCreation": "实例创建", + "i18nTextDefine_InstanceTopology": "实例拓扑", + "i18nTextDefine_Add": "新增", + "i18nTextDefine_Base": "基本信息", + "i18nTextDefine_templateInputs": "模板输入", - "ccvpn-detail-component":"--:", - "i18nTextDefine_InstanceDetail":"实例详情", + "ccvpn-detail-component": "--:", + "i18nTextDefine_InstanceDetail": "实例详情", - "onboard-vnf-vm-component":"--:", - "i18nTextDefine_Click_CSAR_File":"单击此处或拖入CSAR文件", - "i18nTextDefine_Uploaded_files":"已上传文件", - "i18nTextDefine_Uploading":"上传中", - "i18nTextDefine_StartUpload":"开始上传", - "i18nTextDefine_Nofileuploading":"没有文件正在上传。", - "i18nTextDefine_File_upload_completed":"文件上传完毕", - "i18nTextDefine_File_upload_failed":"文件上传失败", - "i18nTextDefine_Version":"版本", - "i18nTextDefine_OnboardingState":"分发状态", - "i18nTextDefine_OperationalState":"操作状态", - "i18nTextDefine_UsageState":"使用状态", - "i18nTextDefine_Operationbutton":"操作按钮", + "onboard-vnf-vm-component": "--:", + "i18nTextDefine_Click_CSAR_File": "单击此处或拖入CSAR文件", + "i18nTextDefine_Uploaded_files": "已上传文件", + "i18nTextDefine_Uploading": "上传中", + "i18nTextDefine_StartUpload": "开始上传", + "i18nTextDefine_Nofileuploading": "没有文件正在上传。", + "i18nTextDefine_File_upload_completed": "文件上传完毕", + "i18nTextDefine_File_upload_failed": "文件上传失败", + "i18nTextDefine_Version": "版本", + "i18nTextDefine_OnboardingState": "分发状态", + "i18nTextDefine_OperationalState": "操作状态", + "i18nTextDefine_UsageState": "使用状态", + "i18nTextDefine_Operationbutton": "操作按钮", - "management-component":"--:", - "i18nTextDefine_Create_initial_customer":"创建初始用户", - "i18nTextDefine_Customer_not_in_ONAP":"ONAP尚未存在已创建用户", - "i18nTextDefine_CreateCustomer":"请创建用户及其服务类型", - "i18nTextDefine_Input_customerName":"输入用户名称", + "management-component": "--:", + "i18nTextDefine_Create_initial_customer": "创建初始用户", + "i18nTextDefine_Customer_not_in_ONAP": "ONAP尚未存在已创建用户", + "i18nTextDefine_CreateCustomer": "请创建用户及其服务类型", + "i18nTextDefine_Input_customerName": "输入用户名称", - "customer-component":"--:", - "i18nTextDefine_Instance_Count_of_Customer":"用户实例计数", - "i18nTextDefine_users":"用户", - "i18nTextDefine_Instance_Count_of_ServiceType":"服务类型实例计数", - "i18nTextDefine_Input_ServicesType":"输入服务类型", - "i18nTextDefine_Input_Sure_deleteCustomer":"您确定删除此用户吗?", - "i18nTextDefine_Input_Sure_deleteServiceType":"您确定删除此服务类型吗?", - "i18nTextDefine_CustomerName":"用户名称", - "i18nTextDefine_CustomerID":"用户ID", + "customer-component": "--:", + "i18nTextDefine_Instance_Count_of_Customer": "用户实例计数", + "i18nTextDefine_users": "用户", + "i18nTextDefine_Instance_Count_of_ServiceType": "服务类型实例计数", + "i18nTextDefine_Input_ServicesType": "输入服务类型", + "i18nTextDefine_Input_Sure_deleteCustomer": "您确定删除此用户吗?", + "i18nTextDefine_Input_Sure_deleteServiceType": "您确定删除此服务类型吗?", + "i18nTextDefine_CustomerName": "用户名称", + "i18nTextDefine_CustomerID": "用户ID", - "ccvpn-network-component":"--:", - "i18nTextDefine_CreateLink":"添加链接", - "i18nTextDefine_SetAttribtes":"设置属性", - "i18nTextDefine_LinkName":"链接名称", - "i18nTextDefine_LeftPort":"左侧端口", - "i18nTextDefine_Network":"网络", - "i18nTextDefine_Node":"节点", - "i18nTextDefine_TerminalPoint":"终端", - "i18nTextDefine_RightPort":"右侧端口", - "i18nTextDefine_PartnerNetwork":"伙伴网络", - "i18nTextDefine_HostUrl":"主机网址", - "i18nTextDefine_deleteLink":"删除链接" + "ccvpn-network-component": "--:", + "i18nTextDefine_CreateLink": "添加链接", + "i18nTextDefine_SetAttribtes": "设置属性", + "i18nTextDefine_LinkName": "链接名称", + "i18nTextDefine_LeftPort": "左侧端口", + "i18nTextDefine_Network": "网络", + "i18nTextDefine_Node": "节点", + "i18nTextDefine_TerminalPoint": "终端", + "i18nTextDefine_RightPort": "右侧端口", + "i18nTextDefine_PartnerNetwork": "伙伴网络", + "i18nTextDefine_HostUrl": "主机网址", + "i18nTextDefine_deleteLink": "删除链接" } \ No newline at end of file diff --git a/usecaseui-portal/src/assets/i18n/en.json b/usecaseui-portal/src/assets/i18n/en.json index 5b5626e5..dcc1c924 100644 --- a/usecaseui-portal/src/assets/i18n/en.json +++ b/usecaseui-portal/src/assets/i18n/en.json @@ -1,139 +1,141 @@ { - "app-component":"--:", - "i18nTextDefine_Home":"Home", - "i18nTextDefine_Customer":"Customer", - "i18nTextDefine_Monitor":"Monitor", - "i18nTextDefine_Services":"Services", - "i18nTextDefine_ServicesList":"Lifecycle Management", - "i18nTextDefine_PackageManagement":"Package Management", - "i18nTextDefine_Alarm":"Alarm", - "i18nTextDefine_Performance":"Performance", - "i18nTextDefine_NetworkTopology":"Network Topology", + "app-component": "--:", + "i18nTextDefine_Home": "Home", + "i18nTextDefine_Customer": "Customer", + "i18nTextDefine_Monitor": "Monitor", + "i18nTextDefine_Monitor_5g": "5G Slicing", + "i18nTextDefine_Services": "Services", + "i18nTextDefine_ServicesList": "Lifecycle Management", + "i18nTextDefine_Mangement_5g": "5G Slicing Management", + "i18nTextDefine_PackageManagement": "Package Management", + "i18nTextDefine_Alarm": "Alarm", + "i18nTextDefine_Performance": "Performance", + "i18nTextDefine_NetworkTopology": "Network Topology", - "home-component":"--:", - "i18nTextDefine_SERVICES":"SERVICES", - "i18nTextDefine_PACKAGE":"PACKAGE", - "i18nTextDefine_Total":"Total", - "i18nTextDefine_cutomers_and":"cutomers and", - "i18nTextDefine_service_instance":"Service instance", - "i18nTextDefine_ViewDetails":"View Details", - "i18nTextDefine_ALARM":"ALARM", - "i18nTextDefine_VNF_Alarm":"VNF Alarm", - "i18nTextDefine_VM_Alarm":"VM Alarm", - "i18nTextDefine_VM_Performance":"VM PERFORMANCE", + "home-component": "--:", + "i18nTextDefine_SERVICES": "SERVICES", + "i18nTextDefine_PACKAGE": "PACKAGE", + "i18nTextDefine_Total": "Total", + "i18nTextDefine_cutomers_and": "cutomers and", + "i18nTextDefine_service_instance": "Service instance", + "i18nTextDefine_ViewDetails": "View Details", + "i18nTextDefine_ALARM": "ALARM", + "i18nTextDefine_VNF_Alarm": "VNF Alarm", + "i18nTextDefine_VM_Alarm": "VM Alarm", + "i18nTextDefine_VM_Performance": "VM PERFORMANCE", - "services-list-component":"--:", - "i18nTextDefine_ServiceType":"Service Type", - "i18nTextDefine_Create":"Create", - "i18nTextDefine_Failed":"Failed", - "i18nTextDefine_Success":"Success", - "i18nTextDefine_InProgress":"In Progress", - "i18nTextDefine_End_To_End_Service":"End To End Service", - "i18nTextDefine_Network_Service":"Network Service", - "i18nTextDefine_Cross_Domain_and_Cross_Layer_VPN":"Cross Domain and Cross Layer VPN", - "i18nTextDefine_NO":"NO", - "i18nTextDefine_Name":"Name", - "i18nTextDefine_Description":"Description", - "i18nTextDefine_UseCase":"Use Case", - "i18nTextDefine_Status":"Status", - "i18nTextDefine_Action":"Action", - "i18nTextDefine_Template":"Template", - "i18nTextDefine_Orchestrator":"Orchestrator", - "i18nTextDefine_ServiceCreation":"Service Creation", - "i18nTextDefine_Cancel":"Cancel", - "i18nTextDefine_modelOk":"OK", - "i18nTextDefine_Scale":"Scale", - "i18nTextDefine_SureScale":"Are you sure scale this instance?", - "i18nTextDefine_InstanceName":"Instance Name", - "i18nTextDefine_InstanceID":"Instance ID", - "i18nTextDefine_ScaleType":"Scale Type", - "i18nTextDefine_AspectId":"AspectId", - "i18nTextDefine_Number_Of_Steps":"Number Of Steps", - "i18nTextDefine_ScalingDirection":"Scaling Direction", - "i18nTextDefine_delete":"Delete", - "i18nTextDefine_SureDelete":"Are you sure delete this instance?", - "i18nTextDefine_terminationType":"Termination Type", - "i18nTextDefine_graceful":"graceful", - "i18nTextDefine_forceful":"forceful", - "i18nTextDefine_gracefulTerminationTimeout":"graceful Termination Timeout", - "i18nTextDefine_Heal":"Heal", - "i18nTextDefine_SureHeal":"Are you sure heal this instance?", - "i18nTextDefine_degreeHealing":"degreeHealing", - "i18nTextDefine_actionsHealing":"actionsHealing", - "i18nTextDefine_healScript":"healScript", - "i18nTextDefine_additionalParamsforNs":"additional Params for NS", - "i18nTextDefine_cause":"cause", - "i18nTextDefine_action":"action", - "i18nTextDefine_actionvminfo":"actionvminfo", - "i18nTextDefine_Update":"Update", - "i18nTextDefine_InstanceCreationStarting":"instance creation is starting.", - "i18nTextDefine_InstanceCreatedSuccessfully":"instance was created successfully.", - "i18nTextDefine_InstanceCreationFailed":"instance creation failed!!!", - "i18nTextDefine_InstanceTeminationStarting":"instance temination is starting.", - "i18nTextDefine_InstanceTeminatedSuccessfully":"instance was teminated successfully.", - "i18nTextDefine_InstanceTeminationFailed":" instance temination failed!!!", - "i18nTextDefine_InstanceScaleStarting":"instance scale is starting.", - "i18nTextDefine_InstanceScaledSuccessfully":"instance was scaled successfully.", - "i18nTextDefine_InstanceScaleFailed":"instance scale failed!!!", - "i18nTextDefine_InstanceHealingStarting":" instance healing is starting.", - "i18nTextDefine_InstanceHealedSuccessfully":"instance was healed successfully.", - "i18nTextDefine_InstanceHealingFailed":"instance healing failed!!!", - "i18nTextDefine_InstanceUpdateStarting":"instance update is starting.", - "i18nTextDefine_InstanceUpdatedSuccessfully":"instance was updated successfully.", - "i18nTextDefine_InstanceUpdateFailed":"instance update failed!!!", - "i18nTextDefine_Close":"close", + "services-list-component": "--:", + "i18nTextDefine_ServiceType": "Service Type", + "i18nTextDefine_Create": "Create", + "i18nTextDefine_Failed": "Failed", + "i18nTextDefine_Success": "Success", + "i18nTextDefine_InProgress": "In Progress", + "i18nTextDefine_End_To_End_Service": "End To End Service", + "i18nTextDefine_Network_Service": "Network Service", + "i18nTextDefine_Cross_Domain_and_Cross_Layer_VPN": "Cross Domain and Cross Layer VPN", + "i18nTextDefine_NO": "NO", + "i18nTextDefine_Name": "Name", + "i18nTextDefine_Description": "Description", + "i18nTextDefine_UseCase": "Use Case", + "i18nTextDefine_Status": "Status", + "i18nTextDefine_Action": "Action", + "i18nTextDefine_Template": "Template", + "i18nTextDefine_Orchestrator": "Orchestrator", + "i18nTextDefine_ServiceCreation": "Service Creation", + "i18nTextDefine_Cancel": "Cancel", + "i18nTextDefine_modelOk": "OK", + "i18nTextDefine_Scale": "Scale", + "i18nTextDefine_SureScale": "Are you sure scale this instance?", + "i18nTextDefine_InstanceName": "Instance Name", + "i18nTextDefine_InstanceID": "Instance ID", + "i18nTextDefine_ScaleType": "Scale Type", + "i18nTextDefine_AspectId": "AspectId", + "i18nTextDefine_Number_Of_Steps": "Number Of Steps", + "i18nTextDefine_ScalingDirection": "Scaling Direction", + "i18nTextDefine_delete": "Delete", + "i18nTextDefine_SureDelete": "Are you sure delete this instance?", + "i18nTextDefine_terminationType": "Termination Type", + "i18nTextDefine_graceful": "graceful", + "i18nTextDefine_forceful": "forceful", + "i18nTextDefine_gracefulTerminationTimeout": "graceful Termination Timeout", + "i18nTextDefine_Heal": "Heal", + "i18nTextDefine_SureHeal": "Are you sure heal this instance?", + "i18nTextDefine_degreeHealing": "degreeHealing", + "i18nTextDefine_actionsHealing": "actionsHealing", + "i18nTextDefine_healScript": "healScript", + "i18nTextDefine_additionalParamsforNs": "additional Params for NS", + "i18nTextDefine_cause": "cause", + "i18nTextDefine_action": "action", + "i18nTextDefine_actionvminfo": "actionvminfo", + "i18nTextDefine_Update": "Update", + "i18nTextDefine_InstanceCreationStarting": "instance creation is starting.", + "i18nTextDefine_InstanceCreatedSuccessfully": "instance was created successfully.", + "i18nTextDefine_InstanceCreationFailed": "instance creation failed!!!", + "i18nTextDefine_InstanceTeminationStarting": "instance temination is starting.", + "i18nTextDefine_InstanceTeminatedSuccessfully": "instance was teminated successfully.", + "i18nTextDefine_InstanceTeminationFailed": " instance temination failed!!!", + "i18nTextDefine_InstanceScaleStarting": "instance scale is starting.", + "i18nTextDefine_InstanceScaledSuccessfully": "instance was scaled successfully.", + "i18nTextDefine_InstanceScaleFailed": "instance scale failed!!!", + "i18nTextDefine_InstanceHealingStarting": " instance healing is starting.", + "i18nTextDefine_InstanceHealedSuccessfully": "instance was healed successfully.", + "i18nTextDefine_InstanceHealingFailed": "instance healing failed!!!", + "i18nTextDefine_InstanceUpdateStarting": "instance update is starting.", + "i18nTextDefine_InstanceUpdatedSuccessfully": "instance was updated successfully.", + "i18nTextDefine_InstanceUpdateFailed": "instance update failed!!!", + "i18nTextDefine_Close": "close", "i18nTextDefine_Templateparsingfailed": "Template parsing failed", - "ccvpn-creation-component":"--:", - "i18nTextDefine_InstanceCreation":"Instance Creation", - "i18nTextDefine_InstanceTopology":"Instance Topology", - "i18nTextDefine_Add":"Add", - "i18nTextDefine_Base":"Base", - "i18nTextDefine_templateInputs":"Template Inputs", + "ccvpn-creation-component": "--:", + "i18nTextDefine_InstanceCreation": "Instance Creation", + "i18nTextDefine_InstanceTopology": "Instance Topology", + "i18nTextDefine_Add": "Add", + "i18nTextDefine_Base": "Base", + "i18nTextDefine_templateInputs": "Template Inputs", - "ccvpn-detail-component":"--:", - "i18nTextDefine_InstanceDetail":"Instance Detail", + "ccvpn-detail-component": "--:", + "i18nTextDefine_InstanceDetail": "Instance Detail", - "onboard-vnf-vm-component":"--:", - "i18nTextDefine_Click_CSAR_File":"Click or drag CSAR File here", - "i18nTextDefine_Uploaded_files":"Uploaded files", - "i18nTextDefine_Uploading":"Uploading", - "i18nTextDefine_StartUpload":"StartUpload", - "i18nTextDefine_Nofileuploading":"No file is uploading.", - "i18nTextDefine_File_upload_completed":"File upload completed", - "i18nTextDefine_File_upload_failed":"File upload failed", - "i18nTextDefine_Version":"Version", - "i18nTextDefine_OnboardingState":"Onboarding State", - "i18nTextDefine_OperationalState":"Operational State", - "i18nTextDefine_UsageState":"Usage State", - "i18nTextDefine_Operationbutton":"Operation button", + "onboard-vnf-vm-component": "--:", + "i18nTextDefine_Click_CSAR_File": "Click or drag CSAR File here", + "i18nTextDefine_Uploaded_files": "Uploaded files", + "i18nTextDefine_Uploading": "Uploading", + "i18nTextDefine_StartUpload": "StartUpload", + "i18nTextDefine_Nofileuploading": "No file is uploading.", + "i18nTextDefine_File_upload_completed": "File upload completed", + "i18nTextDefine_File_upload_failed": "File upload failed", + "i18nTextDefine_Version": "Version", + "i18nTextDefine_OnboardingState": "Onboarding State", + "i18nTextDefine_OperationalState": "Operational State", + "i18nTextDefine_UsageState": "Usage State", + "i18nTextDefine_Operationbutton": "Operation button", - "management-component":"--:", - "i18nTextDefine_Create_initial_customer":"Create initial customer", - "i18nTextDefine_Customer_not_in_ONAP":"Customer has not been created in ONAP", - "i18nTextDefine_CreateCustomer":"Please create customer and its service type", - "i18nTextDefine_Input_customerName":"Input customer name", + "management-component": "--:", + "i18nTextDefine_Create_initial_customer": "Create initial customer", + "i18nTextDefine_Customer_not_in_ONAP": "Customer has not been created in ONAP", + "i18nTextDefine_CreateCustomer": "Please create customer and its service type", + "i18nTextDefine_Input_customerName": "Input customer name", - "customer-component":"--:", - "i18nTextDefine_Instance_Count_of_Customer":"Instance Count of Customer", - "i18nTextDefine_users":"Users", - "i18nTextDefine_Instance_Count_of_ServiceType":"Instance Count of Service Type", - "i18nTextDefine_Input_ServicesType":"Input services type", - "i18nTextDefine_Input_Sure_deleteCustomer":"Are you sure delete this Customer ?", - "i18nTextDefine_Input_Sure_deleteServiceType":"Are you sure delete this Service Type ?", - "i18nTextDefine_CustomerName":"Customer Name", - "i18nTextDefine_CustomerID":"Customer ID", + "customer-component": "--:", + "i18nTextDefine_Instance_Count_of_Customer": "Instance Count of Customer", + "i18nTextDefine_users": "Users", + "i18nTextDefine_Instance_Count_of_ServiceType": "Instance Count of Service Type", + "i18nTextDefine_Input_ServicesType": "Input services type", + "i18nTextDefine_Input_Sure_deleteCustomer": "Are you sure delete this Customer ?", + "i18nTextDefine_Input_Sure_deleteServiceType": "Are you sure delete this Service Type ?", + "i18nTextDefine_CustomerName": "Customer Name", + "i18nTextDefine_CustomerID": "Customer ID", - "ccvpn-network-component":"--:", - "i18nTextDefine_CreateLink":"Create Link", - "i18nTextDefine_SetAttribtes":"Set Attribtes", - "i18nTextDefine_LinkName":"Link Name ", - "i18nTextDefine_LeftPort":"Left Port", - "i18nTextDefine_Network":"Network", - "i18nTextDefine_Node":"Node", - "i18nTextDefine_TerminalPoint":"Terminal Point", - "i18nTextDefine_RightPort":"Right Port", - "i18nTextDefine_PartnerNetwork":"Partner Network", - "i18nTextDefine_HostUrl":"Host Url", - "i18nTextDefine_DeleteLink":"Delete Link" + "ccvpn-network-component": "--:", + "i18nTextDefine_CreateLink": "Create Link", + "i18nTextDefine_SetAttribtes": "Set Attribtes", + "i18nTextDefine_LinkName": "Link Name ", + "i18nTextDefine_LeftPort": "Left Port", + "i18nTextDefine_Network": "Network", + "i18nTextDefine_Node": "Node", + "i18nTextDefine_TerminalPoint": "Terminal Point", + "i18nTextDefine_RightPort": "Right Port", + "i18nTextDefine_PartnerNetwork": "Partner Network", + "i18nTextDefine_HostUrl": "Host Url", + "i18nTextDefine_DeleteLink": "Delete Link" } \ No newline at end of file -- cgit 1.2.3-korg