Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 1 | /* |
| 2 | ============LICENSE_START========================================== |
| 3 | =================================================================== |
| 4 | Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. |
| 5 | =================================================================== |
Sandeep J | 170263d | 2018-07-16 17:02:46 +0530 | [diff] [blame] | 6 | Copyright (C) 2018 IBM. |
| 7 | =================================================================== |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 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 | |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 21 | ============LICENSE_END============================================ |
| 22 | */ |
| 23 | |
Arundathi Patil | 897c4b7 | 2018-07-17 16:05:00 +0530 | [diff] [blame] | 24 | import { Component, OnInit, OnDestroy } from '@angular/core'; |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 25 | import { ActivatedRoute, Router } from '@angular/router'; |
| 26 | import { HttpUtilService } from '../../shared/services/httpUtil/http-util.service'; |
Arundathi Patil | 897c4b7 | 2018-07-17 16:05:00 +0530 | [diff] [blame] | 27 | import { Subscription } from 'rxjs/Subscription'; |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 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'; |
Sandeep J | 170263d | 2018-07-16 17:02:46 +0530 | [diff] [blame] | 33 | import { NotificationsService } from 'angular2-notifications'; |
Arundathi Patil | 333a9bd | 2018-07-25 17:08:41 +0530 | [diff] [blame] | 34 | import { appConstants } from '../../../constants/app-constants' |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 35 | |
| 36 | @Component({ selector: 'app-myvnfs', templateUrl: './myvnfs.component.html', styleUrls: ['./myvnfs.component.css'] }) |
Arundathi Patil | 897c4b7 | 2018-07-17 16:05:00 +0530 | [diff] [blame] | 37 | export class MyvnfsComponent implements OnInit, OnDestroy { |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 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; |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 46 | vnfcRequired: boolean = false; |
| 47 | errorMessage = ''; |
| 48 | invalid = true; |
Sandeep J | 170263d | 2018-07-16 17:02:46 +0530 | [diff] [blame] | 49 | options = { |
Arundathi Patil | 897c4b7 | 2018-07-17 16:05:00 +0530 | [diff] [blame] | 50 | timeOut: 1000, |
| 51 | showProgressBar: true, |
| 52 | pauseOnHover: true, |
| 53 | clickToClose: true, |
| 54 | maxLength: 200 |
Sandeep J | 170263d | 2018-07-16 17:02:46 +0530 | [diff] [blame] | 55 | } |
Arundathi Patil | 897c4b7 | 2018-07-17 16:05:00 +0530 | [diff] [blame] | 56 | subscription: Subscription; |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 57 | |
asgar | af56b68 | 2019-03-08 19:52:33 +0530 | [diff] [blame^] | 58 | constructor (private paramShareService: ParamShareService, private ngProgress: NgProgress, private httpUtil: HttpUtilService, private router: Router, private activeROute: ActivatedRoute, |
| 59 | private mappingEditorService: MappingEditorService, private modalService: NgbModal) { |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 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 | |
Arundathi Patil | 897c4b7 | 2018-07-17 16:05:00 +0530 | [diff] [blame] | 85 | ngOnDestroy() { |
| 86 | if (this.subscription) { this.subscription.unsubscribe() }; |
| 87 | } |
| 88 | |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 89 | getArtifacts(data) { |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 90 | let tempObj: any; |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 91 | this.ngProgress.start(); |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 92 | this.httpUtil.post({ |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 93 | url: environment.getDesigns, |
| 94 | data: data |
| 95 | }) |
asgar | af56b68 | 2019-03-08 19:52:33 +0530 | [diff] [blame^] | 96 | .subscribe(resp => { |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 97 | if (resp.output.data.block !== undefined && resp.output.data.block !== null && resp.output.data.block.length !== 0) { |
asgar | af56b68 | 2019-03-08 19:52:33 +0530 | [diff] [blame^] | 98 | tempObj = JSON.parse(resp.output.data.block); |
| 99 | this.vnfData = tempObj.designInfo; |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 100 | } |
asgar | af56b68 | 2019-03-08 19:52:33 +0530 | [diff] [blame^] | 101 | if (this.vnfData === undefined || this.vnfData === null || this.vnfData.length === 0) { |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 102 | this.noData = true; |
asgar | af56b68 | 2019-03-08 19:52:33 +0530 | [diff] [blame^] | 103 | // this.noDataMsg = resp.output.status.message; |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 104 | } else { |
| 105 | this.noData = false; |
| 106 | } |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 107 | this.ngProgress.done(); |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 108 | }); |
Arundathi Patil | 897c4b7 | 2018-07-17 16:05:00 +0530 | [diff] [blame] | 109 | |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 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 | |
asgar | af56b68 | 2019-03-08 19:52:33 +0530 | [diff] [blame^] | 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 | |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 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 | } |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 146 | |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 147 | this.mappingEditorService.referenceNameObjects = undefined; |
| 148 | this.mappingEditorService.identifier = ''; |
| 149 | //this.mappingEditorService.newObject = {}; |
| 150 | this.router.navigate([ |
| 151 | 'vnfs', 'design', 'references' |
| 152 | ]); |
| 153 | } |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 154 | |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 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 | } |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 172 | } |
| 173 | |
| 174 | navigateToReference(item) { |
| 175 | sessionStorage.setItem('updateParams', JSON.stringify(item)); |
| 176 | this.mappingEditorService.referenceNameObjects = undefined; |
od7427 | b1ce3d4 | 2018-08-23 11:49:12 -0400 | [diff] [blame] | 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 | } |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 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. |
asgar | af56b68 | 2019-03-08 19:52:33 +0530 | [diff] [blame^] | 206 | sessionStorage.setItem("vnfcSelectionFlag", '' + this.vnfcRequired + '') |
Skip Wonnell | 2c977e2 | 2018-03-01 08:30:15 -0600 | [diff] [blame] | 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 | } |
asgar | af56b68 | 2019-03-08 19:52:33 +0530 | [diff] [blame^] | 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 | } |