Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / controller / creationDialogController.js
index eb17091..6341170 100755 (executable)
 \r
 "use strict";\r
 \r
-var creationDialogController = function( COMPONENT, FIELD, PARAMETER, $scope, $http, $timeout, $log,\r
-               CreationService, UtilityService, DataService,VIDCONFIGURATION) {\r
-\r
-       $scope.isDialogVisible = false;\r
-       $scope.summaryControl = {};\r
-       $scope.userProvidedControl = {};\r
-\r
-       var callbackFunction = undefined;\r
-       var componentId = undefined;\r
-\r
-       $scope.$on(COMPONENT.CREATE_COMPONENT, function(event, request) {\r
-\r
-               $scope.isSpinnerVisible = true;\r
-               $scope.isErrorVisible = false;\r
-               $scope.isDataVisible = false;\r
-               $scope.isConfirmEnabled = false;\r
-               $scope.isDialogVisible = true;\r
-               $scope.popup.isVisible = true;\r
-\r
-               callbackFunction = request.callbackFunction;\r
-               componentId = request.componentId;\r
-               CreationService.initializeComponent(request.componentId);\r
-\r
-               CreationService.setHttpErrorHandler(function(response) {\r
-                       showError(FIELD.ERROR.SYSTEM_FAILURE, UtilityService\r
-                                       .getHttpErrorMessage(response));\r
-               });\r
-\r
-               $scope.componentName = CreationService.getComponentDisplayName();\r
-\r
-               CreationService.getParameters(handleGetParametersResponse);\r
-\r
-       });\r
-\r
-       var handleGetParametersResponse = function(parameters) {\r
-               $scope.summaryControl.setList(parameters.summaryList);\r
-               $scope.userProvidedControl.setList(parameters.userProvidedList);\r
-\r
-               $scope.isSpinnerVisible = false;\r
-               $scope.isDataVisible = true;\r
-               $scope.isConfirmEnabled = true;\r
-       };\r
-       \r
-       var validateInstanceName = function(iname) {\r
-               var patt1 = /^([a-z])+([0-9a-z\-_\.]*)$/i;\r
-               \r
-               if ( iname == null ){\r
-                       return false;\r
-               }\r
-               if ( !iname.match(patt1) ) {\r
-                       return false;\r
-               }\r
-               return true;\r
-       };\r
-       var validateMap = function(mname) {\r
-               var patt1 = /^{(\s*\w+\s*:\s*\w+\s*)(\s*,\s*\w+\s*:\s*\w+\s*)*}$/im;\r
-               if ( mname == null ){\r
-                       return true;\r
-               }\r
-               if ( !mname.match(patt1) ) {\r
-                       return false;\r
-               }\r
-               return true;\r
-       };\r
-       \r
-       var validateList = function(lname) {\r
-               var patt1 = /^\[(\s*\w+\s*)(\s*,\s*\w+\s*)*\]$/i;\r
-               if ( lname == null ){\r
-                       return true;\r
-               }\r
-               if ( !lname.match(patt1) ) {\r
-                       return false;\r
-               }\r
-               return true;\r
-       };\r
-               \r
-       $scope.userParameterChanged = function(id) {\r
-               CreationService.updateUserParameterList(id, $scope.userProvidedControl);\r
-       }\r
-\r
-       $scope.confirm = function() {\r
-\r
-               var requiredFields = $scope.userProvidedControl.getRequiredFields();\r
-               if (requiredFields !== "") {\r
-                       showError(FIELD.ERROR.MISSING_DATA, requiredFields);\r
-                       return;\r
-               }\r
-       \r
-               var paramList = $scope.userProvidedControl.getList();\r
-               var instanceName = "";\r
-\r
-               if ( DataService.getALaCarte() ) {\r
-                       if ( paramList != null ) {\r
-                               for (var i = 0; i < paramList.length; i++) {\r
-                                       if (paramList[i].id === FIELD.ID.INSTANCE_NAME) {\r
-                                               instanceName = paramList[i].value;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       var isValid = validateInstanceName (instanceName);\r
-                       if ( isValid ) {\r
-                               $scope.isErrorVisible = false;\r
-                       } else {\r
-                               showError(FIELD.ERROR.INVALID_INSTANCE_NAME + instanceName, \r
-                                               FIELD.ERROR.INSTANCE_NAME_VALIDATE);\r
-                               return;\r
-                       }\r
-               }\r
-               var arbitraryParametersList = DataService.getArbitraryParameters();\r
-               var p = null;\r
-               if (UtilityService.hasContents (arbitraryParametersList)) {\r
-                       for (var i = 0; i < arbitraryParametersList.length; i++) {\r
-                               p = arbitraryParametersList[i];\r
-                               if (p.type === PARAMETER.MAP) {\r
-                                       //validate a map: { <entry_key_1>: <entry_value_1>, ... , <entry_key_n>: <entry_value_n> }\r
-                                       // need to find the value in paramList\r
-                                       for (var j = 0; j < paramList.length; j++) {\r
-                                               if (paramList[j].id === p.id) {\r
-                                                       p.value = paramList[j].value;\r
-                                                       var isValid = validateMap (p.value);\r
-                                                       if ( isValid ) {\r
-                                                               $scope.isErrorVisible = false;\r
-                                                               break;\r
-                                                       } \r
-                                                       else {\r
-                                                               showError(FIELD.ERROR.INVALID_MAP + p.id, \r
-                                                                               FIELD.ERROR.MAP_VALIDATE);\r
-                                                               return;\r
-                                                       }       \r
-                                               }\r
-                                       }\r
-                               } else if (p.type === PARAMETER.LIST) {\r
-                                       //validate a list: { value or a list of comma separated values }\r
-                                       // need to find the value in paramList\r
-                                       for (var j = 0; j < paramList.length; j++) {\r
-                                               if (paramList[j].id === p.id) {\r
-                                                       p.value = paramList[j].value;\r
-                                                       var isValid = validateList (p.value);\r
-                                                       if ( isValid ) {\r
-                                                               $scope.isErrorVisible = false;\r
-                                                               break;\r
-                                                       } \r
-                                                       else {\r
-                                                               showError(FIELD.ERROR.INVALID_LIST + p.id, \r
-                                                                               FIELD.ERROR.LIST_VALIDATE);\r
-                                                               return;\r
-                                                       }       \r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               var requestDetails = CreationService\r
-                               .getMsoRequestDetails($scope.userProvidedControl.getList());\r
-\r
-               $scope.isDialogVisible = false;\r
-\r
-               $scope.$broadcast(COMPONENT.MSO_CREATE_REQ, {\r
-                       url : CreationService.getMsoUrl(),\r
-                       requestDetails : requestDetails,\r
-                       componentId: componentId,\r
-                       callbackFunction : function(response) {\r
-                               if (response.isSuccessful) {\r
-                                       $scope.popup.isVisible = false;\r
-                                       runCallback(response);\r
-                               } else {\r
-                                       $scope.isDialogVisible = false;\r
-                                       $scope.popup.isVisible = false;\r
-                               }\r
-                       }\r
-               });\r
-       }\r
-\r
-       $scope.cancel = function() {\r
-               $scope.isDialogVisible = false;\r
-               $scope.popup.isVisible = false;\r
-               runCallback(false);\r
-       }\r
-\r
-       var runCallback = function(response) {\r
-               if (angular.isFunction(callbackFunction)) {\r
-                       callbackFunction({\r
-                               isSuccessful : response.isSuccessful,\r
-                               control : $scope.userProvidedControl.getList(),\r
-                               instanceId : response.instanceId\r
-                       });\r
-               }\r
-       }\r
-\r
-       var showError = function(summary, details) {\r
-               var message = summary;\r
-               if (UtilityService.hasContents(details)) {\r
-                       message += " (" + details + ")";\r
-               }\r
-               $scope.isSpinnerVisible = false;\r
-               $scope.isErrorVisible = true;\r
-               $scope.error = message;\r
-       }\r
-       \r
-}\r
-\r
-appDS2.controller("creationDialogController", [ "COMPONENT", "FIELD", "PARAMETER", "$scope", "$http",\r
-                               "$timeout", "$log", "CreationService", "UtilityService", "DataService","VIDCONFIGURATION",\r
-                               creationDialogController ]);\r
+var creationDialogController = function (COMPONENT, FIELD, PARAMETER, $scope, $http, $timeout, $log,\r
+                                         CreationService, UtilityService, DataService, VIDCONFIGURATION, $location) {\r
+\r
+    $scope.isDialogVisible = false;\r
+    $scope.summaryControl = {};\r
+    $scope.userProvidedControl = {};\r
+\r
+    var callbackFunction = undefined;\r
+    var componentId = undefined;\r
+\r
+    $scope.shouldShowOldPopup = function () {\r
+        return !DataService.getShouldIncludeInAsyncInstantiationFlow();\r
+    };\r
+\r
+    function receiveMessage(event) {\r
+        if (event.data == 'closeIframe') {\r
+            window.removeEventListener("message", receiveMessage, false);\r
+\r
+            $scope.cancel();\r
+        }\r
+        else if (event.data.eventId == 'submitIframe') {\r
+            {\r
+                $location.path('/servicePlanning').search({serviceModelId: event.data.data.serviceModelId});\r
+            }\r
+        }\r
+        $scope.$apply();\r
+    }\r
+\r
+    $scope.$on(COMPONENT.CREATE_COMPONENT, function (event, request) {\r
+        $scope.isSpinnerVisible = true;\r
+        $scope.isErrorVisible = false;\r
+        $scope.isDataVisible = false;\r
+        $scope.isConfirmEnabled = false;\r
+        $scope.isDialogVisible = true;\r
+        $scope.popup.isVisible = true;\r
+\r
+\r
+        if (!$scope.shouldShowOldPopup()) {\r
+            $scope.url = COMPONENT.SERVICE_POPUP_IFRAME_URL + request.modelNameVersionId + "&isCreate=true&r=" + Math.random();\r
+            window.addEventListener("message", receiveMessage, false);\r
+\r
+        }\r
+        else {\r
+            callbackFunction = request.callbackFunction;\r
+            componentId = request.componentId;\r
+            CreationService.initializeComponent(request.componentId);\r
+\r
+            CreationService.setHttpErrorHandler(function (response) {\r
+                showError(FIELD.ERROR.SYSTEM_FAILURE, UtilityService\r
+                    .getHttpErrorMessage(response));\r
+            });\r
+\r
+            $scope.componentName = CreationService.getComponentDisplayName();\r
+\r
+            CreationService.getParameters(handleGetParametersResponse);\r
+        }\r
+\r
+    });\r
+\r
+    var handleGetParametersResponse = function (parameters) {\r
+        $scope.summaryControl.setList(parameters.summaryList);\r
+        $scope.userProvidedControl.setList(parameters.userProvidedList);\r
+\r
+        $scope.isSpinnerVisible = false;\r
+        $scope.isDataVisible = true;\r
+        $scope.isConfirmEnabled = true;\r
+    };\r
+\r
+    var validateInstanceName = function (iname) {\r
+        var patt1 = /^([a-z])+([0-9a-z\-_\.]*)$/i;\r
+\r
+        if (iname == null) {\r
+            return false;\r
+        }\r
+        if (!iname.match(patt1)) {\r
+            return false;\r
+        }\r
+        return true;\r
+    };\r
+    var validateMap = function (mname) {\r
+        var patt1 = /^{(\s*\w+\s*:\s*\w+\s*)(\s*,\s*\w+\s*:\s*\w+\s*)*}$/im;\r
+        if (mname == null) {\r
+            return true;\r
+        }\r
+        if (!mname.match(patt1)) {\r
+            return false;\r
+        }\r
+        return true;\r
+    };\r
+\r
+    var validateList = function (lname) {\r
+        var patt1 = /^\[(\s*\w+\s*)(\s*,\s*\w+\s*)*\]$/i;\r
+        if (lname == null) {\r
+            return true;\r
+        }\r
+        if (!lname.match(patt1)) {\r
+            return false;\r
+        }\r
+        return true;\r
+    };\r
+\r
+    $scope.userParameterChanged = function (id) {\r
+        CreationService.updateUserParameterList(id, $scope.userProvidedControl);\r
+    };\r
+\r
+    $scope.confirm = function () {\r
+\r
+        var requiredFields = $scope.userProvidedControl.getRequiredFields();\r
+        if (requiredFields !== "") {\r
+            showError(FIELD.ERROR.MISSING_DATA, requiredFields);\r
+            return;\r
+        }\r
+\r
+        var isUploadAvailable = false;\r
+        var uploadIndex = 0;\r
+        var paramList = $scope.userProvidedControl.getList();\r
+        var isAnyError = false;\r
+        for (var i = 0; i < paramList.length; i++) {\r
+            if (paramList[i].id === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {\r
+                isUploadAvailable = true;\r
+                uploadIndex = i;\r
+            }\r
+            if (paramList[i].id === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE && paramList[i].value && document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE).value == '') {\r
+                isAnyError = true;\r
+            }\r
+        }\r
+\r
+        if (isUploadAvailable && isAnyError) {\r
+            showError(FIELD.ERROR.MISSING_DATA, FIELD.ERROR.MISSING_FILE);\r
+\r
+        } else if (isUploadAvailable && document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE).value != '') {\r
+            var errorMsg = "";\r
+            var fileInput = document.getElementById(FIELD.ID.SUPPLEMENTORY_DATA_FILE);\r
+            var file = fileInput.files[0];\r
+            var reader = new FileReader();\r
+            reader.onload = function (e) {\r
+                try {\r
+                    paramList[uploadIndex].value = JSON.parse(reader.result);\r
+                    FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value'] = paramList[uploadIndex].value;\r
+\r
+                    var instanceName = "";\r
+\r
+                    if (DataService.getALaCarte()) {\r
+                        if (paramList != null) {\r
+                            for (var i = 0; i < paramList.length; i++) {\r
+                                if (paramList[i].id === FIELD.ID.INSTANCE_NAME) {\r
+                                    instanceName = paramList[i].value;\r
+                                    break;\r
+                                }\r
+                            }\r
+                        }\r
+                        var isValid = validateInstanceName(instanceName);\r
+                        if (isValid) {\r
+                            $scope.isErrorVisible = false;\r
+                        } else {\r
+                            showError(FIELD.ERROR.INVALID_INSTANCE_NAME + instanceName,\r
+                                FIELD.ERROR.INSTANCE_NAME_VALIDATE);\r
+                            return;\r
+                        }\r
+                    }\r
+                    var arbitraryParametersList = DataService.getArbitraryParameters();\r
+                    var p = null;\r
+                    if (UtilityService.hasContents(arbitraryParametersList)) {\r
+                        for (var i = 0; i < arbitraryParametersList.length; i++) {\r
+                            p = arbitraryParametersList[i];\r
+                            if (p.type === PARAMETER.MAP) {\r
+                                //validate a map: { <entry_key_1>: <entry_value_1>, ... , <entry_key_n>: <entry_value_n> }\r
+                                // need to find the value in paramList\r
+                                for (var j = 0; j < paramList.length; j++) {\r
+                                    if (paramList[j].id === p.id) {\r
+                                        p.value = paramList[j].value;\r
+                                        var isValid = validateMap(p.value);\r
+                                        if (isValid) {\r
+                                            $scope.isErrorVisible = false;\r
+                                            break;\r
+                                        }\r
+                                        else {\r
+                                            showError(FIELD.ERROR.INVALID_MAP + p.id,\r
+                                                FIELD.ERROR.MAP_VALIDATE);\r
+                                            return;\r
+                                        }\r
+                                    }\r
+                                }\r
+                            } else if (p.type === PARAMETER.LIST) {\r
+                                //validate a list: { value or a list of comma separated values }\r
+                                // need to find the value in paramList\r
+                                for (var j = 0; j < paramList.length; j++) {\r
+                                    if (paramList[j].id === p.id) {\r
+                                        p.value = paramList[j].value;\r
+                                        var isValid = validateList(p.value);\r
+                                        if (isValid) {\r
+                                            $scope.isErrorVisible = false;\r
+                                            break;\r
+                                        }\r
+                                        else {\r
+                                            showError(FIELD.ERROR.INVALID_LIST + p.id,\r
+                                                FIELD.ERROR.LIST_VALIDATE);\r
+                                            return;\r
+                                        }\r
+                                    }\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                    var requestDetails = CreationService\r
+                        .getMsoRequestDetails($scope.userProvidedControl.getList());\r
+\r
+                    $scope.isDialogVisible = false;\r
+\r
+                    $scope.$broadcast(COMPONENT.MSO_CREATE_REQ, {\r
+                        url: CreationService.getMsoUrl(),\r
+                        requestDetails: requestDetails,\r
+                        componentId: componentId,\r
+                        callbackFunction: function (response) {\r
+                            if (response.isSuccessful) {\r
+                                $scope.popup.isVisible = false;\r
+                                runCallback(response);\r
+                            } else {\r
+                                $scope.isDialogVisible = false;\r
+                                $scope.popup.isVisible = false;\r
+                            }\r
+                        }\r
+                    });\r
+\r
+                } catch (e) {\r
+                    errorMsg = errorMsg + FIELD.ERROR.INVALID_DATA_FORMAT;\r
+                }\r
+                if (errorMsg !== "") {\r
+                    showError(FIELD.ERROR.SYSTEM_FAILURE, errorMsg);\r
+\r
+                }\r
+            };\r
+            reader.readAsText(file);\r
+        } else {\r
+\r
+            var paramList = $scope.userProvidedControl.getList();\r
+            var instanceName = "";\r
+\r
+            if (DataService.getALaCarte()) {\r
+                if (paramList != null) {\r
+                    for (var i = 0; i < paramList.length; i++) {\r
+                        if (paramList[i].id === FIELD.ID.INSTANCE_NAME) {\r
+                            instanceName = paramList[i].value;\r
+                            break;\r
+                        }\r
+                    }\r
+                }\r
+                var isValid = validateInstanceName(instanceName);\r
+                if (isValid) {\r
+                    $scope.isErrorVisible = false;\r
+                } else {\r
+                    showError(FIELD.ERROR.INVALID_INSTANCE_NAME + instanceName,\r
+                        FIELD.ERROR.INSTANCE_NAME_VALIDATE);\r
+                    return;\r
+                }\r
+            }\r
+            var arbitraryParametersList = DataService.getArbitraryParameters();\r
+            var p = null;\r
+            if (UtilityService.hasContents(arbitraryParametersList)) {\r
+                for (var i = 0; i < arbitraryParametersList.length; i++) {\r
+                    p = arbitraryParametersList[i];\r
+                    if (p.type === PARAMETER.MAP) {\r
+                        //validate a map: { <entry_key_1>: <entry_value_1>, ... , <entry_key_n>: <entry_value_n> }\r
+                        // need to find the value in paramList\r
+                        for (var j = 0; j < paramList.length; j++) {\r
+                            if (paramList[j].id === p.id) {\r
+                                p.value = paramList[j].value;\r
+                                var isValid = validateMap(p.value);\r
+                                if (isValid) {\r
+                                    $scope.isErrorVisible = false;\r
+                                    break;\r
+                                }\r
+                                else {\r
+                                    showError(FIELD.ERROR.INVALID_MAP + p.id,\r
+                                        FIELD.ERROR.MAP_VALIDATE);\r
+                                    return;\r
+                                }\r
+                            }\r
+                        }\r
+                    } else if (p.type === PARAMETER.LIST) {\r
+                        //validate a list: { value or a list of comma separated values }\r
+                        // need to find the value in paramList\r
+                        for (var j = 0; j < paramList.length; j++) {\r
+                            if (paramList[j].id === p.id) {\r
+                                p.value = paramList[j].value;\r
+                                var isValid = validateList(p.value);\r
+                                if (isValid) {\r
+                                    $scope.isErrorVisible = false;\r
+                                    break;\r
+                                }\r
+                                else {\r
+                                    showError(FIELD.ERROR.INVALID_LIST + p.id,\r
+                                        FIELD.ERROR.LIST_VALIDATE);\r
+                                    return;\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            var requestDetails = CreationService\r
+                .getMsoRequestDetails($scope.userProvidedControl.getList());\r
+\r
+            $scope.isDialogVisible = false;\r
+\r
+            $scope.$broadcast(COMPONENT.MSO_CREATE_REQ, {\r
+                url: CreationService.getMsoUrl(),\r
+                requestDetails: requestDetails,\r
+                componentId: componentId,\r
+                callbackFunction: function (response) {\r
+                    if (response.isSuccessful) {\r
+                        $scope.popup.isVisible = false;\r
+                        runCallback(response);\r
+                    } else {\r
+                        $scope.isDialogVisible = false;\r
+                        $scope.popup.isVisible = false;\r
+                    }\r
+                }\r
+            });\r
+        }\r
+    };\r
+\r
+    $scope.cancel = function () {\r
+        $scope.isDialogVisible = false;\r
+        $scope.popup.isVisible = false;\r
+        runCallback(false);\r
+    };\r
+\r
+\r
+    var runCallback = function (response) {\r
+        if (angular.isFunction(callbackFunction)) {\r
+            callbackFunction({\r
+                isSuccessful: response.isSuccessful,\r
+                control: $scope.userProvidedControl.getList(),\r
+                instanceId: response.instanceId\r
+            });\r
+        }\r
+    };\r
+\r
+    var showError = function (summary, details) {\r
+        var message = summary;\r
+        if (UtilityService.hasContents(details)) {\r
+            message += " (" + details + ")";\r
+        }\r
+        $scope.isSpinnerVisible = false;\r
+        $scope.isErrorVisible = true;\r
+        $scope.error = message;\r
+    }\r
+\r
+};\r
+\r
+appDS2.controller("creationDialogController", ["COMPONENT", "FIELD", "PARAMETER", "$scope", "$http",\r
+    "$timeout", "$log", "CreationService", "UtilityService", "DataService", "VIDCONFIGURATION", "$location",\r
+    creationDialogController]);\r