49f4f42fd3578b41867f1d0ca1ea1bece07b96df
[appc/cdt.git] / src / app / vnfs / myvnfs / myvnfs.component.ts
1 /*
2 ============LICENSE_START==========================================
3 ===================================================================
4 Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
5 ===================================================================
6 Copyright (C) 2018 IBM.
7 ===================================================================
8 Unless otherwise specified, all software contained herein is licensed
9 under the Apache License, Version 2.0 (the License);
10 you may not use this software except in compliance with the License.
11 You may obtain a copy of the License at
12
13     http://www.apache.org/licenses/LICENSE-2.0
14
15 Unless required by applicable law or agreed to in writing, software
16 distributed under the License is distributed on an "AS IS" BASIS,
17 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 See the License for the specific language governing permissions and
19 limitations under the License.
20
21 ============LICENSE_END============================================
22 */
23
24 import { Component, OnInit, OnDestroy } from '@angular/core';
25 import { ActivatedRoute, Router } from '@angular/router';
26 import { HttpUtilService } from '../../shared/services/httpUtil/http-util.service';
27 import { Subscription } from 'rxjs/Subscription';
28 import { MappingEditorService } from '../../shared/services/mapping-editor.service';
29 import { ParamShareService } from '../../shared/services/paramShare.service';
30 import { environment } from '../../../environments/environment';
31 import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
32 import { NgProgress } from 'ngx-progressbar';
33 import { NotificationsService } from 'angular2-notifications';
34 import { appConstants } from '../../../constants/app-constants'
35
36 @Component({ selector: 'app-myvnfs', templateUrl: './myvnfs.component.html', styleUrls: ['./myvnfs.component.css'] })
37 export class MyvnfsComponent implements OnInit, OnDestroy {
38     vnfData: Array<Object> = [];
39     sortOrder = false;
40     noData = true;
41     sortBy: string;
42     filter: Object = {};
43     noDataMsg: string;
44     vnfType: any;
45     vnfcType: any;
46     vnfcRequired: boolean = false;
47     errorMessage = '';
48     invalid = true;
49     options = {
50         timeOut: 1000,
51         showProgressBar: true,
52         pauseOnHover: true,
53         clickToClose: true,
54         maxLength: 200
55     }
56     subscription: Subscription;
57
58     constructor (private paramShareService: ParamShareService, private ngProgress: NgProgress, private httpUtil: HttpUtilService, private router: Router, private activeROute: ActivatedRoute,
59         private mappingEditorService: MappingEditorService, private modalService: NgbModal) {
60     }
61
62     ngOnInit() {
63
64         sessionStorage.setItem('updateParams', undefined);
65         this.mappingEditorService.latestAction = undefined;
66         const apiToken = localStorage['apiToken'];
67
68         const data = {
69             'input': {
70                 'design-request': {
71                     'request-id': apiToken,
72                     'action': 'getDesigns',
73                     'payload': '{"userID": "","filter":"reference"}'
74                 }
75             }
76         };
77         const x = JSON.parse(data.input['design-request']['payload']);
78         x.userID = localStorage['userId'];
79         data.input['design-request']['payload'] = JSON.stringify(x);
80         // console.log("input to payload====", JSON.stringify(data));
81         this.getArtifacts(data);
82         this.clearCache();
83     }
84
85     ngOnDestroy() {
86         if (this.subscription) { this.subscription.unsubscribe() };
87     }
88
89     getArtifacts(data) {
90         let tempObj: any;
91         this.ngProgress.start();
92         this.httpUtil.post({
93             url: environment.getDesigns,
94             data: data
95         })
96             .subscribe(resp => {
97                 if (resp.output.data.block !== undefined && resp.output.data.block !== null && resp.output.data.block.length !== 0) {
98                     tempObj = JSON.parse(resp.output.data.block);
99                     this.vnfData = tempObj.designInfo;
100                 }
101                 if (this.vnfData === undefined || this.vnfData === null || this.vnfData.length === 0) {
102                     this.noData = true;
103                     // this.noDataMsg = resp.output.status.message;
104                 } else {
105                     this.noData = false;
106                 }
107                 this.ngProgress.done();
108             });
109
110         this.filter = ['vnf-type', 'vnfc-type', 'artifact-name'];
111         setTimeout(() => {
112             this.ngProgress.done();
113         }, 3500);
114     }
115
116
117
118     getData() {
119     }
120
121     buildNewDesign(response) {
122
123         // this.modalService.open(content).result.then(res => {
124         //     if(res=='yes'){
125         //         sessionStorage.setItem('vnfParams', JSON.stringify({ vnfType: this.vnfType}));
126         //         sessionStorage.setItem("vnfcSelectionFlag",''+this.vnfcRequired+'')
127         //     } else{
128         //         sessionStorage.setItem('vnfParams',"")
129         //     }
130
131         //     this.mappingEditorService.referenceNameObjects = undefined;
132         //     this.mappingEditorService.identifier = '';
133         //     //this.mappingEditorService.newObject = {};
134         //     this.router.navigate([
135         //             'vnfs', 'design', 'references'
136         //     ]);
137
138         // });
139
140         if (response == 'yes') {
141             sessionStorage.setItem('vnfParams', JSON.stringify({ vnfType: this.vnfType }));
142             sessionStorage.setItem("vnfcSelectionFlag", '' + this.vnfcRequired + '')
143         } else {
144             sessionStorage.setItem('vnfParams', "")
145         }
146
147         this.mappingEditorService.referenceNameObjects = undefined;
148         this.mappingEditorService.identifier = '';
149         //this.mappingEditorService.newObject = {};
150         this.router.navigate([
151             'vnfs', 'design', 'references'
152         ]);
153     }
154
155     validateVnfName(name) {
156         if (!name.trim() || name.length < 1) {
157             this.errorMessage = '';
158             this.invalid = true;
159         } else if (name.startsWith(' ') || name.endsWith(' ')) {
160             this.errorMessage = 'Leading and trailing spaces are not allowed';
161             this.invalid = true;
162         } else if (name.includes('  ')) {
163             this.errorMessage = 'More than one space is not allowed in VNF Type';
164             this.invalid = true;
165         } else if (name.length > 150) {
166             this.errorMessage = 'VNF Type should be of minimum one character and maximum 150 character';
167             this.invalid = true;
168         } else {
169             this.invalid = false;
170             this.errorMessage = '';
171         }
172     }
173
174     navigateToReference(item) {
175         sessionStorage.setItem('updateParams', JSON.stringify(item));
176         this.mappingEditorService.referenceNameObjects = undefined;
177         sessionStorage.setItem('vnfParams', JSON.stringify({ vnfType: item.vnfType, vnfcType: item.vnfcType }));
178         this.mappingEditorService.identifier = '';
179         if (this.mappingEditorService.newObject && this.mappingEditorService.newObject.vnfc != undefined) {
180             this.mappingEditorService.newObject.vnfc = '';
181         }
182         this
183             .router
184             .navigate(['../design/references'], {
185                 relativeTo: this.activeROute,
186                 queryParams: {
187                     id: item.id
188                 }
189             });
190     }
191
192     navigateToRefrenceUpdate() {
193
194         this
195             .router
196             .navigate(['../design/references/update'], {
197                 relativeTo: this.activeROute,
198                 queryParams: {
199                     id: '10'
200                 }
201             });
202     }
203
204     clearCache() {
205         // get the value and save the userid and persist it.
206         sessionStorage.setItem("vnfcSelectionFlag", '' + this.vnfcRequired + '')
207         this.mappingEditorService.setTemplateMappingDataFromStore(undefined);
208         localStorage['paramsContent'] = '{}';
209         this.mappingEditorService.setParamContent(undefined);
210         this.paramShareService.setSessionParamData(undefined);
211         const appData = { reference: {}, template: { templateData: {}, nameValueData: {} }, pd: {} };
212         const downloadData = {
213             reference: {},
214             template: { templateData: {}, nameValueData: {}, templateFileName: '', nameValueFileName: '' },
215             pd: { pdData: '', pdFileName: '' }
216         };
217         this.mappingEditorService.changeNavAppData(appData);
218         this.mappingEditorService.changeNavDownloadData(downloadData);
219     }
220     defineData(item) {
221         let artVnfc = item['artifact-name'].substring(this.lastIndexofEnd("AllAction_", item['artifact-name']), item['artifact-name'].lastIndexOf("_"))
222         if (item['vnf-type'] == artVnfc && item['vnfc-type'] == 'null') {
223
224             return item['vnfc-type']
225         } else {
226             return ""
227         }
228
229     }
230     lastIndexofEnd(str, originlStr) {
231         var io = originlStr.lastIndexOf(str);
232         return io == -1 ? -1 : io + str.length;
233     }
234
235
236 }