6a1c14c5b72a80b8cf66a0775dffe102b2df38e2
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / controller / creationDialogController.js
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * VID\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
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \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
19  */\r
20 \r
21 "use strict";\r
22 \r
23 var creationDialogController = function( COMPONENT, FIELD, $scope, $http, $timeout, $log,\r
24                 CreationService, UtilityService, DataService) {\r
25 \r
26         $scope.isDialogVisible = false;\r
27         $scope.summaryControl = {};\r
28         $scope.userProvidedControl = {};\r
29 \r
30         var callbackFunction = undefined;\r
31         var componentId = undefined;\r
32 \r
33         $scope.$on(COMPONENT.CREATE_COMPONENT, function(event, request) {\r
34 \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
41 \r
42                 callbackFunction = request.callbackFunction;\r
43                 componentId = request.componentId;\r
44                 CreationService.initializeComponent(request.componentId);\r
45 \r
46                 CreationService.setHttpErrorHandler(function(response) {\r
47                         showError(FIELD.ERROR.SYSTEM_FAILURE, UtilityService\r
48                                         .getHttpErrorMessage(response));\r
49                 });\r
50 \r
51                 $scope.componentName = CreationService.getComponentDisplayName();\r
52 \r
53                 CreationService.getParameters(handleGetParametersResponse);\r
54 \r
55         });\r
56 \r
57         var handleGetParametersResponse = function(parameters) {\r
58                 $scope.summaryControl.setList(parameters.summaryList);\r
59                 $scope.userProvidedControl.setList(parameters.userProvidedList);\r
60 \r
61                 $scope.isSpinnerVisible = false;\r
62                 $scope.isDataVisible = true;\r
63                 $scope.isConfirmEnabled = true;\r
64         };\r
65         \r
66         var validateInstanceName = function(iname) {\r
67                 var patt1 = /^([a-z])+([0-9a-z\-_\.]*)$/i;\r
68                 \r
69                 if ( iname == null ){\r
70                         return false;\r
71                 }\r
72                 if ( !iname.match(patt1) ) {\r
73                         return false;\r
74                 }\r
75                 return true;\r
76         }\r
77 \r
78         $scope.userParameterChanged = function(id) {\r
79                 CreationService.updateUserParameterList(id, $scope.userProvidedControl);\r
80         }\r
81 \r
82         $scope.confirm = function() {\r
83 \r
84                 var requiredFields = $scope.userProvidedControl.getRequiredFields();\r
85                 if (requiredFields !== "") {\r
86                         showError(FIELD.ERROR.MISSING_DATA, requiredFields);\r
87                         return;\r
88                 }\r
89         \r
90                 var paramList = $scope.userProvidedControl.getList();\r
91                 var instanceName = "";\r
92 \r
93                 if ( DataService.getALaCarte() ) {\r
94                         if ( paramList != null ) {\r
95                                 for (var i = 0; i < paramList.length; i++) {\r
96                                         if (paramList[i].id === FIELD.ID.INSTANCE_NAME) {\r
97                                                 instanceName = paramList[i].value;\r
98                                                 break;\r
99                                         }\r
100                                 }\r
101                         }\r
102                         var isValid = validateInstanceName (instanceName);\r
103                         if ( isValid ) {\r
104                                 $scope.isErrorVisible = false;\r
105                         } else {\r
106                                 showError(FIELD.ERROR.INVALID_INSTANCE_NAME + instanceName, \r
107                                                 FIELD.ERROR.INSTANCE_NAME_VALIDATE);\r
108                                 return;\r
109                         }\r
110                 }\r
111                 \r
112                 var requestDetails = CreationService\r
113                                 .getMsoRequestDetails($scope.userProvidedControl.getList());\r
114 \r
115                 $scope.isDialogVisible = false;\r
116 \r
117                 $scope.$broadcast(COMPONENT.MSO_CREATE_REQ, {\r
118                         url : CreationService.getMsoUrl(),\r
119                         requestDetails : requestDetails,\r
120                         componentId: componentId,\r
121                         callbackFunction : function(response) {\r
122                                 if (response.isSuccessful) {\r
123                                         $scope.popup.isVisible = false;\r
124                                         runCallback(response);\r
125                                 } else {\r
126                                         $scope.isDialogVisible = false;\r
127                                         $scope.popup.isVisible = false;\r
128                                 }\r
129                         }\r
130                 });\r
131         }\r
132 \r
133         $scope.cancel = function() {\r
134                 $scope.isDialogVisible = false;\r
135                 $scope.popup.isVisible = false;\r
136                 runCallback(false);\r
137         }\r
138 \r
139         var runCallback = function(response) {\r
140                 if (angular.isFunction(callbackFunction)) {\r
141                         callbackFunction({\r
142                                 isSuccessful : response.isSuccessful,\r
143                                 control : $scope.userProvidedControl.getList(),\r
144                                 instanceId : response.instanceId\r
145                         });\r
146                 }\r
147         }\r
148 \r
149         var showError = function(summary, details) {\r
150                 var message = summary;\r
151                 if (UtilityService.hasContents(details)) {\r
152                         message += " (" + details + ")";\r
153                 }\r
154                 $scope.isSpinnerVisible = false;\r
155                 $scope.isErrorVisible = true;\r
156                 $scope.error = message;\r
157         }\r
158         \r
159 }\r
160 \r
161 appDS2.controller("creationDialogController", [ "COMPONENT", "FIELD", "$scope", "$http",\r
162                                 "$timeout", "$log", "CreationService", "UtilityService", "DataService",\r
163                                 creationDialogController ]);\r