2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
23 var creationDialogController = function( COMPONENT, FIELD, PARAMETER, $scope, $http, $timeout, $log,
\r
24 CreationService, UtilityService, DataService,VIDCONFIGURATION) {
\r
26 $scope.isDialogVisible = false;
\r
27 $scope.summaryControl = {};
\r
28 $scope.userProvidedControl = {};
\r
30 var callbackFunction = undefined;
\r
31 var componentId = undefined;
\r
33 $scope.$on(COMPONENT.CREATE_COMPONENT, function(event, request) {
\r
35 $scope.isSpinnerVisible = true;
\r
36 $scope.isErrorVisible = false;
\r
37 $scope.isDataVisible = false;
\r
38 $scope.isConfirmEnabled = false;
\r
39 $scope.isDialogVisible = true;
\r
40 $scope.popup.isVisible = true;
\r
42 callbackFunction = request.callbackFunction;
\r
43 componentId = request.componentId;
\r
44 CreationService.initializeComponent(request.componentId);
\r
46 CreationService.setHttpErrorHandler(function(response) {
\r
47 showError(FIELD.ERROR.SYSTEM_FAILURE, UtilityService
\r
48 .getHttpErrorMessage(response));
\r
51 $scope.componentName = CreationService.getComponentDisplayName();
\r
53 CreationService.getParameters(handleGetParametersResponse);
\r
57 var handleGetParametersResponse = function(parameters) {
\r
58 $scope.summaryControl.setList(parameters.summaryList);
\r
59 $scope.userProvidedControl.setList(parameters.userProvidedList);
\r
61 $scope.isSpinnerVisible = false;
\r
62 $scope.isDataVisible = true;
\r
63 $scope.isConfirmEnabled = true;
\r
66 var validateInstanceName = function(iname) {
\r
67 var patt1 = /^([a-z])+([0-9a-z\-_\.]*)$/i;
\r
69 if ( iname == null ){
\r
72 if ( !iname.match(patt1) ) {
\r
77 var validateMap = function(mname) {
\r
78 var patt1 = /^{(\s*\w+\s*:\s*\w+\s*)(\s*,\s*\w+\s*:\s*\w+\s*)*}$/im;
\r
79 if ( mname == null ){
\r
82 if ( !mname.match(patt1) ) {
\r
88 var validateList = function(lname) {
\r
89 var patt1 = /^\[(\s*\w+\s*)(\s*,\s*\w+\s*)*\]$/i;
\r
90 if ( lname == null ){
\r
93 if ( !lname.match(patt1) ) {
\r
99 $scope.userParameterChanged = function(id) {
\r
100 CreationService.updateUserParameterList(id, $scope.userProvidedControl);
\r
103 $scope.confirm = function() {
\r
105 var requiredFields = $scope.userProvidedControl.getRequiredFields();
\r
106 if (requiredFields !== "") {
\r
107 showError(FIELD.ERROR.MISSING_DATA, requiredFields);
\r
111 var isUploadAvailable = false;
\r
112 var uploadIndex =0;
\r
113 var paramList = $scope.userProvidedControl.getList();
\r
114 var isAnyError = false;
\r
115 for (var i = 0; i < paramList.length; i++) {
\r
116 if (paramList[i].id === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {
\r
117 isUploadAvailable = true;
\r
120 if (paramList[i].id === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE && paramList[i].value && document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE).value=='' ) {
\r
125 if(isUploadAvailable && isAnyError ){
\r
126 showError(FIELD.ERROR.MISSING_DATA, FIELD.ERROR.MISSING_FILE);
\r
128 }else if(isUploadAvailable && document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE).value!='' ){
\r
130 var fileInput = document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE);
\r
131 var file = fileInput.files[0];
\r
132 var reader = new FileReader();
\r
133 reader.onload = function(e) {
\r
135 paramList[uploadIndex].value = JSON.parse(reader.result);
\r
136 FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value'] = paramList[uploadIndex].value;
\r
138 var instanceName = "";
\r
140 if ( DataService.getALaCarte() ) {
\r
141 if ( paramList != null ) {
\r
142 for (var i = 0; i < paramList.length; i++) {
\r
143 if (paramList[i].id === FIELD.ID.INSTANCE_NAME) {
\r
144 instanceName = paramList[i].value;
\r
149 var isValid = validateInstanceName (instanceName);
\r
151 $scope.isErrorVisible = false;
\r
153 showError(FIELD.ERROR.INVALID_INSTANCE_NAME + instanceName,
\r
154 FIELD.ERROR.INSTANCE_NAME_VALIDATE);
\r
158 var arbitraryParametersList = DataService.getArbitraryParameters();
\r
160 if (UtilityService.hasContents (arbitraryParametersList)) {
\r
161 for (var i = 0; i < arbitraryParametersList.length; i++) {
\r
162 p = arbitraryParametersList[i];
\r
163 if (p.type === PARAMETER.MAP) {
\r
164 //validate a map: { <entry_key_1>: <entry_value_1>, ... , <entry_key_n>: <entry_value_n> }
\r
165 // need to find the value in paramList
\r
166 for (var j = 0; j < paramList.length; j++) {
\r
167 if (paramList[j].id === p.id) {
\r
168 p.value = paramList[j].value;
\r
169 var isValid = validateMap (p.value);
\r
171 $scope.isErrorVisible = false;
\r
175 showError(FIELD.ERROR.INVALID_MAP + p.id,
\r
176 FIELD.ERROR.MAP_VALIDATE);
\r
181 } else if (p.type === PARAMETER.LIST) {
\r
182 //validate a list: { value or a list of comma separated values }
\r
183 // need to find the value in paramList
\r
184 for (var j = 0; j < paramList.length; j++) {
\r
185 if (paramList[j].id === p.id) {
\r
186 p.value = paramList[j].value;
\r
187 var isValid = validateList (p.value);
\r
189 $scope.isErrorVisible = false;
\r
193 showError(FIELD.ERROR.INVALID_LIST + p.id,
\r
194 FIELD.ERROR.LIST_VALIDATE);
\r
202 var requestDetails = CreationService
\r
203 .getMsoRequestDetails($scope.userProvidedControl.getList());
\r
205 $scope.isDialogVisible = false;
\r
207 $scope.$broadcast(COMPONENT.MSO_CREATE_REQ, {
\r
208 url : CreationService.getMsoUrl(),
\r
209 requestDetails : requestDetails,
\r
210 componentId: componentId,
\r
211 callbackFunction : function(response) {
\r
212 if (response.isSuccessful) {
\r
213 $scope.popup.isVisible = false;
\r
214 runCallback(response);
\r
216 $scope.isDialogVisible = false;
\r
217 $scope.popup.isVisible = false;
\r
223 errorMsg = errorMsg+ FIELD.ERROR.INVALID_DATA_FORMAT;
\r
225 if (errorMsg !== "") {
\r
226 showError(FIELD.ERROR.SYSTEM_FAILURE, errorMsg);
\r
230 reader.readAsText(file);
\r
233 var paramList = $scope.userProvidedControl.getList();
\r
234 var instanceName = "";
\r
236 if ( DataService.getALaCarte() ) {
\r
237 if ( paramList != null ) {
\r
238 for (var i = 0; i < paramList.length; i++) {
\r
239 if (paramList[i].id === FIELD.ID.INSTANCE_NAME) {
\r
240 instanceName = paramList[i].value;
\r
245 var isValid = validateInstanceName (instanceName);
\r
247 $scope.isErrorVisible = false;
\r
249 showError(FIELD.ERROR.INVALID_INSTANCE_NAME + instanceName,
\r
250 FIELD.ERROR.INSTANCE_NAME_VALIDATE);
\r
254 var arbitraryParametersList = DataService.getArbitraryParameters();
\r
256 if (UtilityService.hasContents (arbitraryParametersList)) {
\r
257 for (var i = 0; i < arbitraryParametersList.length; i++) {
\r
258 p = arbitraryParametersList[i];
\r
259 if (p.type === PARAMETER.MAP) {
\r
260 //validate a map: { <entry_key_1>: <entry_value_1>, ... , <entry_key_n>: <entry_value_n> }
\r
261 // need to find the value in paramList
\r
262 for (var j = 0; j < paramList.length; j++) {
\r
263 if (paramList[j].id === p.id) {
\r
264 p.value = paramList[j].value;
\r
265 var isValid = validateMap (p.value);
\r
267 $scope.isErrorVisible = false;
\r
271 showError(FIELD.ERROR.INVALID_MAP + p.id,
\r
272 FIELD.ERROR.MAP_VALIDATE);
\r
277 } else if (p.type === PARAMETER.LIST) {
\r
278 //validate a list: { value or a list of comma separated values }
\r
279 // need to find the value in paramList
\r
280 for (var j = 0; j < paramList.length; j++) {
\r
281 if (paramList[j].id === p.id) {
\r
282 p.value = paramList[j].value;
\r
283 var isValid = validateList (p.value);
\r
285 $scope.isErrorVisible = false;
\r
289 showError(FIELD.ERROR.INVALID_LIST + p.id,
\r
290 FIELD.ERROR.LIST_VALIDATE);
\r
298 var requestDetails = CreationService
\r
299 .getMsoRequestDetails($scope.userProvidedControl.getList());
\r
301 $scope.isDialogVisible = false;
\r
303 $scope.$broadcast(COMPONENT.MSO_CREATE_REQ, {
\r
304 url : CreationService.getMsoUrl(),
\r
305 requestDetails : requestDetails,
\r
306 componentId: componentId,
\r
307 callbackFunction : function(response) {
\r
308 if (response.isSuccessful) {
\r
309 $scope.popup.isVisible = false;
\r
310 runCallback(response);
\r
312 $scope.isDialogVisible = false;
\r
313 $scope.popup.isVisible = false;
\r
320 $scope.cancel = function() {
\r
321 $scope.isDialogVisible = false;
\r
322 $scope.popup.isVisible = false;
\r
323 runCallback(false);
\r
326 var runCallback = function(response) {
\r
327 if (angular.isFunction(callbackFunction)) {
\r
329 isSuccessful : response.isSuccessful,
\r
330 control : $scope.userProvidedControl.getList(),
\r
331 instanceId : response.instanceId
\r
336 var showError = function(summary, details) {
\r
337 var message = summary;
\r
338 if (UtilityService.hasContents(details)) {
\r
339 message += " (" + details + ")";
\r
341 $scope.isSpinnerVisible = false;
\r
342 $scope.isErrorVisible = true;
\r
343 $scope.error = message;
\r
348 appDS2.controller("creationDialogController", [ "COMPONENT", "FIELD", "PARAMETER", "$scope", "$http",
\r
349 "$timeout", "$log", "CreationService", "UtilityService", "DataService","VIDCONFIGURATION",
\r
350 creationDialogController ]);
\r