1 import {Component, OnInit, ViewChild} from '@angular/core';
2 import {SlicingTaskServices} from '.././../../../../../core/services/slicingTaskServices';
3 import {BUSINESS_STATUS} from '../../../../../../../constants/constants';
4 import { NzModalService } from 'ng-zorro-antd';
5 import { SlicingBusinessModelComponent } from '../slicing-business-model/slicing-business-model.component';
7 selector: 'app-slicing-business-table',
8 templateUrl: './slicing-business-table.component.html',
9 styleUrls: ['./slicing-business-table.component.less']
11 export class SlicingBusinessTableComponent implements OnInit {
14 private myhttp: SlicingTaskServices,
15 private modalService: NzModalService
20 this.getBusinessList()
23 this.progressingTimer.forEach((item) => {
24 clearInterval(item.timer);
27 selectedValue:string = BUSINESS_STATUS[0];
28 listOfData: any[] = [];
29 pageIndex: number = 1;
30 pageSize: number = 10;
33 isSelect: boolean = false;
34 statusOptions: any[] = BUSINESS_STATUS;
35 progressingTimer :any[] = [];
36 @ViewChild('notification') notification1: any;
38 getBusinessList (): void{
40 this.isSelect = false;
42 pageNo: this.pageIndex,
43 pageSize: this.pageSize
45 if(this.selectedValue !== BUSINESS_STATUS[0]){
46 paramsObj["businessStatus"] = this.selectedValue;
49 this.myhttp.getSlicingBusinessList(paramsObj,this.isSelect).subscribe (res => {
50 const { result_header: { result_code }, result_body: { slicing_business_list,record_number } } = res;
51 if (+result_code === 200) {
52 this.total = record_number;
54 this.listOfData = slicing_business_list.map((item)=>{
55 if(item.last_operation_progress < 100){
56 let updata = (prodata) => {
57 item.last_operation_progress = prodata.operation_progress || item.last_operation_progress;
60 serviceId: item.service_instance_id
62 this.queryProgress(obj, updata).then((res) => {
63 item.last_operation_progress = 100;
64 item.orchestration_status = item.last_operation_type === 'activate'?'activated':item.last_operation_type === 'deactivated'?'deactivated':'terminated';
72 getListOfProcessingStatus(){
75 this.getBusinessList();
77 searchData(reset: boolean = false) {
78 this.getBusinessList();
80 switchChange(slicing,i){
81 this.modalService.confirm({
82 nzTitle: '<i>Do you Want to'+(slicing.orchestration_status === 'activated'?'deactivated':'activated')+ 'slicing business?</i>',
83 nzContent: '<b>Name:'+slicing.service_instance_name+'</b>',
85 this.notification1.notificationStart('slicing business', slicing.orchestration_status === 'activated'?'deactivate':'activated', slicing.service_instance_id);
87 serviceId:slicing.service_instance_id
89 if(slicing.orchestration_status === 'activated'){
90 this.changeActivate(paramsObj,false,slicing,"deactivate","deactivated")
92 this.changeActivate(paramsObj,true,slicing,"activate","activated");
97 let singleSlicing = Object.assign({},this.listOfData[i]);
98 this.listOfData[i] = singleSlicing;
99 this.listOfData = [...this.listOfData];
103 changeActivate(paramsObj,isActivate,slicing,activateValue,finished){
104 this.myhttp.changeActivateSlicingService(paramsObj,isActivate).subscribe (res => {
105 const { result_header: { result_code, result_message }, result_body: { operation_id } } = res;
106 if (+result_code === 200) {
107 slicing.last_operation_progress = 0;
108 slicing.orchestration_status = activateValue;
109 console.log(operation_id,"operation_id");
111 serviceId: slicing.service_instance_id
113 let updata = (prodata) => {
114 slicing.last_operation_progress = prodata.progress || 0;
115 slicing.orchestration_status = prodata.operation_type || activateValue;
117 this.queryProgress(obj, updata).then(() => {
118 slicing.last_operation_progress = 100;
119 slicing.orchestration_status = finished;
120 this.notification1.notificationSuccess('slicing business', finished, slicing.service_instance_id);
121 this.getBusinessList();
124 this.notification1.notificationFailed('slicing business', finished, slicing.service_instance_id);
125 console.error(result_message);
130 this.modalService.confirm({
131 nzTitle: 'Do you Want to Terminate slicing business?',
132 nzContent: '<b>Name: </b>'+slicing.service_instance_name,
134 this.notification1.notificationStart('slicing business', 'terminate', slicing.service_instance_id);
136 serviceId:slicing.service_instance_id
138 this.myhttp.terminateSlicingService(paramsObj).subscribe (res => {
139 const { result_header: { result_code, result_message }, result_body: { operation_id } } = res;
140 if (+result_code === 200) {
141 slicing.last_operation_progress = 0;
142 slicing.orchestration_status = 'delete';
143 console.log(operation_id,"operation_id");
145 serviceId: slicing.service_instance_id
147 let updata = (prodata) => {
148 slicing.last_operation_progress = prodata.progress || 0;
149 slicing.orchestration_status = prodata.operation_type || "delete";
151 this.queryProgress(obj, updata).then(() => {
152 slicing.last_operation_progress = 100;
153 slicing.orchestration_status = "terminated";
154 this.notification1.notificationSuccess('slicing business', 'terminate', slicing.service_instance_id);
155 this.getBusinessList();
158 this.notification1.notificationFailed('slicing business', 'terminate', slicing.service_instance_id);
159 console.error(result_message)
165 console.info('Cancel termination')
170 const BusinessModal = this.modalService.create({
172 nzContent: SlicingBusinessModelComponent,
177 businessId:data.service_instance_id
181 queryProgress(obj, callback) {
182 return new Promise( res => {
183 let requery = () => {
184 this.myhttp.getSlicingBusinessProgress(obj)
185 .subscribe((data) => {
186 if (data.result_body.operation_progress < 100) {
187 callback(data.result_body);
188 let progressSetTimeOut = setTimeout(() => {
191 this.progressingTimer.push({
193 timer:progressSetTimeOut
196 this.progressingTimer.forEach((item) => {
197 if(item.serviceId === obj.serviceId){
198 clearInterval(item.timer);
201 res(data.result_body);