diff options
Diffstat (limited to 'www')
| -rw-r--r-- | www/js/LoginCtrl.js | 2 | ||||
| -rw-r--r-- | www/js/MenuController.js | 207 | ||||
| -rwxr-xr-x | www/js/app.js | 4 | ||||
| -rw-r--r-- | www/templates/menu.html | 2 |
4 files changed, 212 insertions, 3 deletions
diff --git a/www/js/LoginCtrl.js b/www/js/LoginCtrl.js index 793d28cf..23d442bf 100644 --- a/www/js/LoginCtrl.js +++ b/www/js/LoginCtrl.js @@ -458,6 +458,8 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r //console.log('Saving login'); NVRDataModel.debug ("Inside save Items"); + + $rootScope.alarmCount = 0; NVRDataModel.setFirstUse(false); NVRDataModel.setCurrentServerVersion(''); diff --git a/www/js/MenuController.js b/www/js/MenuController.js index f09d1c69..acc5f266 100644 --- a/www/js/MenuController.js +++ b/www/js/MenuController.js @@ -2,7 +2,7 @@ /* jslint browser: true*/ /* global cordova,StatusBar,angular,console */ -angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$ionicSideMenuDelegate', 'zm', '$stateParams', '$ionicHistory', '$state', 'NVRDataModel', '$rootScope', '$ionicPopup', '$translate', '$timeout', '$location',function ($scope, $ionicSideMenuDelegate, zm, $stateParams, $ionicHistory, $state, NVRDataModel, $rootScope, $ionicPopup, $translate, $timeout, $location) { +angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$ionicSideMenuDelegate', 'zm', '$stateParams', '$ionicHistory', '$state', 'NVRDataModel', '$rootScope', '$ionicPopup', '$translate', '$timeout', '$location','EventServer', 'zmAutoLogin','$http',function ($scope, $ionicSideMenuDelegate, zm, $stateParams, $ionicHistory, $state, NVRDataModel, $rootScope, $ionicPopup, $translate, $timeout, $location, EventServer, zmAutoLogin, $http) { $scope.openMenu = function () { $ionicSideMenuDelegate.toggleLeft(); }; @@ -45,6 +45,211 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io }; + function switchToServer(s) { + + $rootScope.alarmCount = 0; + if ($ionicSideMenuDelegate.isOpen()) { + $ionicSideMenuDelegate.toggleLeft(); + + } + + // First lets kill current stuf + NVRDataModel.debug ("** Resetting existing server"); + var cld = NVRDataModel.getLogin(); + if (cld.isUseEventServer) { + NVRDataModel.debug ("Stopping Event server"); + EventServer.disconnect(); + } + + + NVRDataModel.debug ("**Switching to new server..."); + + var zmServers = NVRDataModel.getServerGroups(); + var loginData = zmServers[s]; + NVRDataModel.debug("Retrieved state for this profile:" + JSON.stringify(loginData)); + NVRDataModel.setLogin(loginData); + + if (loginData.isUseEventServer) { + EventServer.init(); + if ($rootScope.apnsToken && loginData.disablePush != true) { + NVRDataModel.log("Making sure we get push notifications"); + EventServer.sendMessage('push', { + type: 'token', + platform: $rootScope.platformOS, + token: $rootScope.apnsToken, + state: "enabled" + }, 1); + } + EventServer.sendMessage("control", { + type: 'filter', + monlist: loginData.eventServerMonitors, + intlist: loginData.eventServerInterval + }); + } + + + var apiurl = loginData.apiurl + '/host/getVersion.json'; + var portalurl = loginData.url + '/index.php'; + + zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0; color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i> " + $translate.instant('kAuthenticating') + "...</button>") + // Do the happy menu only if authentication works + // if it does not work, there is an emitter for auth + // fail in app.js that will be called to show an error + // box + + .then(function (data) { + + + // possible image digits changed between servers + NVRDataModel.getKeyConfigParams(0); + + NVRDataModel.log("Validating APIs at " + apiurl); + $http.get(apiurl) + .success(function (data) { + + NVRDataModel.getTimeZone(true); + var loginStatus = $translate.instant('kExploreEnjoy') + " " + $rootScope.appName + "!"; + EventServer.refresh(); + + // now grab and report PATH_ZMS + NVRDataModel.getPathZms() + .then(function (data) { + var ld = NVRDataModel.getLogin(); + var zm_cgi = data.toLowerCase(); + + var user_cgi = (ld.streamingurl).toLowerCase(); + NVRDataModel.log("ZM relative cgi-path: " + zm_cgi + ", you entered: " + user_cgi); + + $http.get(ld.streamingurl + "/zms") + .success(function (data) { + NVRDataModel.debug("Urk! cgi-path returned success, but it should not have come here"); + loginStatus = $translate.instant('kLoginStatusNoCgi'); + + NVRDataModel.debug("refreshing API version..."); + NVRDataModel.getAPIversion() + .then(function (data) { + $rootScope.apiVersion = data; + var refresh = NVRDataModel.getMonitors(1) + .then (function () { + + + $state.go('app.refresh', { + "view": $state.current.name + }); + return; + }); + + + }, + function (error) { + var refresh = NVRDataModel.getMonitors(1); + + $rootScope.apiVersion = "0.0.0"; + NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion); + + $state.go('app.refresh', { + "view": $state.current.name + }); + return; + + }); + + }) + .error(function (error, status) { + // If its 5xx, then the cgi-bin path is valid + // if its 4xx then the cgi-bin path is not valid + + if (status < 500) { + loginStatus = $translate.instant('kLoginStatusNoCgiAlt'); + } + + NVRDataModel.displayBanner((status < 500) ? 'error' : 'info', [loginStatus]); + + NVRDataModel.debug("refreshing API version..."); + NVRDataModel.getAPIversion() + .then(function (data) { + var refresh = NVRDataModel.getMonitors(1); + $rootScope.apiVersion = data; + $state.go('app.refresh', { + "view": $state.current.name + }); + return; + }, + function (error) { + var refresh = NVRDataModel.getMonitors(1); + $rootScope.apiVersion = "0.0.0"; + NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion); + $state.go('app.refresh', { + "view": $state.current.name + }); + return; + }); + + }); + }); + + }) + .error(function (error) { + NVRDataModel.displayBanner('error', [$translate.instant('kBannerAPICheckFailed'), $translate.instant('kBannerPleaseCheck')]); + NVRDataModel.log("API login error " + JSON.stringify(error)); + + $rootScope.zmPopup = SecuredPopups.show('alert', { + title: $translate.instant('kLoginValidAPIFailedTitle'), + template: $translate.instant('kBannerPleaseCheck'), + okText: $translate.instant('kButtonOk'), + cancelText: $translate.instant('kButtonCancel'), + }); + }); + }); + + + } + + $scope.switchProfiles = function () { + + $scope.newServer = { + val:"" + } + $scope.avs = Object.keys(NVRDataModel.getServerGroups()); + + $scope.avs = $scope.avs.filter(function() { return true; }); + + if ($scope.avs.length <= 1) { + return; + } + + $rootScope.zmPopup = $ionicPopup.show({ + scope: $scope, + template: '<ion-radio-fix ng-if="item" ng-repeat="item in avs" ng-value="item" ng-model="newServer.val"> {{item}} </ion-radio-fix>', + + title: $translate.instant('kSelectLanguage'), + + buttons: [{ + text: $translate.instant('kButtonCancel'), + onTap: function (e) { + //return "CANCEL"; + } + + }, + { + text: $translate.instant('kButtonOk'), + onTap: function (e) { + NVRDataModel.log("Server selected:" + $scope.newServer.val); + switchToServer($scope.newServer.val); + + //$rootScope.$broadcast('server-changed'); + + //return "OK"; + + } + } + ] + }); + + + + }; + $scope.switchLang = function () { $scope.lang = NVRDataModel.getLanguages(); diff --git a/www/js/app.js b/www/js/app.js index b5f1b804..abe2b0bd 100755 --- a/www/js/app.js +++ b/www/js/app.js @@ -1751,7 +1751,7 @@ angular.module('zmApp', [ - if (NVRDataModel.hasLoginInfo() || toState.data.requireLogin == false) { + if ((NVRDataModel.hasLoginInfo() || toState.data.requireLogin == false) && toState.name != "app.invalidapi" && toState.name != "app.refresh") { //console.log("State transition is authorized"); NVRDataModel.debug ("Setting last-desktop-state to:"+JSON.stringify(toState)); localforage.setItem('last-desktop-state', { @@ -1766,7 +1766,7 @@ angular.module('zmApp', [ // $rootScope.dpadState = "login"; - $state.transitionTo('login'); + $state.transitionTo('app.login'); } diff --git a/www/templates/menu.html b/www/templates/menu.html index 0c1d06a3..32fc15e7 100644 --- a/www/templates/menu.html +++ b/www/templates/menu.html @@ -10,7 +10,9 @@ </ion-side-menu-content> <ion-side-menu> <ion-header-bar class="bar bar-header bar-stable"> + <button class="button icon ion-person-stalker" ng-click="switchProfiles()"></button> <h1 class="title">{{'kMenuOptions'|translate}}</h1> + </button> </ion-header-bar> <ion-content has-header="true" mouse-wheel-scroll> <!-- <ion-scroll scrollbar-y="false" style="height:100%" >--> |
