1 import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2 import { SlicingTaskServices } from '../../../../../core/services/slicingTaskServices';
5 selector: 'app-slicing-task-model',
6 templateUrl: './slicing-task-model.component.html',
7 styleUrls: ['./slicing-task-model.component.less']
9 export class SlicingTaskModelComponent implements OnInit {
10 @Input() showDetail: boolean;
11 @Input() moduleTitle: string;
12 @Input() taskId: string;
13 @Output() cancel = new EventEmitter<boolean>();
15 constructor(private http: SlicingTaskServices) { }
18 checkDetail: any[] = [{}];
20 businessRequirement: any[] = [];
22 NSTinfo: object[] = [{}];
24 selectedServiceId: string;
25 selectedServiceName: string;
26 slicingInstances: any[];
27 loading: boolean = false;
29 slicingSubnet: any[] = [
53 isShowParams: boolean;
56 isDisabled: boolean = true;
61 if (this.showDetail) {
66 getautidInfo(): void {
67 this.http.getAuditInfo(this.taskId).subscribe( res => {
68 const { result_header: { result_code } } = res;
69 if (+result_code === 200) {
76 nst_info, nsi_nssi_info,
77 business_demand_info: { service_snssai }
90 an_coverage_area_ta_list,
94 cn_resource_sharing_level,
101 cn_area_traffic_cap_dl,
102 cn_area_traffic_cap_ul
105 this.checkDetail = [{ task_id, task_name, create_time, processing_status, service_snssai }];
107 this.businessRequirement = [business_demand_info];
109 this.NSTinfo = [nst_info];
111 this.selectedServiceId = suggest_nsi_id;
112 this.selectedServiceName = suggest_nsi_name;
113 this.slicingInstances = [{
114 service_instance_id: this.selectedServiceId,
115 service_instance_name: this.selectedServiceName
118 let subnetData = { an_suggest_nssi_id, an_suggest_nssi_name, tn_suggest_nssi_id, tn_suggest_nssi_name, cn_suggest_nssi_id, cn_suggest_nssi_name};
119 this.subnetDataFormatting(subnetData);
120 this.slicingSubnet[0].params = { an_latency, an_5qi, an_coverage_area_ta_list }
121 this.slicingSubnet[1].params = { tn_latency, tn_bandwidth };
122 this.slicingSubnet[2].params = {
124 cn_resource_sharing_level,
125 cn_ue_mobility_level,
127 cn_max_number_of_ues,
131 cn_area_traffic_cap_dl,
132 cn_area_traffic_cap_ul
138 getSlicingData ( bool: boolean): void {
140 if (bool && this.slicingInstances.length === 1) {
141 this.http.getSlicingInstance('1', '10').subscribe ( res => {
142 this.loading = false;
143 const { result_header: { result_code }, result_body: { nsi_service_instances } } = res
144 if (+result_code === 200) {
145 this.slicingInstances = nsi_service_instances;
151 slicingInstanceChange ():void {
152 this.isDisabled = true;
154 this.http.getSlicingSubnetInstance(this.selectedServiceId).subscribe( res => {
155 const { result_header: { result_code }, result_body} = res;
156 if (+result_code === 200) {
157 this.subnetDataFormatting(result_body)
160 this.slicingInstances.forEach (item => {
161 if (item.service_instance_id === this.selectedServiceId) {
162 this.selectedServiceName = item.service_instance_name;
167 subnetDataFormatting ( subnetData: any): void{
168 const { an_suggest_nssi_id, an_suggest_nssi_name, tn_suggest_nssi_id, tn_suggest_nssi_name, cn_suggest_nssi_id, cn_suggest_nssi_name } = subnetData;
169 this.slicingSubnet[0].slicingId = an_suggest_nssi_id;
170 this.slicingSubnet[0].slicingName = an_suggest_nssi_name;
171 this.slicingSubnet[0].instances = [{
172 service_instance_id: an_suggest_nssi_id,
173 service_instance_name: an_suggest_nssi_name
176 this.slicingSubnet[1].slicingId = tn_suggest_nssi_id;
177 this.slicingSubnet[1].slicingName = tn_suggest_nssi_name;
178 this.slicingSubnet[1].instances = [{
179 service_instance_id: tn_suggest_nssi_id,
180 service_instance_name: tn_suggest_nssi_name
183 this.slicingSubnet[2].slicingId = cn_suggest_nssi_id;
184 this.slicingSubnet[2].slicingName = cn_suggest_nssi_name;
185 this.slicingSubnet[2].instances = [{
186 service_instance_id: cn_suggest_nssi_id,
187 service_instance_name: cn_suggest_nssi_name
191 resetSlicingInstance (): void {
192 this.selectedServiceId = '';
193 this.selectedServiceName = '';
194 this.slicingSubnet.map( item => {
196 item.slicingName = '';
198 this.isDisabled = false;
201 getSubnetInstances (bool: boolean, instance: any): void {
202 if(bool && instance.instances.length === 1) {
203 this.http.getSubnetInContext(instance.context, '1', '10').subscribe( res => {
204 const { result_header: { result_code }, result_body } = res;
205 if (+result_code === 200) {
206 this.slicingSubnet.map (item => {
207 if (item.context === instance.context) {
208 item.instances = result_body.nssi_service_instances;
216 slicingSubnetChange (instance: any): void {
217 instance.instances.forEach( item => {
218 if (instance.slicingId === item.service_instance_id) {
219 instance.slicingName = item.service_instance_name;
224 restSubnetInstance (instance: any): void {
225 instance.slicingId = '';
226 instance.slicingName = '';
229 showParamsModel (item: any): void {
230 this.isShowParams = true;
231 this.paramsTitle = item.title;
232 this.params = item.params
235 changeParams (params: any): void {
236 const index = this.paramsTitle === '无线域' ? 0 : (this.paramsTitle === '传输域' ? 1 : 2);
237 this.slicingSubnet[index].params = params
241 this.showDetail = false;
242 this.cancel.emit(this.showDetail);
245 const { selectedServiceId, selectedServiceName, slicingSubnet, checkDetail, businessRequirement, NSTinfo } = this;
246 const nsi_nssi_info: object = {
247 suggest_nsi_id: selectedServiceId,
248 suggest_nsi_name: selectedServiceName,
249 an_suggest_nssi_id: slicingSubnet[0].slicingId,
250 an_suggest_nssi_name: slicingSubnet[0].slicingName,
251 ...slicingSubnet[0].params,
252 tn_suggest_nssi_id: slicingSubnet[1].slicingId,
253 tn_suggest_nssi_name: slicingSubnet[1].slicingName,
254 ...slicingSubnet[1].params,
255 cn_suggest_nssi_id: slicingSubnet[2].slicingId,
256 cn_suggest_nssi_name: slicingSubnet[2].slicingName,
257 ...slicingSubnet[2].params,
259 let reqBody = {...checkDetail[0], business_demand_info: businessRequirement[0], nst_info: NSTinfo[0], nsi_nssi_info};
260 delete reqBody.service_snssai;
261 this.http.submitSlicing(reqBody).subscribe (res => {
262 const { result_header: { result_code } } = res;
263 if (+result_code === 200) {