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: object[] = [{}];
23 businessRequirement: object[] = [{}];
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) {
73 const { task_id, task_name, create_timer, processing_status, business_demand_info, nst_info, nsi_nssi_info, business_demand_info: { service_snssai } } = res.result_body;
85 an_coverage_area_ta_list,
89 cn_resource_sharing_level,
96 cn_area_traffic_cap_dl,
97 cn_area_traffic_cap_ul
100 this.checkDetail = [{ task_id, task_name, create_timer, processing_status, service_snssai }];
102 this.businessRequirement = [business_demand_info];
103 this.NSTinfo = [nst_info];
105 this.selectedServiceId = suggest_nsi_id;
106 this.selectedServiceName = suggest_nsi_name;
107 this.slicingInstances = [{
108 service_instance_id: this.selectedServiceId,
109 service_instance_name: this.selectedServiceName
113 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};
114 this.subnetDataFormatting(subnetData);
115 this.slicingSubnet[0].params = { an_latency, an_5qi, an_coverage_area_ta_list }
117 this.slicingSubnet[1].params = { tn_latency, tn_bandwidth };
120 this.slicingSubnet[2].params = {
122 cn_resource_sharing_level,
123 cn_ue_mobility_level,
125 cn_max_number_of_ues,
129 cn_area_traffic_cap_dl,
130 cn_area_traffic_cap_ul
136 getSlicingData ( bool: boolean): void {
138 if (bool && this.slicingInstances.length === 1) {
139 this.http.getSlicingInstance('1', '10').subscribe ( res => {
140 this.loading = false;
141 const { result_header: { result_code }, result_body: { nsi_service_instances } } = res
142 if (+result_code === 200) {
143 this.slicingInstances = nsi_service_instances;
149 slicingInstanceChange ():void {
150 this.isDisabled = true;
152 this.http.getSlicingSubnetInstance(this.selectedServiceId).subscribe( res => {
153 const { result_header: { result_code }, result_body} = res;
154 if (+result_code === 200) {
155 this.subnetDataFormatting(result_body)
158 this.slicingInstances.forEach (item => {
159 if (item.service_instance_id === this.selectedServiceId) {
160 this.selectedServiceName = item.service_instance_name;
165 subnetDataFormatting ( subnetData: any): void{
166 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;
167 this.slicingSubnet[0].slicingId = an_suggest_nssi_id;
168 this.slicingSubnet[0].slicingName = an_suggest_nssi_name;
169 this.slicingSubnet[0].instances = [{
170 service_instance_id: an_suggest_nssi_id,
171 service_instance_name: an_suggest_nssi_name
174 this.slicingSubnet[1].slicingId = tn_suggest_nssi_id;
175 this.slicingSubnet[1].slicingName = tn_suggest_nssi_name;
176 this.slicingSubnet[1].instances = [{
177 service_instance_id: tn_suggest_nssi_id,
178 service_instance_name: tn_suggest_nssi_name
181 this.slicingSubnet[2].slicingId = cn_suggest_nssi_id;
182 this.slicingSubnet[2].slicingName = cn_suggest_nssi_name;
183 this.slicingSubnet[2].instances = [{
184 service_instance_id: cn_suggest_nssi_id,
185 service_instance_name: cn_suggest_nssi_name
189 resetSlicingInstance (): void {
190 this.selectedServiceId = '';
191 this.selectedServiceName = '';
192 this.slicingSubnet.map( item => {
194 item.slicingName = '';
196 this.isDisabled = false;
199 getSubnetInstances (bool: boolean, instance: any): void {
200 if(bool && instance.instances.length === 1) {
201 this.http.getSubnetInContext(instance.context, '1', '10').subscribe( res => {
202 const { result_header: { result_code }, result_body } = res;
203 if (+result_code === 200) {
204 this.slicingSubnet.map (item => {
205 if (item.context === instance.context) {
206 item.instances = result_body.nssi_service_instances;
214 slicingSubnetChange (instance: any): void {
215 instance.instances.forEach( item => {
216 if (instance.slicingId === item.service_instance_id) {
217 instance.slicingName = item.service_instance_name;
222 restSubnetInstance (instance: any): void {
223 if (!this.isDisabled) return;
224 instance.slicingId = '';
225 instance.slicingName = '';
228 showParamsModel (item: any): void {
229 this.isShowParams = true;
230 this.paramsTitle = item.title;
231 this.params = item.params
235 this.showDetail = false;
236 this.cancel.emit(this.showDetail);