{"version":3,"sources":["controllers/views/view.softwareUpdate.js"],"names":["angular","module","config","$stateProvider","state","parent","url","templateUrl","controller","$scope","$timeout","$state","__DatapointValue","__DatapointConfig","f_Interval","conf_guidEmpty","appConfig","$http","$rootScope","API","f_User","frontEndSettingsService","ENUM","$filter","xCenterConfig","startActionAfterRestart","undefined","remoteConfig","reload","Security","Logout","setUserLevel","go","notLoggedIn","StatusText","getFrontendSettings","then","settings","pauseAllRunningInvervals","OrgId","Percent","o","DatapointConfigId","DeviceId","startUpdate","$type","systemDatapoints","InitiateUpdate","$ByDeviceId","DatapointConfigIds","$collection","$then","Value","data","handleNewStatus","$refresh","fn","$buildRaw","$save","AppId","delay","waitForConnection","registerInterval","intervalId","i","status","PossibleValues","DownloadTimeout","cancel","StatusTitle","CheckDownloadProgress","startedWaiting","unregisterAllIntervals","unregisterIntervalByAppId","timeoutEx","surpressErrors","headers","response","getEnum","resp","isServerAwake","blockAllInteraction","method","api_host","destinationId","Content-Type","isRemoteConfigActive","ExceptionData","ExeptionType","EnumValueKeyNumber","init"],"mappings":"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","file":"view.softwareUpdate.js","sourcesContent":["\"use strict\";\r\n\r\nangular.module('app.controllers.softwareUpdate', []).config(['$stateProvider', function($stateProvider) {\r\n $stateProvider.state('softwareUpdate', {\r\n parent: 'site',\r\n url: '/softwareUpdate',\r\n templateUrl: 'views/CustomActions/softwareUpdate.html',\r\n controller: 'softwareUpdateCtrl'\r\n });\r\n}]).controller(\"softwareUpdateCtrl\", ['$scope', '$timeout', '$state', '__DatapointValue', '__DatapointConfig', 'f_Interval', 'conf_guidEmpty', 'appConfig', '$http', '$rootScope', 'API', 'f_User', 'frontEndSettingsService', 'ENUM', '$filter', 'xCenterConfig',\r\n function($scope, $timeout, $state, __DatapointValue, __DatapointConfig, f_Interval, conf_guidEmpty, appConfig, $http, $rootScope, API, f_User, frontEndSettingsService, ENUM, $filter, xCenterConfig) {\r\n $scope.init = function() {\r\n $scope.StatusText = '';\r\n frontEndSettingsService.getFrontendSettings()\r\n .then(function(settings) {\r\n $scope.orgId = settings.OrgId;\r\n });\r\n f_Interval.pauseAllRunningInvervals();\r\n $scope.Percent = 0;\r\n var o = [{\r\n 'DatapointConfigId': '61afe142-5709-47f3-9624-511f6c96ec00',\r\n 'DeviceId': conf_guidEmpty\r\n }];\r\n // Datapoint to write. On Device 00000 \"0c4e9f8a-d0b7-4474-86f8-77a1adb0889d\"\r\n var startUpdate = {\r\n '$type': \"BMS.Shared.DatapointCore.DatapointValue`1[[System.Boolean, mscorlib]], BMS.Shared\",\r\n 'DatapointConfigId': xCenterConfig.systemDatapoints.InitiateUpdate,\r\n 'DeviceId': conf_guidEmpty,\r\n 'Value': true,\r\n };\r\n __DatapointConfig\r\n .$ByDeviceId({\r\n DeviceId: conf_guidEmpty,\r\n DatapointConfigIds: ['61afe142-5709-47f3-9624-511f6c96ec00']\r\n })\r\n .$then(function(data) {\r\n $scope.config = data[0];\r\n $scope.status = __DatapointValue.$collection(o).$refresh().$then(function(data) {\r\n // If new Version is available for installation\r\n if (data[0].Value) {\r\n // Set update to true!!!\r\n $scope.handleNewStatus(1);\r\n\r\n __DatapointValue.$buildRaw(startUpdate).$save().$then(function() {\r\n // Now init intervall for listeing Software Update Status\r\n $scope.i = {\r\n 'AppId': 'interval.softwareUpdate.Status',\r\n delay: 2000,\r\n fn: function() {\r\n __DatapointValue\r\n .$collection(o)\r\n .$refresh()\r\n .$then(function(data) {\r\n $scope.handleNewStatus(data[0].Value);\r\n }, function(data) {\r\n // Server is Restarting\r\n $scope.waitForConnection();\r\n });\r\n }\r\n };\r\n\r\n $scope.intervalId = f_Interval.registerInterval($scope.i);\r\n });\r\n\r\n } else {\r\n // if different Status. Redirect.\r\n // Mostly Version up do date => $state.go('main');\r\n $scope.handleNewStatus(data[0].Value);\r\n }\r\n\r\n\r\n });\r\n });\r\n };\r\n\r\n\r\n\r\n\r\n $scope.handleNewStatus = function(status) {\r\n $scope.StatusText = status + '--' + $scope.config.PossibleValues[status];\r\n switch (status) {\r\n case 0:\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_VersionUpToDate';\r\n $scope.Percent = -1;\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n $timeout(function() {\r\n $state.go('main');\r\n }, 4000);\r\n break;\r\n case 1:\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_Downloading';\r\n $scope.Percent = -1;\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n break;\r\n case 2:\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_Downloading';\r\n // If timeout exists,\r\n $scope.CheckDownloadProgress = function() {\r\n var o = [{\r\n 'DatapointConfigId': '11280ea1-c02d-434e-9ed0-b17be8a5e4b6',\r\n 'DeviceId': conf_guidEmpty\r\n }];\r\n __DatapointValue\r\n .$collection(o)\r\n .$refresh()\r\n .$then(function(data) {\r\n $scope.Percent = data[0].Value;\r\n }, function(data) {\r\n // Server is Restarting\r\n $scope.waitForConnection();\r\n });\r\n\r\n $scope.DownloadTimeout = $timeout(function() {\r\n // fetch donwload progress\r\n $scope.CheckDownloadProgress();\r\n }, 2000);\r\n };\r\n if (!$scope.DownloadTimeout) {\r\n $scope.CheckDownloadProgress();\r\n }\r\n\r\n break;\r\n case 3:\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_DownloadFinished';\r\n $scope.Percent = 100;\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n\r\n break;\r\n case 4:\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_NoConnection';\r\n $scope.Percent = -1;\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n $timeout(function() {\r\n $state.go('main');\r\n }, 4000);\r\n break;\r\n case 5:\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_UpdateError';\r\n $scope.Percent = -1;\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n $timeout(function() {\r\n $state.go('main');\r\n }, 4000);\r\n break;\r\n case 6:\r\n // Version not found\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_VersionNotFound';\r\n $scope.Percent = -1;\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n $timeout(function() {\r\n $state.go('main');\r\n }, 4000);\r\n break;\r\n case 7:\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_Unpacking';\r\n $scope.Percent = -1;\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n break;\r\n case 8:\r\n $scope.StatusTitle = $scope.config.PossibleValues[status];\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_OSUpdate';\r\n $scope.Percent = -1;\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n break;\r\n }\r\n };\r\n\r\n\r\n $scope.waitForConnection = function() {\r\n // DatapointValue (Percent) Timeout called before Value of UpdateStatus\r\n if ($scope.startedWaiting == true) {\r\n return;\r\n }\r\n $scope.startedWaiting = true;\r\n f_Interval.unregisterAllIntervals();\r\n f_Interval.unregisterIntervalByAppId('interval.softwareUpdate.Status');\r\n f_Interval.unregisterIntervalByAppId($scope.i);\r\n if ($scope.DownloadTimeout) {\r\n $timeout.cancel($scope.DownloadTimeout);\r\n }\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_OSUpdate';\r\n $timeout(function() {\r\n ENUM.getEnum('ExceptionType')\r\n .$then(function(resp) {\r\n $scope.timeoutEx = ($filter('filter')(resp, {\r\n EnumValueKey: 'Timeout'\r\n }, true))[0];\r\n });\r\n\r\n $scope.isServerAwake();\r\n }, 5000);\r\n };\r\n\r\n $scope.isServerAwake = function() {\r\n $rootScope.blockAllInteraction = 'SoftwareUpdate';\r\n $rootScope.surpressErrors = true;\r\n\r\n $http({\r\n method: 'POST',\r\n url: appConfig().api_host + 'Favorite/GetFavorites/' + appConfig().destinationId,\r\n data: '',\r\n headers: {\r\n 'Content-Type': 'application/json;charset=UTF-8'\r\n }})\r\n .then(function(response) {\r\n if (response\r\n && response.data\r\n && response.data.ExceptionData\r\n && response.data.ExceptionData.ExeptionType === $scope.timeoutEx.EnumValueKeyNumber) {\r\n $timeout(function() {\r\n $scope.isServerAwake();\r\n }, 5000);\r\n return;\r\n }\r\n\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_Finished';\r\n\r\n $timeout(function() {\r\n startActionAfterRestart();\r\n }, 2000);\r\n }, function(resp) {\r\n // Server is not awake. Restarting\r\n if (resp && (resp.status === 401 || resp.status === 200)) {\r\n $scope.StatusText = 'SYSTEM_SoftwareUpdate_Finished';\r\n $timeout(function() {\r\n $rootScope.blockAllInteraction = false;\r\n startActionAfterRestart();\r\n }, 5000);\r\n } else {\r\n $scope.StatusText = 'SYSTEM_RestartBody';\r\n $timeout(function() {\r\n $scope.isServerAwake();\r\n }, 5000);\r\n }\r\n\r\n });\r\n };\r\n\r\n function startActionAfterRestart() {\r\n const isRemoteConfigActive = (remoteConfig !== undefined ? true : false);\r\n\r\n if (isRemoteConfigActive) {\r\n $state.reload();\r\n } else {\r\n doLogout();\r\n }\r\n }\r\n\r\n function doLogout() {\r\n var api = new API();\r\n api.Security.Logout();\r\n f_User.setUserLevel(0);\r\n $timeout(function() {\r\n $state.go('login', {\r\n notLoggedIn: true\r\n }, {\r\n 'reload': true\r\n });\r\n }, 5000);\r\n }\r\n\r\n $scope.init();\r\n\r\n }\r\n]);\r\n"],"sourceRoot":"../../../../app"}