d279d0375a8eb203f5a1afb592a78782c3d7f356
[usecase-ui.git] /
1 import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2 import { TRANSFRER_FORM_ITEMS, CORE_FORM_ITEMS, ADDRESS } from '@src/constants/constants'
3
4 @Component({
5         selector: 'app-subnet-params-model',
6         templateUrl: './subnet-params-model.component.html',
7         styleUrls: ['./subnet-params-model.component.less']
8 })
9 export class SubnetParamsModelComponent implements OnInit {
10
11         @Input() showModel: boolean;
12         @Input() detailData: any;
13         @Input() title: string;
14         @Output() cancel = new EventEmitter<boolean>();
15         @Output() paramsDataChange = new EventEmitter<any>();
16
17         transferFormItems = TRANSFRER_FORM_ITEMS;
18         coreFormItems :object ={};
19         areaList: any[] = [];
20
21         constructor() { }
22
23         ngOnInit() { }
24
25         ngOnChanges() {
26         this.coreFormItems = this.title === 'An'?CORE_FORM_ITEMS.An:CORE_FORM_ITEMS.Cn;
27                 if (this.title === 'An') {
28                         this.AreaFormatting();
29                 }
30         }
31
32         AreaFormatting () {
33                 let areaList = [...this.detailData.an_coverage_area_ta_list];
34                 this.areaList = areaList.map ( (item: any) => {
35                         let arr = item.split(';');
36                         item = arr.map( (ite, index) => {
37                                 let key: string;
38                                 if (!index) {
39                                         key = 'province';
40                                 } else if (index === 1){
41                                         key = 'city'
42                                 } else {
43                                         key = 'district'
44                                 }
45                                 const obj: any = {};
46                                 obj.key = key;
47                                 obj.selected = ite
48                                 obj.options = [{name: ite, id: ite}]
49                                 return obj
50                         })
51                         return item;
52                 })
53         }
54
55         creatAreaList (): void {
56                 let arr = [
57                         {
58                                 key: 'province',
59                                 selected: '',
60                                 options: []
61                         },
62                         {
63                                 key: 'city',
64                                 selected: '',
65                                 options: []
66                         },
67                         {
68                                 key: 'district',
69                                 selected: '',
70                                 options: []
71                         }
72                 ]
73                 this.areaList.push(arr)
74         }
75
76         deleteAreaList (index: number): void {
77                 this.areaList.splice(index,1);
78         }
79
80         handleChange(area: any[], areaItem: any): void{
81                 if (areaItem.key === 'province' && areaItem.options.length <= 1) {
82                         areaItem.options = ADDRESS;
83                 } else if (areaItem.key === 'city' && areaItem.options.length <= 1) {
84                         ADDRESS.forEach( item => {
85                                 if(item.name === area[0].selected) {
86                                         areaItem.options = item.city;
87                                 }
88                         })
89                 }else if (areaItem.key === 'district' && areaItem.options.length <= 1) {
90                         ADDRESS.forEach( (item: any) => {
91                                 item.city.forEach(city => {
92                                         if (city.name === area[1].selected) {
93                                                 areaItem.options = city.county;
94                                         }
95                                 })
96                         })
97                 }
98         }
99
100         handleChangeSelected(area: any[], areaItem: any) {
101                 if (areaItem.key === 'province') {
102                         area[1].selected = ''
103                         area[1].options = [];
104                         area[2].selected = '';
105                         area[2].options = [];
106                 } else if (areaItem.key === 'city') {
107                         area[2].selected = '';
108                         area[2].options = [];
109                 }
110         }
111
112         handleCancel() {
113                 this.showModel = false
114                 this.cancel.emit(this.showModel)
115         }
116
117         handleOk(): void {
118                 let params: object;
119                 if (this.title === 'An') {
120                         const an_coverage_area_ta_list: string[] = [];
121                         this.areaList.forEach( item => {
122                                 let str: string = '';
123                                 item.forEach( area => {
124                                         str += area.selected + ';';
125                                 })
126                                 an_coverage_area_ta_list.push(str.substring(0, str.length-1));
127                         })
128                         params = {...this.detailData, an_coverage_area_ta_list}
129                 } else {
130                         params = {...this.detailData}
131                 }
132                 this.paramsDataChange.emit(params)
133                 this.handleCancel()
134         }
135
136 }