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
112 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};
113 this.subnetDataFormatting(subnetData);
114 this.slicingSubnet[0].params = { an_latency, an_5qi, an_coverage_area_ta_list }
115 this.slicingSubnet[1].params = { tn_latency, tn_bandwidth };
116 this.slicingSubnet[2].params = {
118 cn_resource_sharing_level,
119 cn_ue_mobility_level,
121 cn_max_number_of_ues,
125 cn_area_traffic_cap_dl,
126 cn_area_traffic_cap_ul
132 getSlicingData ( bool: boolean): void {
134 if (bool && this.slicingInstances.length === 1) {
135 this.http.getSlicingInstance('1', '10').subscribe ( res => {
136 this.loading = false;
137 const { result_header: { result_code }, result_body: { nsi_service_instances } } = res
138 if (+result_code === 200) {
139 this.slicingInstances = nsi_service_instances;
145 slicingInstanceChange ():void {
146 this.isDisabled = true;
148 this.http.getSlicingSubnetInstance(this.selectedServiceId).subscribe( res => {
149 const { result_header: { result_code }, result_body} = res;
150 if (+result_code === 200) {
151 this.subnetDataFormatting(result_body)
154 this.slicingInstances.forEach (item => {
155 if (item.service_instance_id === this.selectedServiceId) {
156 this.selectedServiceName = item.service_instance_name;
161 subnetDataFormatting ( subnetData: any): void{
162 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;
163 this.slicingSubnet[0].slicingId = an_suggest_nssi_id;
164 this.slicingSubnet[0].slicingName = an_suggest_nssi_name;
165 this.slicingSubnet[0].instances = [{
166 service_instance_id: an_suggest_nssi_id,
167 service_instance_name: an_suggest_nssi_name
170 this.slicingSubnet[1].slicingId = tn_suggest_nssi_id;
171 this.slicingSubnet[1].slicingName = tn_suggest_nssi_name;
172 this.slicingSubnet[1].instances = [{
173 service_instance_id: tn_suggest_nssi_id,
174 service_instance_name: tn_suggest_nssi_name
177 this.slicingSubnet[2].slicingId = cn_suggest_nssi_id;
178 this.slicingSubnet[2].slicingName = cn_suggest_nssi_name;
179 this.slicingSubnet[2].instances = [{
180 service_instance_id: cn_suggest_nssi_id,
181 service_instance_name: cn_suggest_nssi_name
185 resetSlicingInstance (): void {
186 this.selectedServiceId = '';
187 this.selectedServiceName = '';
188 this.slicingSubnet.map( item => {
190 item.slicingName = '';
192 this.isDisabled = false;
195 getSubnetInstances (bool: boolean, instance: any): void {
196 if(bool && instance.instances.length === 1) {
197 this.http.getSubnetInContext(instance.context, '1', '10').subscribe( res => {
198 const { result_header: { result_code }, result_body } = res;
199 if (+result_code === 200) {
200 this.slicingSubnet.map (item => {
201 if (item.context === instance.context) {
202 item.instances = result_body.nssi_service_instances;
210 slicingSubnetChange (instance: any): void {
211 instance.instances.forEach( item => {
212 if (instance.slicingId === item.service_instance_id) {
213 instance.slicingName = item.service_instance_name;
218 restSubnetInstance (instance: any): void {
219 if (!this.isDisabled) return;
220 instance.slicingId = '';
221 instance.slicingName = '';
224 showParamsModel (item: any): void {
225 this.isShowParams = true;
226 this.paramsTitle = item.title;
227 this.params = item.params
231 this.showDetail = false;
232 this.cancel.emit(this.showDetail);