summaryrefslogtreecommitdiffstats
path: root/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model
diff options
context:
space:
mode:
Diffstat (limited to 'usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model')
-rw-r--r--usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/constants.ts413
-rw-r--r--usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html31
-rw-r--r--usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts656
3 files changed, 817 insertions, 283 deletions
diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/constants.ts b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/constants.ts
new file mode 100644
index 00000000..e83f50e3
--- /dev/null
+++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/constants.ts
@@ -0,0 +1,413 @@
+/*******
+ title /MUST/: MARK THE ITEM NAME,
+ key /MUST/: MARK THE ITEM KEY,
+ type /MUST/: MARKE THE ITEM TYPE, CAN BE ADDED IF NECESSARY: input/select/radio/city-select/select/table-radio/endpoint
+ required /MUST/: IF REQUIRED,
+ disable /MUST/: IF DISABLED,
+ scoped: IF SCOPED NUMBERS, CAN BE EMITTED IF NOT
+ scopedText: SCOPED NUMBERS' DESCRIPTION. IF SCOPED NUMBERS EXITS, IT'S A MUST
+ placeholder: IF PLACEHOLDER, CAN BE EMITTED IF NOT
+ options: IF ITEM NEEDS OPTIONS, CAN BE EMITTED IF NOT
+********/
+
+export const TRANSFRER_FORM_ITEMS = [
+ {
+ title: "S-NSSAI",
+ key: "sliceProfile_TN_BH_sNSSAI",
+ required: true,
+ type: "input",
+ disable: true,
+ },
+ {
+ title: "Latency (ms)",
+ key: "tn_bh_latency",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Jitter",
+ key: "sliceProfile_TN_BH_jitte",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "MaxBandwidth",
+ key: "tn_bh_bandwidth",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Resource Sharing Level", // select
+ key: "sliceProfile_TN_resourceSharingLevel", // :new
+ required: true,
+ disable: false,
+ type: "radio",
+ options: [
+ {
+ title: "Shared",
+ key: "shared",
+ },
+ {
+ title: "Non-shared",
+ key: "non-shared",
+ },
+ ],
+ },
+ {
+ title: "Connection Links", // table
+ key: "tn_connection_links", // :new
+ required: false, // combined
+ type: "table-radio",
+ disable: false,
+ },
+ {
+ title: "AN Endpoint", // input group
+ key: "an_Endpoint",
+ type: "endpoint",
+ required: false,
+ disable: false,
+ options: [
+ {
+ title: "ip_address",
+ key: "sliceProfile_AN_ipAddress",
+ holder: "IpAddress",
+ },
+ {
+ title: "logical_link",
+ key: "sliceProfile_AN_logicInterfaceId",
+ holder: "LogicId",
+ },
+ {
+ title: "nexthop_info",
+ key: "sliceProfile_AN_nextHopInfo",
+ holder: "NextHop",
+ },
+ ],
+ },
+ {
+ title: "CN Endpoint",
+ key: "cn_Endpoint",
+ type: "endpoint",
+ required: false,
+ disable: false,
+ options: [
+ {
+ title: "ip_address",
+ key: "sliceProfile_CN_ipAddress",
+ holder: "IpAddress",
+ },
+ {
+ title: "logical_link",
+ key: "sliceProfile_CN_logicInterfaceId",
+ holder: "LogicId",
+ },
+ {
+ title: "nexthop_info",
+ key: "sliceProfile_CN_nextHopInfo",
+ holder: "NextHop",
+ },
+ ],
+ },
+];
+
+export const CORE_FORM_ITEMS = {
+ An: [
+ {
+ title: "S-NSSAI",
+ key: "sliceProfile_AN_sNSSAI",
+ required: true,
+ type: "input",
+ disable: "true",
+ },
+ {
+ title: "Resource Sharing Level",
+ key: "sliceProfile_AN_resourceSharingLevel",
+ required: true,
+ type: "radio",
+ disable: false,
+ options: [
+ {
+ title: "Shared",
+ key: "shared",
+ },
+ {
+ title: "Non-shared",
+ key: "non-shared",
+ },
+ ],
+ },
+ {
+ title: "Mobility",
+ key: "sliceProfile_AN_uEMobilityLevel",
+ required: true,
+ type: "select",
+ disable: false,
+ options: [
+ {
+ title: "Stationary",
+ key: "stationary",
+ },
+ {
+ title: "Nomadic",
+ key: "nomadic",
+ },
+ {
+ title: "Spatially Restricted Mobility",
+ key: "spatially restricted mobility",
+ },
+ {
+ title: "Fully Mobility",
+ key: "fully mobility",
+ },
+ ],
+ },
+ {
+ title: "Latency (ms)",
+ key: "an_latency",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Max Number of PUD Session",
+ key: "sliceProfile_AN_maxNumberofPDUSession",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Max Number of UEs",
+ key: "sliceProfile_AN_maxNumberofUEs",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Activity Factor (%)",
+ key: "sliceProfile_AN_activityFactor",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "User Downlink Experience Rate(Mbps)",
+ key: "sliceProfile_AN_expDataRateDL",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "User Uplink Experience Rate(Mbps)",
+ key: "sliceProfile_AN_expDataRateUL",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Downlink Regional Traffic Density(Mbps/km )",
+ key: "sliceProfile_AN_areaTrafficCapDL",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Uplink Regional Traffic Density(Mbps/km )",
+ key: "sliceProfile_AN_areaTrafficCapUL",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Script Name",
+ key: "an_script_name",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Overall User Density",
+ key: "sliceProfile_AN_overallUserDensity",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Coverage Area Ta List",
+ key: "an_coverage_area_ta_list",
+ required: true,
+ type: "city-select",
+ disable: false,
+ },
+ ],
+ Cn: [
+ {
+ title: "S-NSSAI",
+ key: "cn_service_snssai",
+ required: true,
+ type: "input",
+ disable: true,
+ },
+ {
+ title: "Resource Sharing Level",
+ key: "cn_resource_sharing_level",
+ required: true,
+ type: "radio",
+ disable: false,
+ options: [
+ {
+ title: "Shared",
+ key: "shared",
+ },
+ {
+ title: "Non-shared",
+ key: "non-shared",
+ },
+ ],
+ },
+ {
+ title: "Mobility",
+ key: "cn_ue_mobility_level",
+ required: true,
+ type: "select",
+ disable: false,
+ options: [
+ {
+ title: "Stationary",
+ key: "stationary",
+ },
+ {
+ title: "Nomadic",
+ key: "nomadic",
+ },
+ {
+ title: "Spatially Restricted Mobility",
+ key: "spatially restricted mobility",
+ },
+ {
+ title: "Fully Mobility",
+ key: "fully mobility",
+ },
+ ],
+ },
+ {
+ title: "Latency (ms)",
+ key: "cn_latency",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Max Number of UEs",
+ key: "cn_max_number_of_ues",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Activity Factor (%)",
+ key: "cn_activity_factor",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "User Downlink Experience Rate(Mbps)",
+ key: "cn_exp_data_rate_dl",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "User Uplink Experience Rate(Mbps)",
+ key: "cn_exp_data_rate_ul",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Downlink Regional Traffic Density(Mbps/km )",
+ key: "cn_area_traffic_cap_dl",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Uplink Regional Traffic Density(Mbps/km )",
+ key: "cn_area_traffic_cap_ul",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Script Name",
+ key: "cn_script_name",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "Max Number of PUD Session",
+ key: "sliceProfile_CN_maxNumberofPDUSession",
+ required: true,
+ type: "input",
+ disable: false,
+ },
+ {
+ title: "OverAll User Density",
+ key: "sliceProfile_CN_overallUserDensity",
+ required: false,
+ type: "input",
+ disable: false,
+ },
+ ],
+};
+
+export const ADDRESS = [
+ {
+ id: "1",
+ name: "Beijing",
+ city: [
+ {
+ id: "101",
+ name: "Beijing",
+ county: [
+ {
+ id: "1001",
+ name: "Haiding District",
+ },
+ {
+ id: "1002",
+ name: "Xicheng District",
+ },
+ {
+ id: "1003",
+ name: "Changping District",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ id: "2",
+ name: "Shanghai",
+ city: [
+ {
+ id: "201",
+ name: "Shanghai City",
+ county: [
+ {
+ id: "2001",
+ name: "Pudongxin District",
+ },
+ {
+ id: "2002",
+ name: "Jingan District",
+ },
+ ],
+ },
+ ],
+ },
+];
diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html
index 6a9ebf6c..b0e3696c 100644
--- a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html
+++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html
@@ -1,6 +1,7 @@
<nz-modal [(nzVisible)]="showModel" [nzTitle]="title + 'Parameter'" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()"
nzWidth="960px">
<div class="subnet_params_container">
+ <!-- TN interface -->
<form nz-form *ngIf="title === 'Tn'">
<nz-form-item *ngFor="let item of transferFormItems">
<nz-form-label [nzSpan]="7" [nzRequired]="item.required" [nzFor]="item.key"
@@ -9,10 +10,9 @@
</nz-form-label>
<nz-form-control [nzSpan]="16">
<input nz-input [(ngModel)]="formData[item.key]" [name]="item.key" [id]="item.key"
- [readOnly]="item.title === 'S-NSSAI'" [disabled]="item.title === 'S-NSSAI'"
- [placeholder]="inputHolder(item.title)" *ngIf="specialParaTN.indexOf(item.title)===-1" />
- <nz-radio-group [name]=" item.key" [(ngModel)]="formData[item.key]"
- *ngIf="item.title==='Resource Sharing Level'" (ngModelChange)="changeResourceShare()">
+ [disabled]="item.disable" [placeholder]="inputHolder(item.title)" *ngIf="item.type==='input'" />
+ <nz-radio-group [name]=" item.key" [(ngModel)]="formData[item.key]" *ngIf="item.type==='radio'"
+ (ngModelChange)="changeResourceShare()">
<label nz-radio [nzValue]="option.key" *ngFor="let option of item.options">
{{ option.title }}
</label>
@@ -56,7 +56,7 @@
</div>
</nz-input-group>
<!-- connection links table -->
- <div *ngIf="item.title === 'Connection Links'">
+ <div *ngIf="item.type==='table-radio'">
<nz-table #basicTable [nzData]="connectionLinkTable" nzShowPagination="true" nzPageSize="2">
<thead>
<tr>
@@ -85,38 +85,37 @@
</tbody>
</nz-table>
</div>
+ <!-- Prompt whether the detection value is empty -->
<div class="validation_alert" *ngIf="item.required">
{{Util.isEmpty(formData[item.key])? 'can not be empty!':' '}}</div>
</nz-form-control>
</nz-form-item>
</form>
+ <!-- AN interface or CN interface -->
<form nz-form *ngIf="title === 'An' || title === 'Cn'">
<nz-form-item *ngFor="let item of coreFormItems">
- <nz-form-label [nzSpan]="item.key === 'an_coverage_area_ta_list'?7:13" [nzRequired]="item.required"
- *ngIf=" item.title !== 'Endpoint' || EndpointEnable " [ngStyle]="labelStyle(item.required)">
+ <nz-form-label [nzSpan]="item.type === 'city-select'?7:13" [nzRequired]="item.required"
+ [ngStyle]="labelStyle(item.required)">
{{ item.title }}
</nz-form-label>
- <nz-form-control nzSpan="8" *ngIf="item.key !== 'an_coverage_area_ta_list'">
+ <nz-form-control nzSpan="8" *ngIf="item.type !== 'city-select'">
<input nz-input [id]="item.key" [name]="item.key" [(ngModel)]="formData[item.key]"
- [readOnly]="item.title === 'S-NSSAI'" [disabled]="item.title === 'S-NSSAI'"
- *ngIf=" item.title !== 'Resource Sharing Level' && item.title !== 'Mobility' "
+ [disabled]="item.disable" *ngIf=" item.type === 'input'"
[placeholder]="inputHolder(item.title)" />
- <nz-radio-group [name]="item.key" [(ngModel)]="formData[item.key]"
- *ngIf="item.title === 'Resource Sharing Level'">
+ <nz-radio-group [name]="item.key" [(ngModel)]="formData[item.key]" *ngIf="item.type === 'radio'">
<label nz-radio [nzValue]="option.key" *ngFor="let option of item.options">
{{ option.title }}
</label>
</nz-radio-group>
- <nz-select [name]="item.key" [(ngModel)]="formData[item.key]" *ngIf="item.title === 'Mobility'">
+ <nz-select [name]="item.key" [(ngModel)]="formData[item.key]" *ngIf="item.type === 'select'">
<nz-option [nzValue]="option.key" [nzLabel]="option.title" *ngFor="let option of item.options">
</nz-option>
</nz-select>
<div class="validation_alert" *ngIf="item.required">
{{Util.isEmpty(formData[item.key])? 'can not be empty!':' '}}</div>
- <!-- Comment: The following code-->
- <!-- Comment: Above code-->
</nz-form-control>
- <div *ngIf="title === 'An' && item.key === 'an_coverage_area_ta_list'">
+ <!-- Address selection needs special treatment -->
+ <div *ngIf="title === 'An' && item.type === 'city-select'">
<div *ngFor="let area of areaList; let i = index">
<nz-form-control [nzSpan]="!ind ? 4 : 4" [nzOffset]="i && !ind ? 7 : 0"
class="subnet_params_area" *ngFor="let item of area; let ind = index">
diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts
index d6798064..bc352ad4 100644
--- a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts
+++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts
@@ -1,18 +1,23 @@
-import { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';
-import { TRANSFRER_FORM_ITEMS, CORE_FORM_ITEMS, ADDRESS , NexthopInfo_Options } from '@src/constants/constants';
+import {
+ Component,
+ OnInit,
+ Input,
+ Output,
+ EventEmitter,
+ ElementRef,
+} from "@angular/core";
+import { TRANSFRER_FORM_ITEMS, CORE_FORM_ITEMS, ADDRESS } from "./constants";
import { NzMessageService } from "ng-zorro-antd";
-import { stringify } from '@angular/core/src/util';
-import { Util } from '../../../../../../shared/utils/utils';
-import { SlicingTaskServices } from '@src/app/core/services/slicingTaskServices';
-
+import { stringify } from "@angular/core/src/util";
+import { Util } from "../../../../../../shared/utils/utils";
+import { SlicingTaskServices } from "@src/app/core/services/slicingTaskServices";
@Component({
- selector: 'app-subnet-params-model',
- templateUrl: './subnet-params-model.component.html',
- styleUrls: ['./subnet-params-model.component.less']
+ selector: "app-subnet-params-model",
+ templateUrl: "./subnet-params-model.component.html",
+ styleUrls: ["./subnet-params-model.component.less"],
})
export class SubnetParamsModelComponent implements OnInit {
-
@Input() showModel: boolean;
@Input() detailData: any;
@Input() title: string;
@@ -21,378 +26,475 @@ export class SubnetParamsModelComponent implements OnInit {
@Output() noPassParaChange = new EventEmitter<any>();
transferFormItems: any[] = TRANSFRER_FORM_ITEMS;
- regxpIP = /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/; // check for correct ip address
+ regxpIP = /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/; // check for correct ip address
formData: any;
- coreFormItems : any = [];
+ coreFormItems: any = [];
areaList: any[] = [];
- // 2020.08.17 Add 3 parameters for Endpoint, Comment: The following code
- NexthopInfoOptions = NexthopInfo_Options;
ANEndpointInputs: object = {};
CNEndpointInputs: object = {};
ANkeyList: string[] = [];
CNkeyList: string[] = [];
- EndpointEnable: boolean = false; // Whether to enable the three parameters of Endpoint
+ EndpointEnable: boolean = false; // Whether to enable the three parameters of Endpoint
keyList: string[] = []; // keys of endPoint
- specialParaTN: string[] = ['Resource Sharing Level', 'Connection Links', 'AN Endpoint', 'CN Endpoint'];
+ specialParaTN: string[] = [
+ "Resource Sharing Level",
+ "Connection Links",
+ "AN Endpoint",
+ "CN Endpoint",
+ ];
// Parameters not passed to the back end
- notPassPara: string[] = ['tn_connection_links'];
+ notPassPara: string[] = ["tn_connection_links"];
connectionLinkTable: any[] = [];
connectionTableHeader: string[] = [];
objectKeys = Object.keys;
- // Comment: Above code
+ // Comment: Above code
constructor(
private message: NzMessageService,
private Util: Util,
private http: SlicingTaskServices
- ) {
- }
+ ) {}
- ngOnInit() {
- }
+ ngOnInit() {}
ngOnChanges() {
if (this.title) {
this.formData = JSON.parse(JSON.stringify(this.detailData));
- if (this.title === 'An' || this.title === 'Cn') {
- this.coreFormItems = this.title === 'An'?CORE_FORM_ITEMS.An:this.title === 'Cn'?CORE_FORM_ITEMS.Cn:[];
- }
- else if (this.title === 'Tn') {
+ if (this.title === "An" || this.title === "Cn") {
+ this.coreFormItems =
+ this.title === "An"
+ ? CORE_FORM_ITEMS.An
+ : this.title === "Cn"
+ ? CORE_FORM_ITEMS.Cn
+ : [];
+ } else if (this.title === "Tn") {
this.getConnectionLinkTable();
- this.ANkeyList = this.transferFormItems.find((item) => {return item.title === 'AN Endpoint'}).options.map((val) => {return val.key})
- this.CNkeyList = this.transferFormItems.find((item) => {return item.title === 'CN Endpoint'}).options.map((val) => {return val.key})
- this.keyList = this.ANkeyList.concat(this.CNkeyList)
- if (typeof this.formData !== 'undefined' && Object.keys(this.formData).length !== 0) {
- this.EndpointEnable = this.keyList.every((item) => {return this.formData.hasOwnProperty(item)})
+ this.ANkeyList = this.transferFormItems
+ .find((item) => {
+ return item.title === "AN Endpoint";
+ })
+ .options.map((val) => {
+ return val.key;
+ });
+ this.CNkeyList = this.transferFormItems
+ .find((item) => {
+ return item.title === "CN Endpoint";
+ })
+ .options.map((val) => {
+ return val.key;
+ });
+ this.keyList = this.ANkeyList.concat(this.CNkeyList);
+ if (
+ typeof this.formData !== "undefined" &&
+ Object.keys(this.formData).length !== 0
+ ) {
+ this.EndpointEnable = this.keyList.every((item) => {
+ return this.formData.hasOwnProperty(item);
+ });
}
- if(this.EndpointEnable){
- this.ANEndpointInputs = this.Util.pick(this.formData, this.ANkeyList)
- this.CNEndpointInputs = this.Util.pick(this.formData, this.CNkeyList)
+ if (this.EndpointEnable) {
+ this.ANEndpointInputs = this.Util.pick(
+ this.formData,
+ this.ANkeyList
+ );
+ this.CNEndpointInputs = this.Util.pick(
+ this.formData,
+ this.CNkeyList
+ );
} else {
- this.transferFormItems.map((item,index)=>{
- if (item.title === 'AN Endpoint' || item.title === 'CN Endpoint') {
- this.transferFormItems.splice(index,1)
+ this.transferFormItems.map((item, index) => {
+ if (
+ item.title === "AN Endpoint" ||
+ item.title === "CN Endpoint"
+ ) {
+ this.transferFormItems.splice(index, 1);
}
- })
+ });
}
}
// If the endpoint related parameters from the back end are incomplete, delete the endpoint item
//-------> Comment: Above code
- if (this.title === 'An') {
- this.AreaFormatting();
+ if (this.title === "An") {
+ this.AreaFormatting();
}
}
}
- addCheckStatus () {
+ addCheckStatus() {
this.connectionLinkTable.forEach((item) => {
- if (item.hasOwnProperty('linkId') && typeof this.formData['tn_connection_links'] !== 'undefined' && this.formData['tn_connection_links'] !== '' && this.formData['tn_connection_links'] !== null && item['linkId'] === this.formData['tn_connection_links']) {
- item.checked = true
+ if (
+ item.hasOwnProperty("linkId") &&
+ typeof this.formData["tn_connection_links"] !== "undefined" &&
+ this.formData["tn_connection_links"] !== "" &&
+ this.formData["tn_connection_links"] !== null &&
+ item["linkId"] === this.formData["tn_connection_links"]
+ ) {
+ item.checked = true;
} else {
- item.checked = false
+ item.checked = false;
}
- })
+ });
}
- changeResourceShare () {
- this.judgeTn()
+ changeResourceShare() {
+ this.judgeTn();
}
- isObject (val) {
- if (Object.prototype.toString.call(val) === '[object Object]') {
- return true
+ isObject(val) {
+ if (Object.prototype.toString.call(val) === "[object Object]") {
+ return true;
} else {
- return false
+ return false;
}
}
- getConnectionLinkTable (): void{
- this.http.getConnectionLinkTable(this.getConnetionFailed).then ((res) => {
- this.connectionLinkTable = res.result_body.connection_links_list
- this.addCheckStatus() // add init check status for connection link table
- this.judgeTn() // init judge
- this.getTableHeader()
- })
+ getConnectionLinkTable(): void {
+ this.http
+ .getConnectionLinkTable(this.getConnetionFailed)
+ .then((res) => {
+ this.connectionLinkTable =
+ res.result_body.connection_links_list;
+ this.addCheckStatus(); // add init check status for connection link table
+ this.judgeTn(); // init judge
+ this.getTableHeader();
+ });
}
- getTableHeader (): void { // Find the common key of all data
- let keyList :any[] = this.connectionLinkTable.map((item) => {
- return Object.keys(item)
- })
- this.connectionTableHeader = this.Util.intersection(keyList).filter((item) => {
- return item !== 'checked'
- })
+ getTableHeader(): void {
+ // Find the common key of all data
+ let keyList: any[] = this.connectionLinkTable.map((item) => {
+ return Object.keys(item);
+ });
+ this.connectionTableHeader = this.Util.intersection(keyList).filter(
+ (item) => {
+ return item !== "checked";
+ }
+ );
// Filter redundant items in table data
this.connectionLinkTable.forEach((item) => {
for (let key in item) {
- if (key !== 'linkId' && key !== 'checked' && this.connectionTableHeader.indexOf(key) === -1) {
- delete item[key]
+ if (
+ key !== "linkId" &&
+ key !== "checked" &&
+ this.connectionTableHeader.indexOf(key) === -1
+ ) {
+ delete item[key];
} else {
// Filter out the null values in each item
for (let i in item[key]) {
- if (i === 'jitter' && (item[key][i] === '' || item[key][i] === 'null' || item[key][i] === null)) {
- delete item[key][i]
+ if (
+ i === "jitter" &&
+ (item[key][i] === "" ||
+ item[key][i] === "null" ||
+ item[key][i] === null)
+ ) {
+ delete item[key][i];
}
}
}
}
- })
+ });
}
- getConnetionFailed () {
- console.log('failed')
+ getConnetionFailed() {
+ console.log("failed");
}
- judgeTn (): void {
- if (this.formData['sliceProfile_TN_resourceSharingLevel'] === 'non-shared') {
- this.connectionLinkTable.forEach ((item) => {
- item.checked = false
- })
- this.formData['tn_connection_links'] = null
- this.notPassPara = ['tn_connection_links']
+ judgeTn(): void {
+ if (
+ this.formData["sliceProfile_TN_resourceSharingLevel"] ===
+ "non-shared"
+ ) {
+ this.connectionLinkTable.forEach((item) => {
+ item.checked = false;
+ });
+ this.formData["tn_connection_links"] = null;
+ this.notPassPara = ["tn_connection_links"];
this.transferFormItems.forEach((item) => {
- if (item.title === 'Connection Links') {
- item.disable = true
- } else if (item.title === 'AN Endpoint' || item.title === 'CN Endpoint') {
- item.required = true
- item.disable = false
+ if (item.title === "Connection Links") {
+ item.disable = true;
+ } else if (
+ item.title === "AN Endpoint" ||
+ item.title === "CN Endpoint"
+ ) {
+ item.required = true;
+ item.disable = false;
}
- })
- } else if (this.formData['sliceProfile_TN_resourceSharingLevel'] === 'shared') {
+ });
+ } else if (
+ this.formData["sliceProfile_TN_resourceSharingLevel"] === "shared"
+ ) {
this.transferFormItems.forEach((item) => {
- if (item.title === 'Connection Links') {
- item.disable = false
- } else if (item.title === 'AN Endpoint' || item.title === 'CN Endpoint') {
- if (typeof this.formData['tn_connection_links'] !== 'undefined' && this.formData['tn_connection_links'] !== null && this.formData['tn_connection_links'] !== '') {
- item.disable = true
- item.required = false
- this.notPassPara = []
- this.notPassPara = this.notPassPara.concat(this.ANkeyList, this.CNkeyList)
- } else { //:todo
- this.formData['tn_connection_links'] = ''
- item.disable = false
- item.required = true
- this.notPassPara = []
+ if (item.title === "Connection Links") {
+ item.disable = false;
+ } else if (
+ item.title === "AN Endpoint" ||
+ item.title === "CN Endpoint"
+ ) {
+ if (
+ typeof this.formData["tn_connection_links"] !==
+ "undefined" &&
+ this.formData["tn_connection_links"] !== null &&
+ this.formData["tn_connection_links"] !== ""
+ ) {
+ item.disable = true;
+ item.required = false;
+ this.notPassPara = [];
+ this.notPassPara = this.notPassPara.concat(
+ this.ANkeyList,
+ this.CNkeyList
+ );
+ } else {
+ //:todo
+ this.formData["tn_connection_links"] = "";
+ item.disable = false;
+ item.required = true;
+ this.notPassPara = [];
}
}
- })
+ });
}
}
- validateEndPoint (key: string, value: any, required: boolean): string {
+ validateEndPoint(key: string, value: any, required: boolean): string {
if (required) {
if (this.Util.isEmpty(value)) {
- return 'can not be empty';
+ return "can not be empty";
}
}
- if (key === 'ip_address') {
+ if (key === "ip_address") {
if (!this.regxpIP.test(value)) {
- if (value !== '') {
- return 'xxx.xxx.xxx.xxx';
+ if (value !== "") {
+ return "xxx.xxx.xxx.xxx";
} else {
- return ''
+ return "";
}
} else {
- return '';
+ return "";
}
- } else if (key === 'logical_link') {
- if (!this.Util.isInteger(value)){
- if (value !== ''){
- return 'integer only'
+ } else if (key === "logical_link") {
+ if (!this.Util.isInteger(value)) {
+ if (value !== "") {
+ return "integer only";
} else {
- return ''
+ return "";
}
} else {
- return ''
+ return "";
}
} else {
- return '';
+ return "";
}
}
- changeLinkCheck (id: string) : void{ // update the selection state
+ changeLinkCheck(id: string): void {
+ // update the selection state
this.connectionLinkTable.forEach((item) => {
- if (item['linkId'] === id) {
- item.checked = true
+ if (item["linkId"] === id) {
+ item.checked = true;
} else {
- item.checked = false
+ item.checked = false;
}
- })
- this.formData['tn_connection_links'] = id // get the selected id
- this.judgeTn()
+ });
+ this.formData["tn_connection_links"] = id; // get the selected id
+ this.judgeTn();
}
- AreaFormatting () {
+ AreaFormatting() {
let areaList = [...this.formData.an_coverage_area_ta_list];
- this.areaList = areaList.map ( (item: any) => {
- let arr = item.split(';');
- item = arr.map( (ite, index) => {
+ this.areaList = areaList.map((item: any) => {
+ let arr = item.split(";");
+ item = arr.map((ite, index) => {
let key: string;
if (!index) {
- key = 'province';
- } else if (index === 1){
- key = 'city'
+ key = "province";
+ } else if (index === 1) {
+ key = "city";
} else {
- key = 'district'
+ key = "district";
}
const obj: any = {};
obj.key = key;
- obj.selected = ite
- obj.options = [{name: ite, id: ite}]
- return obj
- })
+ obj.selected = ite;
+ obj.options = [{ name: ite, id: ite }];
+ return obj;
+ });
return item;
- })
+ });
}
- creatAreaList (): void {
+ creatAreaList(): void {
let arr = [
{
- key: 'province',
- selected: '',
- options: []
+ key: "province",
+ selected: "",
+ options: [],
},
{
- key: 'city',
- selected: '',
- options: []
+ key: "city",
+ selected: "",
+ options: [],
},
{
- key: 'district',
- selected: '',
- options: []
- }
- ]
- this.areaList.push(arr)
+ key: "district",
+ selected: "",
+ options: [],
+ },
+ ];
+ this.areaList.push(arr);
}
- deleteAreaList (index: number): void {
- this.areaList.splice(index,1);
+ deleteAreaList(index: number): void {
+ this.areaList.splice(index, 1);
}
- handleChange(area: any[], areaItem: any): void{
- if (areaItem.key === 'province' && areaItem.options.length <= 1) {
+ handleChange(area: any[], areaItem: any): void {
+ if (areaItem.key === "province" && areaItem.options.length <= 1) {
areaItem.options = ADDRESS;
- } else if (areaItem.key === 'city' && areaItem.options.length <= 1) {
- ADDRESS.forEach( item => {
- if(item.name === area[0].selected) {
+ } else if (areaItem.key === "city" && areaItem.options.length <= 1) {
+ ADDRESS.forEach((item) => {
+ if (item.name === area[0].selected) {
areaItem.options = item.city;
}
- })
- }else if (areaItem.key === 'district' && areaItem.options.length <= 1) {
- ADDRESS.forEach( (item: any) => {
- item.city.forEach(city => {
+ });
+ } else if (
+ areaItem.key === "district" &&
+ areaItem.options.length <= 1
+ ) {
+ ADDRESS.forEach((item: any) => {
+ item.city.forEach((city) => {
if (city.name === area[1].selected) {
areaItem.options = city.county;
}
- })
- })
+ });
+ });
}
}
handleChangeSelected(area: any[], areaItem: any) {
- if (areaItem.key === 'province') {
- area[1].selected = ''
+ if (areaItem.key === "province") {
+ area[1].selected = "";
area[1].options = [];
- area[2].selected = '';
+ area[2].selected = "";
area[2].options = [];
- } else if (areaItem.key === 'city') {
- area[2].selected = '';
+ } else if (areaItem.key === "city") {
+ area[2].selected = "";
area[2].options = [];
}
}
- handleCancel() : void{
- this.showModel = false
- this.cancel.emit(this.showModel)
+ handleCancel(): void {
+ this.showModel = false;
+ this.cancel.emit(this.showModel);
}
-
+
// prompt text for each item of area_list
- checkArea (area: any) : string{
- if (area.every((item) => {return item.selected === ''})) {
- return 'empty';
+ checkArea(area: any): string {
+ if (
+ area.every((item) => {
+ return item.selected === "";
+ })
+ ) {
+ return "empty";
}
- if (area.some((item) => {return item.selected === ''})) {
- return 'incomplete';
+ if (
+ area.some((item) => {
+ return item.selected === "";
+ })
+ ) {
+ return "incomplete";
}
- return '';
+ return "";
}
// special handling for address
- areaCheckBeforeSubmit (target: object) : Boolean{
+ areaCheckBeforeSubmit(target: object): Boolean {
for (const prop in target) {
- if (target.hasOwnProperty(prop)) {
- if (prop === 'an_coverage_area_ta_list' || prop ==='cn_coverage_area_ta_list') {
+ if (target.hasOwnProperty(prop)) {
+ if (
+ prop === "an_coverage_area_ta_list" ||
+ prop === "cn_coverage_area_ta_list"
+ ) {
// if the vlaue is "shanghai;shanghai;", the input is incomplete
- return target[prop].every((item) => {return this.Util.deepCheck(item.split(';'))});
+ return target[prop].every((item) => {
+ return this.Util.deepCheck(item.split(";"));
+ });
}
}
}
return true;
}
- endCheckBeforeSubmit (endpoint, required) : Array<any>{
+ endCheckBeforeSubmit(endpoint, required): Array<any> {
// check params of Endpoint
- let result: Array<any> = [true, ''];
- let endPointList;
- endPointList = this.transferFormItems.find((item) => {return item.title === 'AN Endpoint'}).options
- let ipKey = '';
- let logicalKey = '';
- let nextKey = ''
- for (let item of endPointList) {
- if (item.title === 'ip_address') {
- ipKey = item.key
- } else if (item.title === 'logical_link') {
- logicalKey = item.key
- } else if (item.title === 'nexthop_info') {
- nextKey = item.key
- }
+ let result: Array<any> = [true, ""];
+ let endPointList;
+ endPointList = this.transferFormItems.find((item) => {
+ return item.title === "AN Endpoint";
+ }).options;
+ let ipKey = "";
+ let logicalKey = "";
+ let nextKey = "";
+ for (let item of endPointList) {
+ if (item.title === "ip_address") {
+ ipKey = item.key;
+ } else if (item.title === "logical_link") {
+ logicalKey = item.key;
+ } else if (item.title === "nexthop_info") {
+ nextKey = item.key;
}
- for (let prop in endpoint) {
- if (prop === ipKey) {
- if (required) {
- if (endpoint[prop] === '') {
- result = [false, 'Endpoint can not be empty']
- } else if (!this.regxpIP.test(endpoint[prop])) {
- result = [false, 'Illegal IpAddress']
- }
- } else if (!this.regxpIP.test(endpoint[prop]) && endpoint[prop] !== '') {
- result = [false, 'Illegal IpAddress']
+ }
+ for (let prop in endpoint) {
+ if (prop === ipKey) {
+ if (required) {
+ if (endpoint[prop] === "") {
+ result = [false, "Endpoint can not be empty"];
+ } else if (!this.regxpIP.test(endpoint[prop])) {
+ result = [false, "Illegal IpAddress"];
}
- } else if (prop === logicalKey) {
- if (required) {
- if (endpoint[prop] === '') {
- result = [false, 'logical can not be empty']
- } else if (!this.Util.isInteger(endpoint[prop])) {
- result = [false, 'LogicalID can only be an integer']
- }
- } else if (!this.Util.isInteger(endpoint[prop]) && endpoint[prop] !== '') {
- result = [false, 'LogicalID can only be an integer']
+ } else if (
+ !this.regxpIP.test(endpoint[prop]) &&
+ endpoint[prop] !== ""
+ ) {
+ result = [false, "Illegal IpAddress"];
+ }
+ } else if (prop === logicalKey) {
+ if (required) {
+ if (endpoint[prop] === "") {
+ result = [false, "logical can not be empty"];
+ } else if (!this.Util.isInteger(endpoint[prop])) {
+ result = [false, "LogicalID can only be an integer"];
}
- } else if (prop === nextKey) {
- if (required && endpoint[prop] === '') {
- result = [false, 'Endpoint can not be empty']
- }
+ } else if (
+ !this.Util.isInteger(endpoint[prop]) &&
+ endpoint[prop] !== ""
+ ) {
+ result = [false, "LogicalID can only be an integer"];
+ }
+ } else if (prop === nextKey) {
+ if (required && endpoint[prop] === "") {
+ result = [false, "Endpoint can not be empty"];
}
- }
- return result;
+ }
+ }
+ return result;
}
- inputHolder (title: string): string {
- const titleArr = title.split(' ')
+ inputHolder(title: string): string {
+ const titleArr = title.split(" ");
if (titleArr.length > 1) {
- return titleArr.slice(0, 2).join('');
+ return titleArr.slice(0, 2).join("");
} else {
return title;
}
}
-
- labelStyle (required: boolean) : object{
+
+ labelStyle(required: boolean): object {
let style;
if (!required) {
- style = {'margin-left': '18px', 'margin-right': '-18px'};
+ style = { "margin-left": "18px", "margin-right": "-18px" };
} else {
- style = {}
+ style = {};
}
return style;
}
@@ -400,17 +502,27 @@ export class SubnetParamsModelComponent implements OnInit {
handleOk(): void {
// Verify that items of EndPoint is correct
if (this.EndpointEnable) {
- let endCheckResult = []
- if (this.title === 'Tn') {
- const ANendCheckResult = this.endCheckBeforeSubmit(this.ANEndpointInputs, this.transferFormItems.find((item) => {return item.title === 'AN Endpoint'}).required)
- const CNendCheckResult = this.endCheckBeforeSubmit(this.CNEndpointInputs, this.transferFormItems.find((item) => {return item.title === 'CN Endpoint'}).required)
+ let endCheckResult = [];
+ if (this.title === "Tn") {
+ const ANendCheckResult = this.endCheckBeforeSubmit(
+ this.ANEndpointInputs,
+ this.transferFormItems.find((item) => {
+ return item.title === "AN Endpoint";
+ }).required
+ );
+ const CNendCheckResult = this.endCheckBeforeSubmit(
+ this.CNEndpointInputs,
+ this.transferFormItems.find((item) => {
+ return item.title === "CN Endpoint";
+ }).required
+ );
if (ANendCheckResult[0] && CNendCheckResult[0]) {
- endCheckResult[0] = true
+ endCheckResult[0] = true;
} else {
if (ANendCheckResult[0] === false) {
- endCheckResult = ANendCheckResult
+ endCheckResult = ANendCheckResult;
} else {
- endCheckResult = CNendCheckResult
+ endCheckResult = CNendCheckResult;
}
}
}
@@ -420,52 +532,62 @@ export class SubnetParamsModelComponent implements OnInit {
}
// replace the params about endPoint
for (let prop in this.formData) {
- if (this.title === 'Tn' && typeof this.ANEndpointInputs[prop] !== 'undefined') {
+ if (
+ this.title === "Tn" &&
+ typeof this.ANEndpointInputs[prop] !== "undefined"
+ ) {
this.formData[prop] = this.ANEndpointInputs[prop];
- } else if (this.title === 'Tn' && typeof this.CNEndpointInputs[prop] !== 'undefined') {
+ } else if (
+ this.title === "Tn" &&
+ typeof this.CNEndpointInputs[prop] !== "undefined"
+ ) {
this.formData[prop] = this.CNEndpointInputs[prop];
}
}
}
let params: object;
- if (this.title === 'An') {
+ if (this.title === "An") {
const an_coverage_area_ta_list: string[] = [];
- this.areaList.forEach( item => {
- let str: string = '';
- item.forEach( area => {
- str += area.selected + ';';
- })
- an_coverage_area_ta_list.push(str.substring(0, str.length-1));
- })
- params = {...this.formData, an_coverage_area_ta_list};
+ this.areaList.forEach((item) => {
+ let str: string = "";
+ item.forEach((area) => {
+ str += area.selected + ";";
+ });
+ an_coverage_area_ta_list.push(str.substring(0, str.length - 1));
+ });
+ params = { ...this.formData, an_coverage_area_ta_list };
} else {
- params = {...this.formData};
+ params = { ...this.formData };
+ }
+ // Verify that each item exclude endpoint is not empty, include special handeling of area_list
+ let checkParams: object = params;
+ let requireKeyList: string[] = [];
+ let targetFormItems: any[] = [];
+ if (this.title === "An" || this.title === "Cn") {
+ targetFormItems = this.coreFormItems;
+ } else if ((this.title = "Tn")) {
+ targetFormItems = this.transferFormItems;
}
- // Verify that each item exclude endpoint is not empty, include special handeling of area_list
- let checkParams : object= params
- let requireKeyList :string[] = []
- let targetFormItems : any[] = []
- if (this.title === 'An' || this.title === 'Cn') {
- targetFormItems = this.coreFormItems
- } else if (this.title = 'Tn') {
- targetFormItems = this.transferFormItems
- }
- for (let item of targetFormItems) {
- if (typeof item.required !== 'undefined' && item.required) {
- if (typeof item.type !== 'undefined' && item.type !== 'endpoint')
- {
- requireKeyList.push(item.key)
- }
- }
- }
- checkParams = this.Util.pick(params, requireKeyList)
- if (this.Util.deepCheck(checkParams) && this.areaCheckBeforeSubmit(params)) {
+ for (let item of targetFormItems) {
+ if (typeof item.required !== "undefined" && item.required) {
+ if (
+ typeof item.type !== "undefined" &&
+ item.type !== "endpoint"
+ ) {
+ requireKeyList.push(item.key);
+ }
+ }
+ }
+ checkParams = this.Util.pick(params, requireKeyList);
+ if (
+ this.Util.deepCheck(checkParams) &&
+ this.areaCheckBeforeSubmit(params)
+ ) {
this.paramsDataChange.emit(params);
- this.noPassParaChange.emit(this.notPassPara)
+ this.noPassParaChange.emit(this.notPassPara);
this.handleCancel();
} else {
- this.message.error('Please complete the form');
+ this.message.error("Please complete the form");
}
}
-
}