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, $location) {
\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.shouldShowOldPopup = function () {
\r
34 return DataService.getALaCarte() || DataService.getShouldExcludeMacroFromAsyncInstatiationFlow()
\r
37 function receiveMessage(event) {
\r
38 if (event.data == 'closeIframe') {
\r
39 window.removeEventListener("message", receiveMessage, false);
\r
43 else if (event.data.eventId == 'submitIframe') {
\r
45 $location.path('/servicePlanning').search({serviceModelId: event.data.data.serviceModelId});
\r
51 $scope.$on(COMPONENT.CREATE_COMPONENT, function (event, request) {
\r
52 $scope.isSpinnerVisible = true;
\r
53 $scope.isErrorVisible = false;
\r
54 $scope.isDataVisible = false;
\r
55 $scope.isConfirmEnabled = false;
\r
56 $scope.isDialogVisible = true;
\r
57 $scope.popup.isVisible = true;
\r
60 if (!$scope.shouldShowOldPopup()) {
\r
61 $scope.url = COMPONENT.SERVICE_POPUP_IFRAME_URL + request.modelNameVersionId + "&isCreate=true&r=" + Math.random();
\r
62 window.addEventListener("message", receiveMessage, false);
\r
66 callbackFunction = request.callbackFunction;
\r
67 componentId = request.componentId;
\r
68 CreationService.initializeComponent(request.componentId);
\r
70 CreationService.setHttpErrorHandler(function (response) {
\r
71 showError(FIELD.ERROR.SYSTEM_FAILURE, UtilityService
\r
72 .getHttpErrorMessage(response));
\r
75 $scope.componentName = CreationService.getComponentDisplayName();
\r
77 CreationService.getParameters(handleGetParametersResponse);
\r
82 var handleGetParametersResponse = function (parameters) {
\r
83 $scope.summaryControl.setList(parameters.summaryList);
\r
84 $scope.userProvidedControl.setList(parameters.userProvidedList);
\r
86 $scope.isSpinnerVisible = false;
\r
87 $scope.isDataVisible = true;
\r
88 $scope.isConfirmEnabled = true;
\r
91 var validateInstanceName = function (iname) {
\r
92 var patt1 = /^([a-z])+([0-9a-z\-_\.]*)$/i;
\r
94 if (iname == null) {
\r
97 if (!iname.match(patt1)) {
\r
102 var validateMap = function (mname) {
\r
103 var patt1 = /^{(\s*\w+\s*:\s*\w+\s*)(\s*,\s*\w+\s*:\s*\w+\s*)*}$/im;
\r
104 if (mname == null) {
\r
107 if (!mname.match(patt1)) {
\r
113 var validateList = function (lname) {
\r
114 var patt1 = /^\[(\s*\w+\s*)(\s*,\s*\w+\s*)*\]$/i;
\r
115 if (lname == null) {
\r
118 if (!lname.match(patt1)) {
\r
124 $scope.userParameterChanged = function (id) {
\r
125 CreationService.updateUserParameterList(id, $scope.userProvidedControl);
\r
128 $scope.confirm = function () {
\r
130 var requiredFields = $scope.userProvidedControl.getRequiredFields();
\r
131 if (requiredFields !== "") {
\r
132 showError(FIELD.ERROR.MISSING_DATA, requiredFields);
\r
136 var isUploadAvailable = false;
\r
137 var uploadIndex = 0;
\r
138 var paramList = $scope.userProvidedControl.getList();
\r
139 var isAnyError = false;
\r
140 for (var i = 0; i < paramList.length; i++) {
\r
141 if (paramList[i].id === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {
\r
142 isUploadAvailable = true;
\r
145 if (paramList[i].id === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE && paramList[i].value && document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE).value == '') {
\r
150 if (isUploadAvailable && isAnyError) {
\r
151 showError(FIELD.ERROR.MISSING_DATA, FIELD.ERROR.MISSING_FILE);
\r
153 } else if (isUploadAvailable && document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE).value != '') {
\r
155 var fileInput = document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE);
\r
156 var file = fileInput.files[0];
\r
157 var reader = new FileReader();
\r
158 reader.onload = function (e) {
\r
160 paramList[uploadIndex].value = JSON.parse(reader.result);
\r
161 FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value'] = paramList[uploadIndex].value;
\r
163 var instanceName = "";
\r
165 if (DataService.getALaCarte()) {
\r
166 if (paramList != null) {
\r
167 for (var i = 0; i < paramList.length; i++) {
\r
168 if (paramList[i].id === FIELD.ID.INSTANCE_NAME) {
\r
169 instanceName = paramList[i].value;
\r
174 var isValid = validateInstanceName(instanceName);
\r
176 $scope.isErrorVisible = false;
\r
178 showError(FIELD.ERROR.INVALID_INSTANCE_NAME + instanceName,
\r
179 FIELD.ERROR.INSTANCE_NAME_VALIDATE);
\r
183 var arbitraryParametersList = DataService.getArbitraryParameters();
\r
185 if (UtilityService.hasContents(arbitraryParametersList)) {
\r
186 for (var i = 0; i < arbitraryParametersList.length; i++) {
\r
187 p = arbitraryParametersList[i];
\r
188 if (p.type === PARAMETER.MAP) {
\r
189 //validate a map: { <entry_key_1>: <entry_value_1>, ... , <entry_key_n>: <entry_value_n> }
\r
190 // need to find the value in paramList
\r
191 for (var j = 0; j < paramList.length; j++) {
\r
192 if (paramList[j].id === p.id) {
\r
193 p.value = paramList[j].value;
\r
194 var isValid = validateMap(p.value);
\r
196 $scope.isErrorVisible = false;
\r
200 showError(FIELD.ERROR.INVALID_MAP + p.id,
\r
201 FIELD.ERROR.MAP_VALIDATE);
\r
206 } else if (p.type === PARAMETER.LIST) {
\r
207 //validate a list: { value or a list of comma separated values }
\r
208 // need to find the value in paramList
\r
209 for (var j = 0; j < paramList.length; j++) {
\r
210 if (paramList[j].id === p.id) {
\r
211 p.value = paramList[j].value;
\r
212 var isValid = validateList(p.value);
\r
214 $scope.isErrorVisible = false;
\r
218 showError(FIELD.ERROR.INVALID_LIST + p.id,
\r
219 FIELD.ERROR.LIST_VALIDATE);
\r
227 var requestDetails = CreationService
\r
228 .getMsoRequestDetails($scope.userProvidedControl.getList());
\r
230 $scope.isDialogVisible = false;
\r
232 $scope.$broadcast(COMPONENT.MSO_CREATE_REQ, {
\r
233 url: CreationService.getMsoUrl(),
\r
234 requestDetails: requestDetails,
\r
235 componentId: componentId,
\r
236 callbackFunction: function (response) {
\r
237 if (response.isSuccessful) {
\r
238 $scope.popup.isVisible = false;
\r
239 runCallback(response);
\r
241 $scope.isDialogVisible = false;
\r
242 $scope.popup.isVisible = false;
\r
248 errorMsg = errorMsg + FIELD.ERROR.INVALID_DATA_FORMAT;
\r
250 if (errorMsg !== "") {
\r
251 showError(FIELD.ERROR.SYSTEM_FAILURE, errorMsg);
\r
255 reader.readAsText(file);
\r
258 var paramList = $scope.userProvidedControl.getList();
\r
259 var instanceName = "";
\r
261 if (DataService.getALaCarte()) {
\r
262 if (paramList != null) {
\r
263 for (var i = 0; i < paramList.length; i++) {
\r
264 if (paramList[i].id === FIELD.ID.INSTANCE_NAME) {
\r
265 instanceName = paramList[i].value;
\r
270 var isValid = validateInstanceName(instanceName);
\r
272 $scope.isErrorVisible = false;
\r
274 showError(FIELD.ERROR.INVALID_INSTANCE_NAME + instanceName,
\r
275 FIELD.ERROR.INSTANCE_NAME_VALIDATE);
\r
279 var arbitraryParametersList = DataService.getArbitraryParameters();
\r
281 if (UtilityService.hasContents(arbitraryParametersList)) {
\r
282 for (var i = 0; i < arbitraryParametersList.length; i++) {
\r
283 p = arbitraryParametersList[i];
\r
284 if (p.type === PARAMETER.MAP) {
\r
285 //validate a map: { <entry_key_1>: <entry_value_1>, ... , <entry_key_n>: <entry_value_n> }
\r
286 // need to find the value in paramList
\r
287 for (var j = 0; j < paramList.length; j++) {
\r
288 if (paramList[j].id === p.id) {
\r
289 p.value = paramList[j].value;
\r
290 var isValid = validateMap(p.value);
\r
292 $scope.isErrorVisible = false;
\r
296 showError(FIELD.ERROR.INVALID_MAP + p.id,
\r
297 FIELD.ERROR.MAP_VALIDATE);
\r
302 } else if (p.type === PARAMETER.LIST) {
\r
303 //validate a list: { value or a list of comma separated values }
\r
304 // need to find the value in paramList
\r
305 for (var j = 0; j < paramList.length; j++) {
\r
306 if (paramList[j].id === p.id) {
\r
307 p.value = paramList[j].value;
\r
308 var isValid = validateList(p.value);
\r
310 $scope.isErrorVisible = false;
\r
314 showError(FIELD.ERROR.INVALID_LIST + p.id,
\r
315 FIELD.ERROR.LIST_VALIDATE);
\r
323 var requestDetails = CreationService
\r
324 .getMsoRequestDetails($scope.userProvidedControl.getList());
\r
326 $scope.isDialogVisible = false;
\r
328 $scope.$broadcast(COMPONENT.MSO_CREATE_REQ, {
\r
329 url: CreationService.getMsoUrl(),
\r
330 requestDetails: requestDetails,
\r
331 componentId: componentId,
\r
332 callbackFunction: function (response) {
\r
333 if (response.isSuccessful) {
\r
334 $scope.popup.isVisible = false;
\r
335 runCallback(response);
\r
337 $scope.isDialogVisible = false;
\r
338 $scope.popup.isVisible = false;
\r
345 $scope.cancel = function () {
\r
346 $scope.isDialogVisible = false;
\r
347 $scope.popup.isVisible = false;
\r
348 runCallback(false);
\r
352 var runCallback = function (response) {
\r
353 if (angular.isFunction(callbackFunction)) {
\r
355 isSuccessful: response.isSuccessful,
\r
356 control: $scope.userProvidedControl.getList(),
\r
357 instanceId: response.instanceId
\r
362 var showError = function (summary, details) {
\r
363 var message = summary;
\r
364 if (UtilityService.hasContents(details)) {
\r
365 message += " (" + details + ")";
\r
367 $scope.isSpinnerVisible = false;
\r
368 $scope.isErrorVisible = true;
\r
369 $scope.error = message;
\r
374 appDS2.controller("creationDialogController", ["COMPONENT", "FIELD", "PARAMETER", "$scope", "$http",
\r
375 "$timeout", "$log", "CreationService", "UtilityService", "DataService", "VIDCONFIGURATION", "$location",
\r
376 creationDialogController]);
\r