1 import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2 import { SlicingTaskServices } from '../../../../../core/services/slicingTaskServices';
3 import { BUSINESS_REQUIREMENT } from '../../../../../../constants/constants';
6 selector: 'app-slicing-task-model',
7 templateUrl: './slicing-task-model.component.html',
8 styleUrls: ['./slicing-task-model.component.less']
10 export class SlicingTaskModelComponent implements OnInit {
11 @Input() showDetail: boolean;
12 @Input() moduleTitle: string;
13 @Input() taskId: string;
14 @Output() cancel = new EventEmitter<boolean>();
16 constructor(private http: SlicingTaskServices) { }
19 businessList: object[] = BUSINESS_REQUIREMENT;
21 checkDetail: any[] = [{}];
23 businessRequirement: any[] = [];
25 NSTinfo: object[] = [{}];
27 selectedServiceId: string;
28 selectedServiceName: string;
29 slicingInstances: any[];
30 loading: boolean = false;
32 slicingSubnet: any[] = [
56 isShowParams: boolean;
59 isDisabled: boolean = true;
64 if (this.showDetail) {
69 getautidInfo(): void {
70 this.http.getAuditInfo(this.taskId).subscribe( res => {
71 const { result_header: { result_code } } = res;
72 if (+result_code === 200) {
79 nst_info, nsi_nssi_info,
80 business_demand_info: { service_snssai }
93 an_coverage_area_ta_list,
97 cn_resource_sharing_level,
100 cn_max_number_of_ues,
104 cn_area_traffic_cap_dl,
105 cn_area_traffic_cap_ul
108 this.checkDetail = [{ task_id, task_name, create_time, processing_status, service_snssai }];
110 this.businessRequirement = [business_demand_info];
112 this.NSTinfo = [nst_info];
114 this.selectedServiceId = suggest_nsi_id;
115 this.selectedServiceName = suggest_nsi_name;
116 this.slicingInstances = [{
117 service_instance_id: this.selectedServiceId,
118 service_instance_name: this.selectedServiceName
121 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};
122 this.subnetDataFormatting(subnetData);
123 this.slicingSubnet[0].params = { an_latency, an_5qi, an_coverage_area_ta_list }
124 this.slicingSubnet[1].params = { tn_latency, tn_bandwidth };
125 this.slicingSubnet[2].params = {
127 cn_resource_sharing_level,
128 cn_ue_mobility_level,
130 cn_max_number_of_ues,
134 cn_area_traffic_cap_dl,
135 cn_area_traffic_cap_ul
141 getSlicingData ( bool: boolean): void {
143 if (bool && this.slicingInstances.length === 1) {
144 this.http.getSlicingInstance('1', '10').subscribe ( res => {
145 this.loading = false;
146 const { result_header: { result_code }, result_body: { nsi_service_instances } } = res
147 if (+result_code === 200) {
148 this.slicingInstances = nsi_service_instances;
154 slicingInstanceChange ():void {
155 this.isDisabled = true;
157 this.http.getSlicingSubnetInstance(this.selectedServiceId).subscribe( res => {
158 const { result_header: { result_code }, result_body} = res;
159 if (+result_code === 200) {
160 this.subnetDataFormatting(result_body)
163 this.slicingInstances.forEach (item => {
164 if (item.service_instance_id === this.selectedServiceId) {
165 this.selectedServiceName = item.service_instance_name;
170 subnetDataFormatting ( subnetData: any): void{
171 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;
172 this.slicingSubnet[0].slicingId = an_suggest_nssi_id;
173 this.slicingSubnet[0].slicingName = an_suggest_nssi_name;
174 this.slicingSubnet[0].instances = [{
175 service_instance_id: an_suggest_nssi_id,
176 service_instance_name: an_suggest_nssi_name
179 this.slicingSubnet[1].slicingId = tn_suggest_nssi_id;
180 this.slicingSubnet[1].slicingName = tn_suggest_nssi_name;
181 this.slicingSubnet[1].instances = [{
182 service_instance_id: tn_suggest_nssi_id,
183 service_instance_name: tn_suggest_nssi_name
186 this.slicingSubnet[2].slicingId = cn_suggest_nssi_id;
187 this.slicingSubnet[2].slicingName = cn_suggest_nssi_name;
188 this.slicingSubnet[2].instances = [{
189 service_instance_id: cn_suggest_nssi_id,
190 service_instance_name: cn_suggest_nssi_name
194 resetSlicingInstance (): void {
195 this.selectedServiceId = '';
196 this.selectedServiceName = '';
197 this.slicingSubnet.map( item => {
199 item.slicingName = '';
201 this.isDisabled = false;
204 getSubnetInstances (bool: boolean, instance: any): void {
205 if(bool && instance.instances.length === 1) {
206 this.http.getSubnetInContext(instance.context, '1', '10').subscribe( res => {
207 const { result_header: { result_code }, result_body } = res;
208 if (+result_code === 200) {
209 this.slicingSubnet.map (item => {
210 if (item.context === instance.context) {
211 item.instances = result_body.nssi_service_instances;
219 slicingSubnetChange (instance: any): void {
220 instance.instances.forEach( item => {
221 if (instance.slicingId === item.service_instance_id) {
222 instance.slicingName = item.service_instance_name;
227 restSubnetInstance (instance: any): void {
228 instance.slicingId = '';
229 instance.slicingName = '';
232 showParamsModel (item: any): void {
233 this.isShowParams = true;
234 this.paramsTitle = item.title;
235 this.params = item.params
238 changeParams (params: any): void {
239 const index = this.paramsTitle === '无线域' ? 0 : (this.paramsTitle === '传输域' ? 1 : 2);
240 this.slicingSubnet[index].params = params
244 this.showDetail = false;
245 this.cancel.emit(this.showDetail);
248 const { selectedServiceId, selectedServiceName, slicingSubnet, checkDetail, businessRequirement, NSTinfo } = this;
249 const nsi_nssi_info: object = {
250 suggest_nsi_id: selectedServiceId,
251 suggest_nsi_name: selectedServiceName,
252 an_suggest_nssi_id: slicingSubnet[0].slicingId,
253 an_suggest_nssi_name: slicingSubnet[0].slicingName,
254 ...slicingSubnet[0].params,
255 tn_suggest_nssi_id: slicingSubnet[1].slicingId,
256 tn_suggest_nssi_name: slicingSubnet[1].slicingName,
257 ...slicingSubnet[1].params,
258 cn_suggest_nssi_id: slicingSubnet[2].slicingId,
259 cn_suggest_nssi_name: slicingSubnet[2].slicingName,
260 ...slicingSubnet[2].params,
262 let reqBody = {...checkDetail[0], business_demand_info: businessRequirement[0], nst_info: NSTinfo[0], nsi_nssi_info};
263 delete reqBody.service_snssai;
264 this.http.submitSlicing(reqBody).subscribe (res => {
265 const { result_header: { result_code } } = res;
266 if (+result_code === 200) {