summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2016-09-01 11:44:40 -0400
committerPliable Pixels <pliablepixels@gmail.com>2016-09-01 11:44:40 -0400
commit2e1a669455190e3d0d857e613cc34cd22f4862c0 (patch)
tree850e2d0abcd5dbbc603b5f054725691ed5abb951
parentdc5dd1c8684266c320cccd6e8943b5d419a280e4 (diff)
mostly formatting and removal of console.logs
Former-commit-id: 5cbac40ad5ccb7096fb7b9f58696e923ba282232
-rw-r--r--www/js/DataModel.js119
-rw-r--r--www/js/DevOptionsCtrl.js71
-rw-r--r--www/js/EventCtrl.js2690
-rw-r--r--www/js/EventDateTimeFilterCtrl.js52
-rw-r--r--www/js/EventModalCtrl.js26
-rw-r--r--www/js/EventServer.js171
-rw-r--r--www/js/EventServerSettingsCtrl.js79
-rw-r--r--www/js/EventsGraphsCtrl.js36
-rw-r--r--www/js/EventsModalGraphCtrl.js472
-rw-r--r--www/js/FirstUseCtrl.js69
-rw-r--r--www/js/HelpCtrl.js89
-rw-r--r--www/js/ImportantMessageCtrl.js14
-rw-r--r--www/js/LogCtrl.js197
-rw-r--r--www/js/LoginCtrl.js362
-rw-r--r--www/js/MenuController.js8
-rw-r--r--www/js/MonitorCtrl.js81
-rw-r--r--www/js/MonitorModalCtrl.js968
-rw-r--r--www/js/MontageCtrl.js1341
-rw-r--r--www/js/MontageHistoryCtrl.js1179
-rw-r--r--www/js/NewsCtrl.js120
-rw-r--r--www/js/PortalLoginCtrl.js396
-rw-r--r--www/js/StateCtrl.js56
-rw-r--r--www/js/TimelineCtrl.js363
-rw-r--r--www/js/TimelineModalCtrl.js564
-rw-r--r--www/js/WizardCtrl.js20
-rw-r--r--www/js/app.js370
-rw-r--r--www/js/controllers.js33
27 files changed, 4851 insertions, 5095 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js
index 109745fe..5f292909 100644
--- a/www/js/DataModel.js
+++ b/www/js/DataModel.js
@@ -142,43 +142,39 @@ angular.module('zmApp.controllers')
//--------------------------------------------------------------------------
// uses fileLogger to write logs to file for later investigation
//--------------------------------------------------------------------------
-
+
// separate out a debug so we don't do this if comparison for normal logs
function zmDebug(val) {
- if (loginData.enableDebug && loginData.enableLogs)
- {
- if (val!== undefined)
- {
- var regex1 = /"password":".*?"/g;
- var regex2 = /&pass=.*?(?=["&]|$)/g;
-
+ if (loginData.enableDebug && loginData.enableLogs) {
+ if (val !== undefined) {
+ var regex1 = /"password":".*?"/g;
+ var regex2 = /&pass=.*?(?=["&]|$)/g;
+
//console.log ("VAL IS " + val);
val = val.replace(regex1, "<password removed>");
val = val.replace(regex2, "<password removed>");
}
$fileLogger.debug(val);
- //console.log (val);
+ //console.log (val);
}
}
-
+
function zmLog(val, logtype) {
- if (loginData.enableLogs)
- {
- if (val!== undefined)
- {
- var regex1 = /"password":".*?"/g;
- var regex2 = /&pass=.*?(?=["&]|$)/g;
-
+ if (loginData.enableLogs) {
+ if (val !== undefined) {
+ var regex1 = /"password":".*?"/g;
+ var regex2 = /&pass=.*?(?=["&]|$)/g;
+
//console.log ("VAL IS " + val);
val = val.replace(regex1, "<password removed>");
val = val.replace(regex2, "<password removed>");
-
+
}
// make sure password is removed
//"username":"zmninja","password":"xyz",
//val = val.replace(/\"password:\",
$fileLogger.log(logtype, val);
- // console.log (val);
+ // console.log (val);
}
}
@@ -188,10 +184,10 @@ angular.module('zmApp.controllers')
function setLogin(newLogin) {
loginData = angular.copy(newLogin);
serverGroupList[loginData.serverName] = angular.copy(loginData);
-
+
var ct = CryptoJS.AES.encrypt(JSON.stringify(serverGroupList), zm.cipherKey).toString();
-
- console.log ("****serverLogin was encrypted to " + ct);
+
+ //console.log ("****serverLogin was encrypted to " + ct);
//$localstorage.setObject("serverGroupList", serverGroupList);
localforage.setItem("serverGroupList", ct, function (err) {
if (err) zmLog("localforage store error " + JSON.stringify(err));
@@ -206,7 +202,7 @@ angular.module('zmApp.controllers')
}
-
+
//credit: https://gist.github.com/alexey-bass/1115557
function versionCompare(left, right) {
@@ -277,7 +273,7 @@ angular.module('zmApp.controllers')
zmDebug: function (val) {
-
+
zmDebug(val);
},
@@ -291,7 +287,7 @@ angular.module('zmApp.controllers')
},
setLatestBlogPostChecked: function (val) {
- console.log (">>>>>>>>>>>> Setting blog date: " + val);
+ //console.log (">>>>>>>>>>>> Setting blog date: " + val);
latestBlogPostChecked = val;
localforage.setItem("latestBlogPostChecked", latestBlogPostChecked);
},
@@ -388,7 +384,7 @@ angular.module('zmApp.controllers')
//$localstorage.set("defaultServerName",firstReachableUrl.server);
zmLog("Based on reachability, first serverName will be " + firstReachableUrl.server);
- console.log("set login Data to " + JSON.stringify(loginData));
+ //console.log("set login Data to " + JSON.stringify(loginData));
return d.promise;
// OK: do something with firstReachableUrl
@@ -454,43 +450,40 @@ angular.module('zmApp.controllers')
zmLog("ZMData init: checking for stored variables & setting up log file");
-
+
latestBlogPostChecked = localforage.getItem("latestBlogPostChecked") || null;
$ionicLoading.show({
template: "retrieving profile data..."
});
-
-
-
-
+
+
+
+
localforage.getItem("serverGroupList").then(function (val) {
// decrypt it now
-
+
var decodedVal;
-
- if (typeof val == 'string')
- {
- zmLog ("user profile encrypted, decoding...");
- var bytes = CryptoJS.AES.decrypt(val.toString(), zm.cipherKey);
+
+ if (typeof val == 'string') {
+ zmLog("user profile encrypted, decoding...");
+ var bytes = CryptoJS.AES.decrypt(val.toString(), zm.cipherKey);
decodedVal = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
-
- }
- else
- {
- zmLog ("user profile not encrypted");
+
+ } else {
+ zmLog("user profile not encrypted");
decodedVal = val;
}
-
+
//decodedVal = val;
-
- zmDebug ("user profile retrieved:"+JSON.stringify(decodedVal));
-
+
+ zmDebug("user profile retrieved:" + JSON.stringify(decodedVal));
+
$ionicLoading.hide();
serverGroupList = decodedVal;
-
-
- // console.log(">>>> DECRYPTED serverGroupList " + JSON.stringify(serverGroupList));
+
+
+ // console.log(">>>> DECRYPTED serverGroupList " + JSON.stringify(serverGroupList));
var demoServer = "{\"serverName\":\"zmNinjaDemo\",\"username\":\"zmninja\",\"password\":\"zmNinja$xc129\",\"url\":\"https://demo.zoneminder.com/zm\",\"apiurl\":\"https://demo.zoneminder.com/zm/api\",\"eventServer\":\"\",\"maxMontage\":\"40\",\"streamingurl\":\"https://demo.zoneminder.com/cgi-bin-zm\",\"maxFPS\":\"3\",\"montageQuality\":\"50\",\"singleImageQuality\":\"100\",\"montageHistoryQuality\":\"50\",\"useSSL\":true,\"keepAwake\":true,\"isUseAuth\":\"1\",\"isUseEventServer\":false,\"disablePush\":false,\"eventServerMonitors\":\"\",\"eventServerInterval\":\"\",\"refreshSec\":\"2\",\"enableDebug\":false,\"usePin\":false,\"pinCode\":\"\",\"canSwipeMonitors\":true,\"persistMontageOrder\":false,\"onTapScreen\":\"Events\",\"enableh264\":true,\"gapless\":false,\"montageOrder\":\"\",\"montageHiddenOrder\":\"\",\"montageArraySize\":\"0\",\"graphSize\":2000,\"enableAlarmCount\":true,\"montageSize\":\"3\",\"useNphZms\":true,\"useNphZmsForEvents\":true,\"packMontage\":false,\"exitOnSleep\":false,\"forceNetworkStop\":false,\"defaultPushSound\":false,\"enableBlog\":true,\"use24hr\":false, \"packeryPositions\":\"\"}";
var demoS = JSON.parse(demoServer);
//console.log("JSON parsed demo" + JSON.stringify(demoS));
@@ -522,9 +515,9 @@ angular.module('zmApp.controllers')
$ionicLoading.hide();
//console.log ("!!!!!!!!!!!!!!!!!!default server name is " + sname);
sname = val;
- // console.log("!!!!!!!!!!!!!!!!!!!Got VAL " + sname);
+ // console.log("!!!!!!!!!!!!!!!!!!!Got VAL " + sname);
var loadedData = serverGroupList[sname];
- // console.log(">>>>>>>>>>> loadedData is: " + JSON.stringify(loadedData));
+ // console.log(">>>>>>>>>>> loadedData is: " + JSON.stringify(loadedData));
if (!isEmpty(loadedData)) {
loginData = loadedData;
@@ -668,20 +661,20 @@ angular.module('zmApp.controllers')
loginData.disableNative = false;
}
-
+
if (typeof loginData.vibrateOnPush == 'undefined') {
zmDebug("vibrate on push not found, setting to true");
loginData.vibrateOnPush = true;
}
-
+
if (typeof loginData.soundOnPush == 'undefined') {
zmDebug("sound on push not found, setting to true");
loginData.soundOnPush = true;
}
-
+
zmLog("DataModel init recovered this loginData as " + JSON.stringify(loginData));
} else {
zmLog("defaultServer configuration NOT found. Keeping login at defaults");
@@ -695,7 +688,7 @@ angular.module('zmApp.controllers')
//console.log("Getting out of ZMDataModel init");
$rootScope.showBlog = loginData.enableBlog;
//zmDebug("loginData structure values: " + JSON.stringify(loginData));
-
+
});
},
@@ -746,14 +739,14 @@ angular.module('zmApp.controllers')
if (permanent) {
//window.localStorage.setItem("defaultLang", l);
- console.log("setting default lang");
+ //console.log("setting default lang");
localforage.setItem("defaultLang", l)
- .then (function (val) {
- zmLog ("Set language in localforage to: " + val);
- });
+ .then(function (val) {
+ zmLog("Set language in localforage to: " + val);
+ });
}
- console.log("invoking translate use with " + l);
+ //console.log("invoking translate use with " + l);
$translate.use(l).then(function (data) {
zmLog("Device Language is:" + data);
moment.locale(data);
@@ -812,7 +805,7 @@ angular.module('zmApp.controllers')
},
isFirstUse: function () {
- console.log("isFirstUse is " + isFirstUse);
+ // console.log("isFirstUse is " + isFirstUse);
return isFirstUse;
// return ((window.localStorage.getItem("isFirstUse") == undefined) ? true : false);
@@ -830,8 +823,8 @@ angular.module('zmApp.controllers')
//localforage.setItem("isFirstUse", val,
// function(err) {if (err) zmLog ("localforage error, //storing isFirstUse: " + JSON.stringify(err));});
isFirstUse = val;
- localforage.setItem ("isFirstUse",val);
- console.log (">>>>>>setting isFirstUse to " + val);
+ localforage.setItem("isFirstUse", val);
+ //console.log (">>>>>>setting isFirstUse to " + val);
},
diff --git a/www/js/DevOptionsCtrl.js b/www/js/DevOptionsCtrl.js
index 502c02d0..fab6cfc2 100644
--- a/www/js/DevOptionsCtrl.js
+++ b/www/js/DevOptionsCtrl.js
@@ -2,36 +2,40 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console */
-angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope', '$rootScope', '$ionicModal', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$ionicPopup', '$http', '$q', '$ionicLoading', '$ionicHistory','$state', 'SecuredPopups', '$translate', function ($scope, $rootScope, $ionicModal, zm, ZMDataModel, $ionicSideMenuDelegate, $ionicPopup, $http, $q, $ionicLoading, $ionicHistory, $state, SecuredPopups, $translate) {
+angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope', '$rootScope', '$ionicModal', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$ionicPopup', '$http', '$q', '$ionicLoading', '$ionicHistory', '$state', 'SecuredPopups', '$translate', function ($scope, $rootScope, $ionicModal, zm, ZMDataModel, $ionicSideMenuDelegate, $ionicPopup, $http, $q, $ionicLoading, $ionicHistory, $state, SecuredPopups, $translate) {
$scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
- // $scope.this.will.crash = 1;
-
+ // $scope.this.will.crash = 1;
+
};
-
+
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
-
-
+
+
//----------------------------------------------------------------
// Save anyway when you exit
//----------------------------------------------------------------
-
- $scope.$on('$ionicView.beforeLeave', function () {
- saveDevOptions();
+
+ $scope.$on('$ionicView.beforeLeave', function () {
+ saveDevOptions();
});
@@ -46,27 +50,26 @@ angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope'
$scope.$on('$ionicView.enter', function () {
//console.log("**VIEW ** DevOptions Ctrl Entered");
$scope.loginData = ZMDataModel.getLogin();
-
+
ZMDataModel.setAwake(false);
});
//------------------------------------------------------------------
// Perform the login action when the user submits the login form
//------------------------------------------------------------------
-
- function saveDevOptions()
- {
+
+ function saveDevOptions() {
ZMDataModel.zmDebug("SaveDevOptions: called");
-
+
if ((parseInt($scope.loginData.maxFPS) < 0) || (parseInt($scope.loginData.maxFPS) > zm.maxFPS)) {
$scope.loginData.maxFPS = zm.defaultFPS.toString();
}
-
+
if (parseInt($scope.loginData.refreshSec) <= 0) {
- ZMDataModel.zmDebug("SaveDevOptions: refresh sec was too low at " +
- $scope.loginData.refreshSec + " reset to 1");
+ ZMDataModel.zmDebug("SaveDevOptions: refresh sec was too low at " +
+ $scope.loginData.refreshSec + " reset to 1");
$scope.loginData.refreshSec = 1;
}
@@ -76,8 +79,8 @@ angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope'
(parseInt($scope.loginData.montageQuality) > 70)) {
$scope.loginData.montageQuality = 70;
}
-
-
+
+
if ((parseInt($scope.loginData.singleImageQuality) < zm.safeImageQuality) ||
(parseInt($scope.loginData.singleImageQuality) > 100)) {
$scope.loginData.singleImageQuality = zm.safeImageQuality.toString();
@@ -88,27 +91,27 @@ angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope'
ZMDataModel.setLogin($scope.loginData);
ZMDataModel.getMonitors(1);
-
+
}
-
+
$scope.saveDevOptions = function () {
-
- saveDevOptions();
+
+ saveDevOptions();
// $rootScope.zmPopup.close();
- $rootScope.zmPopup= SecuredPopups.show('alert',{
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
title: $translate.instant('kSettingsSaved'),
template: "{{'kExploreEnjoy' | translate }} {{$root.appName}}"
}).then(function (res) {
$ionicSideMenuDelegate.toggleLeft();
});
-
+
};
//------------------------------------------------------------------
// controller main
//------------------------------------------------------------------
-
+
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js
index b6c99b76..6b6f81ca 100644
--- a/www/js/EventCtrl.js
+++ b/www/js/EventCtrl.js
@@ -8,23 +8,22 @@
angular.module('zmApp.controllers')
- // alarm frames filter
+// alarm frames filter
.filter('selectFrames', function ($filter, $translate) {
// Create the return function and set the required parameter name to **input**
return function (input, typeOfFrames) {
-
+
var out = [];
angular.forEach(input, function (item) {
- if (typeOfFrames==$translate.instant ('kShowTimeDiffFrames')) {
- if (item.type == $translate.instant ('kShowTimeDiffFrames'))
+ if (typeOfFrames == $translate.instant('kShowTimeDiffFrames')) {
+ if (item.type == $translate.instant('kShowTimeDiffFrames'))
out.push(item);
- }
- else
+ } else
out.push(item);
});
@@ -34,80 +33,80 @@ angular.module('zmApp.controllers')
})
- .controller('zmApp.EventCtrl', ['$scope', '$rootScope', 'zm', 'ZMDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', '$ionicSlideBoxDelegate', '$ionicPosition', '$ionicPopover', '$ionicPopup', 'EventServer', '$sce', '$cordovaBadge', '$cordovaLocalNotification', '$q', 'carouselUtils', '$translate', function ($scope, $rootScope, zm, ZMDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, $ionicSlideBoxDelegate, $ionicPosition, $ionicPopover, $ionicPopup, EventServer, $sce, $cordovaBadge, $cordovaLocalNotification, $q, carouselUtils, $translate) {
-
- // events in last 5 minutes
- // TODO https://server/zm/api/events/consoleEvents/5%20minute.json
-
- //---------------------------------------------------
- // Controller main
- //---------------------------------------------------
-
- var loginData;
- var oldEvent;
- var scrollbynumber;
- var eventImageDigits = 5; // failsafe
- var eventsPage;
- var moreEvents;
- var pageLoaded;
- var enableLoadMore;
- var lData;
- var stackState;
- var ionRangeWatcher;
- var mycarouselWatcher;
- $scope.typeOfFrames = $translate.instant('kShowTimeDiffFrames');
-
-
- //---------------------------------------------------
- // initial code
- //---------------------------------------------------
-
-
- $scope.$on('$ionicView.afterEnter', function () {
- console.log ("********* AFTER ENTER");
- $scope.events = [];
- getInitialEvents();
- setupWatchers();
- });
-
- $scope.$on('$ionicView.beforeEnter', function () {
-
- console.log ("********* BEFORE ENTER");
- document.addEventListener("pause", onPause, false);
+.controller('zmApp.EventCtrl', ['$scope', '$rootScope', 'zm', 'ZMDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', '$ionicSlideBoxDelegate', '$ionicPosition', '$ionicPopover', '$ionicPopup', 'EventServer', '$sce', '$cordovaBadge', '$cordovaLocalNotification', '$q', 'carouselUtils', '$translate', function ($scope, $rootScope, zm, ZMDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, $ionicSlideBoxDelegate, $ionicPosition, $ionicPopover, $ionicPopup, EventServer, $sce, $cordovaBadge, $cordovaLocalNotification, $q, carouselUtils, $translate) {
+
+ // events in last 5 minutes
+ // TODO https://server/zm/api/events/consoleEvents/5%20minute.json
+
+ //---------------------------------------------------
+ // Controller main
+ //---------------------------------------------------
+
+ var loginData;
+ var oldEvent;
+ var scrollbynumber;
+ var eventImageDigits = 5; // failsafe
+ var eventsPage;
+ var moreEvents;
+ var pageLoaded;
+ var enableLoadMore;
+ var lData;
+ var stackState;
+ var ionRangeWatcher;
+ var mycarouselWatcher;
+ $scope.typeOfFrames = $translate.instant('kShowTimeDiffFrames');
+
+
+ //---------------------------------------------------
+ // initial code
+ //---------------------------------------------------
+
+
+ $scope.$on('$ionicView.afterEnter', function () {
+ //console.log ("********* AFTER ENTER");
+ $scope.events = [];
+ getInitialEvents();
+ setupWatchers();
+ });
+
+ $scope.$on('$ionicView.beforeEnter', function () {
+
+ //console.log ("********* BEFORE ENTER");
+ document.addEventListener("pause", onPause, false);
//console.log("I got STATE PARAM " + $stateParams.id);
- $scope.id = parseInt($stateParams.id, 10);
-
- pageLoaded = false;
- enableLoadMore = true;
-
- $scope.mycarousel = {
+ $scope.id = parseInt($stateParams.id, 10);
+
+ pageLoaded = false;
+ enableLoadMore = true;
+
+ $scope.mycarousel = {
index: 0
- };
-
- $scope.ionRange = {
- index: 1
- };
- $scope.animationInProgress = false;
-
- $scope.hours = [];
- $scope.days = [];
- $scope.weeks = [];
- $scope.months = [];
-
-
- $scope.eventList = {
+ };
+
+ $scope.ionRange = {
+ index: 1
+ };
+ $scope.animationInProgress = false;
+
+ $scope.hours = [];
+ $scope.days = [];
+ $scope.weeks = [];
+ $scope.months = [];
+
+
+ $scope.eventList = {
showDelete: false
- };
+ };
- $scope.slides = []; // will hold scrub frames
- $scope.totalEventTime = 0; // used to display max of progress bar
- $scope.currentEventTime = 0;
- oldEvent = ""; // will hold previous event that had showScrub = true
- scrollbynumber = 0;
- $scope.eventsBeingLoaded = true;
- $scope.FrameArray = []; // will hold frame info from detailed Events API
- loginData = ZMDataModel.getLogin();
- ZMDataModel.getKeyConfigParams(0)
+ $scope.slides = []; // will hold scrub frames
+ $scope.totalEventTime = 0; // used to display max of progress bar
+ $scope.currentEventTime = 0;
+ oldEvent = ""; // will hold previous event that had showScrub = true
+ scrollbynumber = 0;
+ $scope.eventsBeingLoaded = true;
+ $scope.FrameArray = []; // will hold frame info from detailed Events API
+ loginData = ZMDataModel.getLogin();
+ ZMDataModel.getKeyConfigParams(0)
.then(function (data) {
//console.log ("***GETKEY: " + JSON.stringify(data));
eventImageDigits = parseInt(data);
@@ -115,233 +114,225 @@ angular.module('zmApp.controllers')
});
- $scope.showSearch = false;
- eventsPage = 1;
- moreEvents = true;
- $scope.viewTitle = {
- title: ""
- };
- $scope.search = {
- text:""
-
- };
- $scope.myfilter = "";
-
- $scope.loginData = ZMDataModel.getLogin();
- $scope.playbackURL = $scope.loginData.url;
-
- });
-
-
-
-
-
-
-
-
+ $scope.showSearch = false;
+ eventsPage = 1;
+ moreEvents = true;
+ $scope.viewTitle = {
+ title: ""
+ };
+ $scope.search = {
+ text: ""
+
+ };
+ $scope.myfilter = "";
+
+ $scope.loginData = ZMDataModel.getLogin();
+ $scope.playbackURL = $scope.loginData.url;
+
+ });
+
+
+
+
+
+
+
+
// --------------------------------------------------------
// Handling of back button in case modal is open should
// close the modal
// --------------------------------------------------------
-
+
$ionicPlatform.registerBackButtonAction(function (e) {
- e.preventDefault();
- if ($scope.modal !=undefined && $scope.modal.isShown())
- {
- // switch off awake, as liveview is finished
- ZMDataModel.zmDebug("Modal is open, closing it");
- ZMDataModel.setAwake(false);
- $scope.modal.remove();
+ e.preventDefault();
+ if ($scope.modal != undefined && $scope.modal.isShown()) {
+ // switch off awake, as liveview is finished
+ ZMDataModel.zmDebug("Modal is open, closing it");
+ ZMDataModel.setAwake(false);
+ $scope.modal.remove();
+ } else {
+ ZMDataModel.zmDebug("Modal is closed, so toggling or exiting");
+ if (!$ionicSideMenuDelegate.isOpenLeft()) {
+ $ionicSideMenuDelegate.toggleLeft();
+
+ } else {
+ navigator.app.exitApp();
}
- else
- {
- ZMDataModel.zmDebug("Modal is closed, so toggling or exiting");
- if (!$ionicSideMenuDelegate.isOpenLeft())
- {
- $ionicSideMenuDelegate.toggleLeft();
-
- }
- else
- {
- navigator.app.exitApp();
+
+ }
+
+ }, 1000);
+
+
+ //--------------------------------------
+ // monitor the slider for carousels
+ //--------------------------------------
+ function setupWatchers() {
+ ZMDataModel.zmDebug("Setting up carousel watchers");
+
+ ionRangeWatcher = $scope.$watch('ionRange.index', function () {
+ // console.log ("Watching index");
+ $scope.mycarousel.index = parseInt($scope.ionRange.index) - 1;
+ if (carouselUtils.getStop() == true)
+ return;
+
+
+ //console.log ("***ION RANGE CHANGED TO " + $scope.mycarousel.index);
+ });
+
+
+
+ mycarouselWatcher = $scope.$watch('mycarousel.index', function () {
+
+
+ if ($scope.event && $scope.ionRange.index == parseInt($scope.event.Event.Frames) - 1) {
+ if (!$scope.modal || $scope.modal.isShown() == false) {
+ // console.log("quick scrub playback over");
+ carouselUtils.setStop(true);
+ $scope.ionRange.index = 0;
+ $scope.mycarousel.index = 1;
}
-
+
}
-
- }, 1000);
-
-
- //--------------------------------------
- // monitor the slider for carousels
- //--------------------------------------
- function setupWatchers()
- {
- ZMDataModel.zmDebug ("Setting up carousel watchers");
-
- ionRangeWatcher = $scope.$watch('ionRange.index', function () {
- // console.log ("Watching index");
- $scope.mycarousel.index = parseInt($scope.ionRange.index) - 1;
- if (carouselUtils.getStop() == true)
- return;
+ if (carouselUtils.getStop() == true)
+ return;
+ $scope.ionRange.index = ($scope.mycarousel.index + 1).toString();
+ // console.log ("***IONRANGE RANGE CHANGED TO " + $scope.ionRange.index);
- //console.log ("***ION RANGE CHANGED TO " + $scope.mycarousel.index);
- });
-
-
-
- mycarouselWatcher = $scope.$watch('mycarousel.index', function () {
-
-
- if ($scope.event && $scope.ionRange.index == parseInt($scope.event.Event.Frames) - 1) {
- if (!$scope.modal || $scope.modal.isShown() == false) {
- // console.log("quick scrub playback over");
- carouselUtils.setStop(true);
- $scope.ionRange.index = 0;
- $scope.mycarousel.index = 1;
- }
+ });
- }
- if (carouselUtils.getStop() == true)
- return;
- $scope.ionRange.index = ($scope.mycarousel.index + 1).toString();
- // console.log ("***IONRANGE RANGE CHANGED TO " + $scope.ionRange.index);
+ }
+
+ // --------------------------------------------------------
+ // Handling of back button in case modal is open should
+ // close the modal
+ // --------------------------------------------------------
+
+ function getInitialEvents() {
+ ZMDataModel.zmDebug("getInitialEvents called");
+ var lData = ZMDataModel.getLogin();
+
+ var stackState = $ionicHistory.backTitle();
+
+ // If you came from Monitors, disregard hidden monitors in montage
+ if (lData.persistMontageOrder && stackState != "Monitors") {
+ var tempMon = message;
+ $scope.monitors = ZMDataModel.applyMontageMonitorPrefs(tempMon, 2)[0];
+ } else
+ $scope.monitors = message;
- });
-
+ if ($scope.monitors.length == 0) {
+ var pTitle = $translate.instant('kNoMonitors');
+ $ionicPopup.alert({
+ title: pTitle,
+ template: "{{'kCheckCredentials' | translate }}"
+ });
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("login", {
+ "wizard": false
+ });
+ return;
}
-
- // --------------------------------------------------------
- // Handling of back button in case modal is open should
- // close the modal
- // --------------------------------------------------------
-
- function getInitialEvents()
- {
- ZMDataModel.zmDebug ("getInitialEvents called");
- var lData = ZMDataModel.getLogin();
- var stackState = $ionicHistory.backTitle();
+ $scope.events = [];
- // If you came from Monitors, disregard hidden monitors in montage
- if (lData.persistMontageOrder && stackState != "Monitors") {
- var tempMon = message;
- $scope.monitors = ZMDataModel.applyMontageMonitorPrefs(tempMon, 2)[0];
- } else
- $scope.monitors = message;
+ // First get total pages and then
+ // start from the latest. If this fails, nothing displays
+
+ ZMDataModel.zmDebug("EventCtrl: grabbing # of event pages");
+ ZMDataModel.getEventsPages($scope.id, $rootScope.fromString, $rootScope.toString)
+ .then(function (data) {
+ eventsPage = data.pageCount;
+ ZMDataModel.zmDebug("EventCtrl: found " + eventsPage + " pages of events");
+ pageLoaded = true;
+ $scope.viewTitle.title = data.count;
+ ZMDataModel.zmDebug("EventCtrl: grabbing events for: id=" + $scope.id + " Date/Time:" + $rootScope.fromString +
+ "-" + $rootScope.toString);
+ ZMDataModel.getEvents($scope.id, eventsPage, "", $rootScope.fromString, $rootScope.toString)
+ .then(function (data) {
- if ($scope.monitors.length == 0)
- {
- var pTitle = $translate.instant('kNoMonitors');
- $ionicPopup.alert({
- title: pTitle,
- template: "{{'kCheckCredentials' | translate }}"
- });
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
- $state.go("login" ,{"wizard": false});
- return;
- }
+ var myevents = data;
+ ZMDataModel.zmDebug("EventCtrl: success, got " + myevents.length + " events");
+ var loginData = ZMDataModel.getLogin();
+ for (var i = 0; i < myevents.length; i++) {
- $scope.events = [];
-
- // First get total pages and then
- // start from the latest. If this fails, nothing displays
-
- ZMDataModel.zmDebug("EventCtrl: grabbing # of event pages");
- ZMDataModel.getEventsPages($scope.id, $rootScope.fromString, $rootScope.toString)
- .then(function (data) {
- eventsPage = data.pageCount;
- ZMDataModel.zmDebug("EventCtrl: found " + eventsPage + " pages of events");
-
- pageLoaded = true;
- $scope.viewTitle.title = data.count;
- ZMDataModel.zmDebug("EventCtrl: grabbing events for: id=" + $scope.id + " Date/Time:" + $rootScope.fromString +
- "-" + $rootScope.toString);
- ZMDataModel.getEvents($scope.id, eventsPage, "", $rootScope.fromString, $rootScope.toString)
- .then(function (data) {
-
- var myevents = data;
- ZMDataModel.zmDebug("EventCtrl: success, got " + myevents.length + " events");
- var loginData = ZMDataModel.getLogin();
- for (var i = 0; i < myevents.length; i++) {
-
- var idfound = true;
- if (loginData.persistMontageOrder) {
- idfound = false;
- for (var ii = 0; ii < $scope.monitors.length; ii++) {
- if ($scope.monitors[ii].Monitor.Id == myevents[i].Event.MonitorId) {
-
- idfound = true;
- break;
- }
+ var idfound = true;
+ if (loginData.persistMontageOrder) {
+ idfound = false;
+ for (var ii = 0; ii < $scope.monitors.length; ii++) {
+ if ($scope.monitors[ii].Monitor.Id == myevents[i].Event.MonitorId) {
+
+ idfound = true;
+ break;
}
}
+ }
- myevents[i].Event.streamingURL = ZMDataModel.getStreamingURL (myevents[i].Event.MonitorId);
- myevents[i].Event.baseURL = ZMDataModel.getBaseURL (myevents[i].Event.MonitorId);
- myevents[i].Event.imageMode = ZMDataModel.getImageMode (myevents[i].Event.MonitorId);
-
- //console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);
-
- // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);
-
- myevents[i].Event.MonitorName = ZMDataModel.getMonitorName(myevents[i].Event.MonitorId);
- myevents[i].Event.ShowScrub = false;
- myevents[i].Event.height = zm.eventsListDetailsHeight;
- // now construct base path
- myevents[i].Event.BasePath = computeBasePath(myevents[i]);
- myevents[i].Event.relativePath = computeRelativePath(myevents[i]);
-
-
- // in multiserver BasePath is login url for frames
- // http://login.url/index.php?view=frame&eid=19696772&fid=21
-
- // console.log ("COMPARING "+ZMDataModel.getLogin().url+ " TO " +myevents[i].Event.baseURL);
- if (ZMDataModel.getLogin().url != myevents[i].Event.baseURL)
- {
- //ZMDataModel.zmDebug ("Multi server, changing base");
- myevents[i].Event.baseURL = ZMDataModel.getLogin().url;
-
- }
-
- if (idfound) {
- $scope.events.push(myevents[i]);
- } else {
- //console.log ("Skipping Event MID = " + myevents[i].Event.MonitorId);
- }
+ myevents[i].Event.streamingURL = ZMDataModel.getStreamingURL(myevents[i].Event.MonitorId);
+ myevents[i].Event.baseURL = ZMDataModel.getBaseURL(myevents[i].Event.MonitorId);
+ myevents[i].Event.imageMode = ZMDataModel.getImageMode(myevents[i].Event.MonitorId);
+
+ //console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);
+
+ // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);
+
+ myevents[i].Event.MonitorName = ZMDataModel.getMonitorName(myevents[i].Event.MonitorId);
+ myevents[i].Event.ShowScrub = false;
+ myevents[i].Event.height = zm.eventsListDetailsHeight;
+ // now construct base path
+ myevents[i].Event.BasePath = computeBasePath(myevents[i]);
+ myevents[i].Event.relativePath = computeRelativePath(myevents[i]);
+
- } //for
+ // in multiserver BasePath is login url for frames
+ // http://login.url/index.php?view=frame&eid=19696772&fid=21
+ // console.log ("COMPARING "+ZMDataModel.getLogin().url+ " TO " +myevents[i].Event.baseURL);
+ if (ZMDataModel.getLogin().url != myevents[i].Event.baseURL) {
+ //ZMDataModel.zmDebug ("Multi server, changing base");
+ myevents[i].Event.baseURL = ZMDataModel.getLogin().url;
- //$scope.events = myevents;
- // we only need to stop the template from loading when the list is empty
- // so this can be false once we have _some_ content
- // FIXME: check reload
- $scope.eventsBeingLoaded = false;
- // to avoid only few events being displayed
- // if last page has less events
- //console.log("**Loading Next Page ***");
- if (myevents.length < 50) {
- ZMDataModel.zmDebug("EventCtrl:loading one more page just in case we don't have enough to display");
- loadMore();
}
- });
- });
- }
-
-
-
+ if (idfound) {
+ $scope.events.push(myevents[i]);
+ } else {
+ //console.log ("Skipping Event MID = " + myevents[i].Event.MonitorId);
+ }
+
+ } //for
+
+
+ //$scope.events = myevents;
+ // we only need to stop the template from loading when the list is empty
+ // so this can be false once we have _some_ content
+ // FIXME: check reload
+ $scope.eventsBeingLoaded = false;
+ // to avoid only few events being displayed
+ // if last page has less events
+ //console.log("**Loading Next Page ***");
+ if (myevents.length < 50) {
+ ZMDataModel.zmDebug("EventCtrl:loading one more page just in case we don't have enough to display");
+ loadMore();
+ }
+ });
+
+ });
+ }
+
+
+
//-------------------------------------------------------
// Tapping on a frame shows this image
//------------------------------------------------------
-
+
function SaveSuccess() {
$ionicLoading.show({
template: $translate.instant('kDone'),
@@ -361,141 +352,134 @@ angular.module('zmApp.controllers')
//console.log("***ERROR");
}
-
- function saveNow(imgsrc,r,f)
- {
-
- $ionicLoading.show({
- template: $translate.instant('kSavingSnapshot') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
- var url = imgsrc;
- ZMDataModel.zmLog("saveNow: File path to grab is " + url);
-
- var img = new Image();
- img.onload = function () {
- // console.log("********* ONLOAD");
- var canvas = document.createElement('canvas');
- canvas.width = img.width;
- canvas.height = img.height;
- var context = canvas.getContext('2d');
- context.drawImage(img, 0, 0);
-
- var imageDataUrl = canvas.toDataURL('image/jpeg', 1.0);
- var imageData = imageDataUrl.replace(/data:image\/jpeg;base64,/, '');
-
- if ($rootScope.platformOS != "desktop") {
- try {
-
- cordova.exec(
- SaveSuccess,
- SaveError,
- 'Canvas2ImagePlugin',
- 'saveImageDataToLibrary', [imageData]
- );
- // carouselUtils.setStop(curState);
- } catch (e) {
-
- SaveError(e.message);
- // carouselUtils.setStop(curState);
- }
- } else {
+ function saveNow(imgsrc, r, f) {
- var fname = r + f + ".png";
- fname = fname.replace(/\//, "-");
- fname = fname.replace(/\.jpg/, '');
-
- canvas.toBlob(function (blob) {
- saveAs(blob, fname);
- SaveSuccess();
- });
+ $ionicLoading.show({
+ template: $translate.instant('kSavingSnapshot') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+ var url = imgsrc;
+ ZMDataModel.zmLog("saveNow: File path to grab is " + url);
+
+ var img = new Image();
+ img.onload = function () {
+ // console.log("********* ONLOAD");
+ var canvas = document.createElement('canvas');
+ canvas.width = img.width;
+ canvas.height = img.height;
+ var context = canvas.getContext('2d');
+ context.drawImage(img, 0, 0);
+
+ var imageDataUrl = canvas.toDataURL('image/jpeg', 1.0);
+ var imageData = imageDataUrl.replace(/data:image\/jpeg;base64,/, '');
+
+ if ($rootScope.platformOS != "desktop") {
+ try {
+
+ cordova.exec(
+ SaveSuccess,
+ SaveError,
+ 'Canvas2ImagePlugin',
+ 'saveImageDataToLibrary', [imageData]
+ );
+ // carouselUtils.setStop(curState);
+ } catch (e) {
+
+ SaveError(e.message);
+ // carouselUtils.setStop(curState);
}
- };
- try {
- img.src = url;
- // console.log ("SAVING IMAGE SOURCE");
- } catch (e) {
- SaveError(e.message);
+ } else {
+
+
+ var fname = r + f + ".png";
+ fname = fname.replace(/\//, "-");
+ fname = fname.replace(/\.jpg/, '');
+
+ canvas.toBlob(function (blob) {
+ saveAs(blob, fname);
+ SaveSuccess();
+ });
}
-
+ };
+ try {
+ img.src = url;
+ // console.log ("SAVING IMAGE SOURCE");
+ } catch (e) {
+ SaveError(e.message);
+ }
+
}
-
- $scope.showImage = function (p,r,f, fid,e, imode, id, parray, ndx)
- {
+
+ $scope.showImage = function (p, r, f, fid, e, imode, id, parray, ndx) {
var img;
-
-
+
+
//console.log ("HERE");
- $scope.kFrame = $translate.instant ('kFrame');
- $scope.kEvent = $translate.instant ('kEvent');
- $scope.ndx = ndx;
- $scope.parray = parray;
- $scope.imode = imode;
-
+ $scope.kFrame = $translate.instant('kFrame');
+ $scope.kEvent = $translate.instant('kEvent');
+ $scope.ndx = ndx;
+ $scope.parray = parray;
+ $scope.imode = imode;
+
// note ndx may be incorrect if we are looking
// at unique frames;
-
- // ZMDataModel.zmDebug("Hello");
- if ($scope.typeOfFrames == $translate.instant('kShowTimeDiffFrames'))
- {
-
+
+ // ZMDataModel.zmDebug("Hello");
+ if ($scope.typeOfFrames == $translate.instant('kShowTimeDiffFrames')) {
+
var ic;
-
- for ( ic = 0; ic < $scope.parray.length; ic++)
- {
+
+ for (ic = 0; ic < $scope.parray.length; ic++) {
if ($scope.parray[ic].frameid == fid)
break;
}
-
-
- ZMDataModel.zmDebug ("Readjusting selected frame ID from:"+$scope.ndx+" to actual frame ID of:" + ic);
+
+
+ ZMDataModel.zmDebug("Readjusting selected frame ID from:" + $scope.ndx + " to actual frame ID of:" + ic);
$scope.ndx = ic;
+ } else {
+ ZMDataModel.zmDebug("No index adjustment necessary as we are using all frames");
}
- else
- {
- ZMDataModel.zmDebug ("No index adjustment necessary as we are using all frames");
- }
-
-
-
-
- // console.log ("Image Mode " + imode);
- // console.log ("parray : " + JSON.stringify(parray));
- // console.log ("index: " + ndx);
- if ($scope.imode=='path')
-
- $scope.imgsrc = p+"/index.php?view=image&path="+r+$scope.parray[$scope.ndx].fname;
- else
- {
- $scope.imgsrc = p+"/index.php?view=image&fid="+$scope.parray[$scope.ndx].id;
-
+
+
+
+
+ // console.log ("Image Mode " + imode);
+ // console.log ("parray : " + JSON.stringify(parray));
+ // console.log ("index: " + ndx);
+ if ($scope.imode == 'path')
+
+ $scope.imgsrc = p + "/index.php?view=image&path=" + r + $scope.parray[$scope.ndx].fname;
+ else {
+ $scope.imgsrc = p + "/index.php?view=image&fid=" + $scope.parray[$scope.ndx].id;
+
}
-
-
-
+
+
+
//$rootScope.zmPopup = $ionicPopup.alert({title: kFrame+':'+fid+'/'+kEvent+':'+e,template:img, cssClass:'popup80'});
-
- $rootScope.zmPopup = $ionicPopup.show({
- template: '<center>'+$translate.instant('kFrame')+':{{parray[ndx].frameid}}@{{prettifyTimeSec(parray[ndx].time)}}</center><br/><img src="{{imgsrc}}" width="100%" />',
- title: $translate.instant('kImages') + " ("+$translate.instant($scope.typeOfFrames) +")",
+
+ $rootScope.zmPopup = $ionicPopup.show({
+ template: '<center>' + $translate.instant('kFrame') + ':{{parray[ndx].frameid}}@{{prettifyTimeSec(parray[ndx].time)}}</center><br/><img src="{{imgsrc}}" width="100%" />',
+ title: $translate.instant('kImages') + " (" + $translate.instant($scope.typeOfFrames) + ")",
subTitle: 'use left and right arrows to change',
scope: $scope,
cssClass: 'popup80',
buttons: [
-
+
{
text: '',
type: 'button-assertive button-small ion-camera',
onTap: function (e) {
e.preventDefault();
- saveNow($scope.imgsrc,r,parray[$scope.ndx].fname);
+ saveNow($scope.imgsrc, r, parray[$scope.ndx].fname);
}
},
-
+
{
// left 1
text: '',
@@ -503,36 +487,31 @@ angular.module('zmApp.controllers')
onTap: function (e) {
// look for next frame that matches the type of frame
// we are showing (all or diff timestamps);
-
- // console.log ("TYPE OF FRAMES: " + $scope.typeOfFrames);
+
+ // console.log ("TYPE OF FRAMES: " + $scope.typeOfFrames);
var nndx = null;
var alltype = $translate.instant('kShowAllFrames');
- for (var i=$scope.ndx-1; i>=0; i--)
- {
- if ($scope.parray[i].type == $scope.typeOfFrames|| $scope.typeOfFrames == alltype)
- {
+ for (var i = $scope.ndx - 1; i >= 0; i--) {
+ if ($scope.parray[i].type == $scope.typeOfFrames || $scope.typeOfFrames == alltype) {
nndx = i;
break;
}
}
if (nndx == null) nndx = $scope.ndx;
$scope.ndx = nndx;
-
- if ($scope.imode=='path')
- {
-
- $scope.imgsrc = p+"/index.php?view=image&path="+r+$scope.parray[$scope.ndx].fname;
- }
- else
- {
- $scope.imgsrc = p+"/index.php?view=image&fid="+$scope.parray[$scope.ndx].id;
+
+ if ($scope.imode == 'path') {
+
+ $scope.imgsrc = p + "/index.php?view=image&path=" + r + $scope.parray[$scope.ndx].fname;
+ } else {
+ $scope.imgsrc = p + "/index.php?view=image&fid=" + $scope.parray[$scope.ndx].id;
}
-
-
+
+
e.preventDefault();
-
-
+
+
}
},
{
@@ -540,681 +519,602 @@ angular.module('zmApp.controllers')
text: '',
type: 'button-small button-energized ion-chevron-right',
onTap: function (e) {
-
- // look for next frame that matches the type of frame
+
+ // look for next frame that matches the type of frame
// we are showing (all or diff timestamps);
-
- // console.log ("TYPE OF FRAMES: " + $scope.typeOfFrames);
+
+ // console.log ("TYPE OF FRAMES: " + $scope.typeOfFrames);
var nndx = null;
var alltype = $translate.instant('kShowAllFrames');
- for (var i=$scope.ndx+1; i<$scope.parray.length; i++)
- {
+ for (var i = $scope.ndx + 1; i < $scope.parray.length; i++) {
//console.log ("Comparing: " +$scope.parray[i].type +" to " + $scope.typeOfFrames);
- if ($scope.parray[i].type == $scope.typeOfFrames || $scope.typeOfFrames == alltype)
- {
+ if ($scope.parray[i].type == $scope.typeOfFrames || $scope.typeOfFrames == alltype) {
nndx = i;
break;
}
}
if (nndx == null) nndx = $scope.ndx;
$scope.ndx = nndx;
-
- if ($scope.imode=='path')
- {
-
- $scope.imgsrc = p+"/index.php?view=image&path="+r+$scope.parray[$scope.ndx].fname;
- }
- else
- {
- $scope.imgsrc = p+"/index.php?view=image&fid="+$scope.parray[$scope.ndx].id;
+
+ if ($scope.imode == 'path') {
+
+ $scope.imgsrc = p + "/index.php?view=image&path=" + r + $scope.parray[$scope.ndx].fname;
+ } else {
+ $scope.imgsrc = p + "/index.php?view=image&fid=" + $scope.parray[$scope.ndx].id;
}
e.preventDefault();
-
-
+
+
}
},
-
-
+
+
{
text: '',
type: 'button-positive button-small ion-checkmark-round',
onTap: function (e) {
-
+
}
}]
});
-
-
-
-
+
+
+
+
};
-
-
-
-
-
-
- $scope.toggleTypeOfAlarms = function()
- {
- // "kShowAllFrames" : "all",
- // "kShowTimeDiffFrames" : "different timestamps"
-
- if ($scope.typeOfFrames == $translate.instant('kShowAllFrames'))
- {
- $scope.typeOfFrames = $translate.instant ('kShowTimeDiffFrames');
- }
- else
- {
- $scope.typeOfFrames = $translate.instant ('kShowAllFrames');
+
+
+
+
+
+
+ $scope.toggleTypeOfAlarms = function () {
+ // "kShowAllFrames" : "all",
+ // "kShowTimeDiffFrames" : "different timestamps"
+
+ if ($scope.typeOfFrames == $translate.instant('kShowAllFrames')) {
+ $scope.typeOfFrames = $translate.instant('kShowTimeDiffFrames');
+ } else {
+ $scope.typeOfFrames = $translate.instant('kShowAllFrames');
}
};
-
- // not explictly handling error --> I have a default "No events found" message
- // displayed in the template if events list is null
- //--------------------------------------------------------------------------
- // This is what the pullup bar calls depending on what range is specified
- //--------------------------------------------------------------------------
- $scope.showEvents = function (val, unit, monitorId) {
- ZMDataModel.zmDebug("ShowEvents called with val:" + val + " unit:" + unit + " for Monitor:" + monitorId);
+ // not explictly handling error --> I have a default "No events found" message
+ // displayed in the template if events list is null
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
+ //--------------------------------------------------------------------------
+ // This is what the pullup bar calls depending on what range is specified
+ //--------------------------------------------------------------------------
+ $scope.showEvents = function (val, unit, monitorId) {
+ ZMDataModel.zmDebug("ShowEvents called with val:" + val + " unit:" + unit + " for Monitor:" + monitorId);
+
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
- var mToDate = moment();
+ var mToDate = moment();
- var mFromDate = moment().subtract(parseInt(val), unit);
+ var mFromDate = moment().subtract(parseInt(val), unit);
- // console.log("Moment Dates:" + mFromDate.format() + " TO " + mToDate.format());
+ // console.log("Moment Dates:" + mFromDate.format() + " TO " + mToDate.format());
- $rootScope.fromTime = mFromDate.toDate();
- $rootScope.toTime = mToDate.toDate();
- $rootScope.fromDate = $rootScope.fromTime;
- $rootScope.toDate = $rootScope.toTime;
+ $rootScope.fromTime = mFromDate.toDate();
+ $rootScope.toTime = mToDate.toDate();
+ $rootScope.fromDate = $rootScope.fromTime;
+ $rootScope.toDate = $rootScope.toTime;
- ZMDataModel.zmDebug("From: " + $rootScope.fromTime);
- ZMDataModel.zmDebug("To: " + $rootScope.toTime);
+ ZMDataModel.zmDebug("From: " + $rootScope.fromTime);
+ ZMDataModel.zmDebug("To: " + $rootScope.toTime);
- //$rootScope.fromDate = fromDate.toDate();
- //$rootScope.toDate = toDate.toDate();
- $rootScope.isEventFilterOn = true;
- $rootScope.fromString = mFromDate
- .format("YYYY-MM-DD") + " " + mFromDate.format("HH:mm:ss");
+ //$rootScope.fromDate = fromDate.toDate();
+ //$rootScope.toDate = toDate.toDate();
+ $rootScope.isEventFilterOn = true;
+ $rootScope.fromString = mFromDate
+ .format("YYYY-MM-DD") + " " + mFromDate.format("HH:mm:ss");
- $rootScope.toString = mToDate
- .format("YYYY-MM-DD") + " " + mToDate
- .format("HH:mm:ss");
+ $rootScope.toString = mToDate
+ .format("YYYY-MM-DD") + " " + mToDate
+ .format("HH:mm:ss");
- // console.log("**************From String: " + $rootScope.fromString);
- // console.log("**************To String: " + $rootScope.toString);
+ // console.log("**************From String: " + $rootScope.fromString);
+ // console.log("**************To String: " + $rootScope.toString);
- // reloading - may solve https://github.com/pliablepixels/zmNinja/issues/36
- // if you are in the same mid event page $state.go won't work
+ // reloading - may solve https://github.com/pliablepixels/zmNinja/issues/36
+ // if you are in the same mid event page $state.go won't work
+ $state.go("events", {
+ "id": monitorId
+ }, {
+ reload: true
+ });
+ };
+
+ //----------------------------------------------------------------
+ // Alarm notification handling
+ //----------------------------------------------------------------
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
$state.go("events", {
- "id": monitorId
+ "id": 0
}, {
reload: true
});
- };
-
- //----------------------------------------------------------------
- // Alarm notification handling
- //----------------------------------------------------------------
- $scope.handleAlarms = function () {
- $rootScope.isAlarm = !$rootScope.isAlarm;
- if (!$rootScope.isAlarm) {
- $rootScope.alarmCount = "0";
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
- $state.go("events", {
- "id": 0
- }, {
- reload: true
- });
- }
- };
+ }
+ };
- //--------------------------------------------------------------------------
- // Takes care of deleting individual events
- //--------------------------------------------------------------------------
- $scope.deleteEvent = function (id, itemid) {
- //$scope.eventList.showDelete = false;
- //curl -XDELETE http://server/zm/api/events/1.json
- var loginData = ZMDataModel.getLogin();
- var apiDelete = loginData.apiurl + "/events/" + id + ".json";
- ZMDataModel.zmDebug("DeleteEvent: ID=" + id + " item=" + itemid);
- ZMDataModel.zmLog("Delete event " + apiDelete);
+ //--------------------------------------------------------------------------
+ // Takes care of deleting individual events
+ //--------------------------------------------------------------------------
+ $scope.deleteEvent = function (id, itemid) {
+ //$scope.eventList.showDelete = false;
+ //curl -XDELETE http://server/zm/api/events/1.json
+ var loginData = ZMDataModel.getLogin();
+ var apiDelete = loginData.apiurl + "/events/" + id + ".json";
+ ZMDataModel.zmDebug("DeleteEvent: ID=" + id + " item=" + itemid);
+ ZMDataModel.zmLog("Delete event " + apiDelete);
- $ionicLoading.show({
- template: "{{'kDeletingEvent' | translate}}...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
+ $ionicLoading.show({
+ template: "{{'kDeletingEvent' | translate}}...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
- $http.delete(apiDelete)
- .success(function (data) {
- $ionicLoading.hide();
- ZMDataModel.zmDebug("delete success: " + JSON.stringify(data));
- ZMDataModel.displayBanner('info', [$translate.instant('kDeleteEventSuccess')], 2000, 2000);
+ $http.delete(apiDelete)
+ .success(function (data) {
+ $ionicLoading.hide();
+ ZMDataModel.zmDebug("delete success: " + JSON.stringify(data));
+ ZMDataModel.displayBanner('info', [$translate.instant('kDeleteEventSuccess')], 2000, 2000);
- $scope.events.splice(itemid, 1);
- //doRefresh();
+ $scope.events.splice(itemid, 1);
+ //doRefresh();
- })
- .error(function (data) {
- $ionicLoading.hide();
- ZMDataModel.zmDebug("delete error: " + JSON.stringify(data));
- ZMDataModel.displayBanner('error', [$translate.instant('kDeleteEventError1'), $translate.instant('kDeleteEventError2')]);
- });
+ })
+ .error(function (data) {
+ $ionicLoading.hide();
+ ZMDataModel.zmDebug("delete error: " + JSON.stringify(data));
+ ZMDataModel.displayBanner('error', [$translate.instant('kDeleteEventError1'), $translate.instant('kDeleteEventError2')]);
+ });
- };
+ };
- //------------------------------------------------
- // Tapping on the filter sign lets you reset it
- //-------------------------------------------------
+ //------------------------------------------------
+ // Tapping on the filter sign lets you reset it
+ //-------------------------------------------------
- $scope.filterTapped = function () {
- //console.log("FILTER TAPPED");
- var myFrom = moment($rootScope.fromString).format("MMM/DD/YYYY "+ZMDataModel.getTimeFormat()).toString();
- var toString = moment($rootScope.toString).format("MMM/DD/YYYY "+ZMDataModel.getTimeFormat()).toString();
+ $scope.filterTapped = function () {
+ //console.log("FILTER TAPPED");
+ var myFrom = moment($rootScope.fromString).format("MMM/DD/YYYY " + ZMDataModel.getTimeFormat()).toString();
+ var toString = moment($rootScope.toString).format("MMM/DD/YYYY " + ZMDataModel.getTimeFormat()).toString();
- $rootScope.zmPopup = $ionicPopup.confirm({
- title: $translate.instant('kFilterSettings'),
- template: $translate.instant('kFilterEventsBetween1')+':<br/> <b>' + myFrom + "</b> "+$translate.instant('kTo')+" <b>" + toString + '</b><br/>' + $translate.instant('kFilterEventsBetween2')
- });
- $rootScope.zmPopup.then(function (res) {
- if (res) {
- ZMDataModel.zmLog("Filter reset requested in popup");
- $rootScope.isEventFilterOn = false;
- $rootScope.fromDate = "";
- $rootScope.fromTime = "";
- $rootScope.toDate = "";
- $rootScope.toTime = "";
- $rootScope.fromString = "";
- $rootScope.toString = "";
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
- $state.go("events", {
- "id": 0
- });
- } else {
- ZMDataModel.zmLog("Filter reset cancelled in popup");
- }
- });
+ $rootScope.zmPopup = $ionicPopup.confirm({
+ title: $translate.instant('kFilterSettings'),
+ template: $translate.instant('kFilterEventsBetween1') + ':<br/> <b>' + myFrom + "</b> " + $translate.instant('kTo') + " <b>" + toString + '</b><br/>' + $translate.instant('kFilterEventsBetween2')
+ });
+ $rootScope.zmPopup.then(function (res) {
+ if (res) {
+ ZMDataModel.zmLog("Filter reset requested in popup");
+ $rootScope.isEventFilterOn = false;
+ $rootScope.fromDate = "";
+ $rootScope.fromTime = "";
+ $rootScope.toDate = "";
+ $rootScope.toTime = "";
+ $rootScope.fromString = "";
+ $rootScope.toString = "";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ });
+ } else {
+ ZMDataModel.zmLog("Filter reset cancelled in popup");
+ }
+ });
- };
+ };
- //--------------------------------------------------------------------------
- // When the user pulls the pullup bar we call this to get the latest
- // data for events ranges summaries using the consolveEvents facility of ZM
- //--------------------------------------------------------------------------
+ //--------------------------------------------------------------------------
+ // When the user pulls the pullup bar we call this to get the latest
+ // data for events ranges summaries using the consolveEvents facility of ZM
+ //--------------------------------------------------------------------------
- $scope.footerExpand = function () {
- //https://server/zm/api/events/consoleEvents/5%20minute.json
- var ld = ZMDataModel.getLogin();
-
- var af = "/AlarmFrames >=: " + ld.enableAlarmCount;
+ $scope.footerExpand = function () {
+ //https://server/zm/api/events/consoleEvents/5%20minute.json
+ var ld = ZMDataModel.getLogin();
- var apiurl = ld.apiurl + "/events/consoleEvents/1%20hour"+af+".json";
- ZMDataModel.zmDebug ("consoleEvents API:"+apiurl);
-
-
- $http.get(apiurl)
- .success(function (data) {
- ZMDataModel.zmDebug(JSON.stringify(data));
- $scope.hours = [];
- var p = data.results;
- for (var key in data.results) {
+ var af = "/AlarmFrames >=: " + ld.enableAlarmCount;
+ var apiurl = ld.apiurl + "/events/consoleEvents/1%20hour" + af + ".json";
+ ZMDataModel.zmDebug("consoleEvents API:" + apiurl);
- if (p.hasOwnProperty(key)) {
+ $http.get(apiurl)
+ .success(function (data) {
+ ZMDataModel.zmDebug(JSON.stringify(data));
+ $scope.hours = [];
+ var p = data.results;
+ for (var key in data.results) {
- var idfound = true;
- if (ld.persistMontageOrder) {
- idfound = false;
- for (var ii = 0; ii < $scope.monitors.length; ii++) {
- if ($scope.monitors[ii].Monitor.Id == key) {
- idfound = true;
- break;
- }
- }
- }
- //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
- if (idfound)
- $scope.hours.push({
- monitor: ZMDataModel.getMonitorName(key),
- events: p[key],
- mid: key
- });
- }
- }
- });
+ if (p.hasOwnProperty(key)) {
- apiurl = ld.apiurl + "/events/consoleEvents/1%20day"+af+".json";
- ZMDataModel.zmDebug ("consoleEvents API:"+apiurl);
- $http.get(apiurl)
- .success(function (data) {
- ZMDataModel.zmDebug(JSON.stringify(data));
- $scope.days = [];
- var p = data.results;
- for (var key in data.results) {
- if (p.hasOwnProperty(key)) {
- var idfound = true;
- if (ld.persistMontageOrder) {
- idfound = false;
- for (var ii = 0; ii < $scope.monitors.length; ii++) {
- if ($scope.monitors[ii].Monitor.Id == key) {
- idfound = true;
- break;
- }
+ var idfound = true;
+ if (ld.persistMontageOrder) {
+ idfound = false;
+ for (var ii = 0; ii < $scope.monitors.length; ii++) {
+ if ($scope.monitors[ii].Monitor.Id == key) {
+ idfound = true;
+ break;
}
}
- //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
- if (idfound)
- //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
- $scope.days.push({
+ }
+ //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
+ if (idfound)
+ $scope.hours.push({
monitor: ZMDataModel.getMonitorName(key),
events: p[key],
mid: key
});
- }
}
- });
-
-
+ }
+ });
- apiurl = ld.apiurl + "/events/consoleEvents/1%20week"+af+".json";
- ZMDataModel.zmDebug ("consoleEvents API:"+apiurl);
- $http.get(apiurl)
- .success(function (data) {
- ZMDataModel.zmDebug(JSON.stringify(data));
- $scope.weeks = [];
- var p = data.results;
- for (var key in data.results) {
- if (p.hasOwnProperty(key)) {
- var idfound = true;
- if (ld.persistMontageOrder) {
- idfound = false;
- for (var ii = 0; ii < $scope.monitors.length; ii++) {
- if ($scope.monitors[ii].Monitor.Id == key) {
- idfound = true;
- break;
- }
+ apiurl = ld.apiurl + "/events/consoleEvents/1%20day" + af + ".json";
+ ZMDataModel.zmDebug("consoleEvents API:" + apiurl);
+ $http.get(apiurl)
+ .success(function (data) {
+ ZMDataModel.zmDebug(JSON.stringify(data));
+ $scope.days = [];
+ var p = data.results;
+ for (var key in data.results) {
+ if (p.hasOwnProperty(key)) {
+ var idfound = true;
+ if (ld.persistMontageOrder) {
+ idfound = false;
+ for (var ii = 0; ii < $scope.monitors.length; ii++) {
+ if ($scope.monitors[ii].Monitor.Id == key) {
+ idfound = true;
+ break;
}
}
- //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
- if (idfound)
- //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
- $scope.weeks.push({
- monitor: ZMDataModel.getMonitorName(key),
- events: p[key],
- mid: key
- });
-
}
+ //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
+ if (idfound)
+ //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
+ $scope.days.push({
+ monitor: ZMDataModel.getMonitorName(key),
+ events: p[key],
+ mid: key
+ });
+
}
- });
+ }
+ });
- apiurl = ld.apiurl + "/events/consoleEvents/1%20month"+af+".json";
- ZMDataModel.zmDebug ("consoleEvents API:"+apiurl);
- $http.get(apiurl)
- .success(function (data) {
- ZMDataModel.zmDebug(JSON.stringify(data));
- $scope.months = [];
- var p = data.results;
- for (var key in data.results) {
- if (p.hasOwnProperty(key)) {
- var idfound = true;
- var ld = ZMDataModel.getLogin();
- if (ld.persistMontageOrder) {
- idfound = false;
- for (var ii = 0; ii < $scope.monitors.length; ii++) {
- if ($scope.monitors[ii].Monitor.Id == key) {
- idfound = true;
- break;
- }
+ apiurl = ld.apiurl + "/events/consoleEvents/1%20week" + af + ".json";
+ ZMDataModel.zmDebug("consoleEvents API:" + apiurl);
+ $http.get(apiurl)
+ .success(function (data) {
+ ZMDataModel.zmDebug(JSON.stringify(data));
+ $scope.weeks = [];
+ var p = data.results;
+ for (var key in data.results) {
+ if (p.hasOwnProperty(key)) {
+
+ var idfound = true;
+ if (ld.persistMontageOrder) {
+ idfound = false;
+ for (var ii = 0; ii < $scope.monitors.length; ii++) {
+ if ($scope.monitors[ii].Monitor.Id == key) {
+ idfound = true;
+ break;
}
}
- //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
- if (idfound)
- //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
- $scope.months.push({
- monitor: ZMDataModel.getMonitorName(key),
- events: p[key],
- mid: key
- });
-
}
+ //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
+ if (idfound)
+ //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
+ $scope.weeks.push({
+ monitor: ZMDataModel.getMonitorName(key),
+ events: p[key],
+ mid: key
+ });
+
}
- });
+ }
+ });
- };
+ apiurl = ld.apiurl + "/events/consoleEvents/1%20month" + af + ".json";
+ ZMDataModel.zmDebug("consoleEvents API:" + apiurl);
+ $http.get(apiurl)
+ .success(function (data) {
+ ZMDataModel.zmDebug(JSON.stringify(data));
+ $scope.months = [];
+ var p = data.results;
+ for (var key in data.results) {
+ if (p.hasOwnProperty(key)) {
+
+ var idfound = true;
+ var ld = ZMDataModel.getLogin();
+ if (ld.persistMontageOrder) {
+ idfound = false;
+ for (var ii = 0; ii < $scope.monitors.length; ii++) {
+ if ($scope.monitors[ii].Monitor.Id == key) {
+ idfound = true;
+ break;
+ }
+ }
+ }
+ //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
+ if (idfound)
+ //console.log(ZMDataModel.getMonitorName(key) + " -> " + p[key]);
+ $scope.months.push({
+ monitor: ZMDataModel.getMonitorName(key),
+ events: p[key],
+ mid: key
+ });
-
- $scope.openMenu = function () {
- $ionicSideMenuDelegate.toggleLeft();
- };
+ }
+ }
+ });
- $scope.scrollPosition = function () {
- var scrl = parseFloat($ionicScrollDelegate.$getByHandle("mainScroll").getScrollPosition().top);
- var item = Math.round(scrl / zm.eventsListDetailsHeight);
- if ($scope.events == undefined || !$scope.events.length || $scope.events[item] == undefined) {
- return "";
- } else {
- return prettifyDate($scope.events[item].Event.StartTime);
- }
- //return Math.random();
- };
- //-------------------------------------------------------------------------
- // called when user switches to background
- //-------------------------------------------------------------------------
- function onPause() {
- ZMDataModel.zmDebug("EventCtrl:onpause called");
- if ($scope.popover) $scope.popover.remove();
+ };
+
- }
- //-------------------------------------------------------------------------
- // Pads the filename with leading 0s, depending on ZM_IMAGE_DIGITS
- //-------------------------------------------------------------------------
- function padToN(number, digits) {
-
- var i;
- var stringMax = "";
- var stringLeading = "";
- for (i = 1; i <= digits; i++) {
- stringMax = stringMax + "9";
- if (i != digits) stringLeading = stringLeading + "0";
- }
- var numMax = parseInt(stringMax);
+ $scope.openMenu = function () {
+ $ionicSideMenuDelegate.toggleLeft();
+ };
- if (number <= numMax) {
- number = (stringLeading + number).slice(-digits);
- }
- //console.log ("PADTON: returning " + number);
- return number;
+ $scope.scrollPosition = function () {
+ var scrl = parseFloat($ionicScrollDelegate.$getByHandle("mainScroll").getScrollPosition().top);
+ var item = Math.round(scrl / zm.eventsListDetailsHeight);
+ if ($scope.events == undefined || !$scope.events.length || $scope.events[item] == undefined) {
+ return "";
+ } else {
+ return prettifyDate($scope.events[item].Event.StartTime);
}
+ //return Math.random();
+ };
+ //-------------------------------------------------------------------------
+ // called when user switches to background
+ //-------------------------------------------------------------------------
+ function onPause() {
+ ZMDataModel.zmDebug("EventCtrl:onpause called");
+ if ($scope.popover) $scope.popover.remove();
- //-------------------------------------------------------------------------
- // FIXME: Are we using this?
- //-------------------------------------------------------------------------
- $scope.disableSlide = function () {
- ZMDataModel.zmDebug("EventCtrl:DisableSlide called");
- $ionicSlideBoxDelegate.$getByHandle("eventSlideBox").enableSlide(false);
- };
+ }
+ //-------------------------------------------------------------------------
+ // Pads the filename with leading 0s, depending on ZM_IMAGE_DIGITS
+ //-------------------------------------------------------------------------
+ function padToN(number, digits) {
+
+ var i;
+ var stringMax = "";
+ var stringLeading = "";
+ for (i = 1; i <= digits; i++) {
+ stringMax = stringMax + "9";
+ if (i != digits) stringLeading = stringLeading + "0";
+ }
+ var numMax = parseInt(stringMax);
+ if (number <= numMax) {
+ number = (stringLeading + number).slice(-digits);
+ }
+ //console.log ("PADTON: returning " + number);
+ return number;
+ }
-
- //-------------------------------------------------------------------------
- // This function is called when a user enables or disables
- // scrub view for an event.
- //-------------------------------------------------------------------------
+ //-------------------------------------------------------------------------
+ // FIXME: Are we using this?
+ //-------------------------------------------------------------------------
+ $scope.disableSlide = function () {
+ ZMDataModel.zmDebug("EventCtrl:DisableSlide called");
+ $ionicSlideBoxDelegate.$getByHandle("eventSlideBox").enableSlide(false);
+ };
- $scope.toggleGroupScrub = function (event, ndx, frames) {
- $scope.groupType = "scrub";
- toggleGroup(event, ndx, frames,$scope.groupType);
- };
-
- $scope.toggleGroupAlarms = function (event, ndx, frames) {
- $scope.groupType = "alarms";
- toggleGroup(event, ndx, frames,$scope.groupType);
- };
- function toggleGroup(event, ndx, frames, groupType) {
-
-
- // If we are here and there is a record of a previous scroll
- // then we need to scroll back to hide that view
- if (scrollbynumber) {
- $ionicScrollDelegate.$getByHandle("mainScroll").scrollBy(0, -1 * scrollbynumber, true);
- scrollbynumber = 0;
- }
- if (oldEvent && event != oldEvent) {
-
- ZMDataModel.zmDebug("EventCtrl:Old event scrub will hide now");
- oldEvent.Event.ShowScrub = false;
- oldEvent.Event.height = zm.eventsListDetailsHeight;
- oldEvent = "";
- }
- event.Event.ShowScrub = !event.Event.ShowScrub;
- // $ionicScrollDelegate.resize();
-
- //console.log ("GROUP TYPE IS " + groupType);
-
- if (event.Event.ShowScrub == true) // turn on display now
- {
-
- if (groupType == 'alarms')
- {
- $scope.alarm_images=[];
- event.Event.height = zm.eventsListDetailsHeight + zm.eventsListScrubHeight;
- $ionicScrollDelegate.resize();
- var myurl = loginData.apiurl + '/events/' + event.Event.Id + ".json";
- ZMDataModel.zmLog("API for event details" + myurl);
- $http.get(myurl)
- .success(function (data) {
- $scope.FrameArray = data.event.Frame;
- // $scope.slider_options.scale=[];
+ //-------------------------------------------------------------------------
+ // This function is called when a user enables or disables
+ // scrub view for an event.
+ //-------------------------------------------------------------------------
- //$scope.slider_options.scale = [];
+ $scope.toggleGroupScrub = function (event, ndx, frames) {
+ $scope.groupType = "scrub";
+ toggleGroup(event, ndx, frames, $scope.groupType);
+ };
- var i;
- var timestamp = null;
- for (i = 0; i < data.event.Frame.length; i++) {
- if (data.event.Frame[i].Type == "Alarm") {
-
- //console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
- var atype;
- if (timestamp != data.event.Frame[i].TimeStamp)
- {
-
- atype = $translate.instant('kShowTimeDiffFrames');
- }
- else
- {
- atype = $translate.instant('kShowAllFrames');
- }
- $scope.alarm_images.push({
- type:atype,
- id: data.event.Frame[i].Id,
- frameid: data.event.Frame[i].FrameId,
- score: data.event.Frame[i].Score,
- fname: padToN(data.event.Frame[i].FrameId, eventImageDigits) + "-capture.jpg",
- time:data.event.Frame[i].TimeStamp
- });
- timestamp = data.event.Frame[i].TimeStamp;
- }
+ $scope.toggleGroupAlarms = function (event, ndx, frames) {
+ $scope.groupType = "alarms";
+ toggleGroup(event, ndx, frames, $scope.groupType);
+ };
- }
- oldEvent = event;
+ function toggleGroup(event, ndx, frames, groupType) {
- //console.log (JSON.stringify(data));
- })
- .error(function (err) {
- ZMDataModel.zmLog("Error retrieving detailed frame API " + JSON.stringify(err));
- ZMDataModel.displayBanner('error', ['could not retrieve frame details', 'please try again']);
- });
-
- } // end of groupType == alarms
- else // groupType == scrub
- {
- ZMDataModel.zmDebug("EventCtrl: Scrubbing will turn on now");
- $scope.currentEvent = "";
- $scope.event = event;
- //$ionicScrollDelegate.freezeScroll(true);
- $ionicSideMenuDelegate.canDragContent(false);
- $scope.slider_options = {
- from: 1,
- to: event.Event.Frames,
- realtime: true,
- step: 1,
- className: "mySliderClass",
- callback: function (value, released) {
- //console.log("CALLBACK"+value+released);
- $ionicScrollDelegate.freezeScroll(!released);
- //ZMDataModel.zmDebug("EventCtrl: freezeScroll called with " + !released);
+ // If we are here and there is a record of a previous scroll
+ // then we need to scroll back to hide that view
+ if (scrollbynumber) {
+ $ionicScrollDelegate.$getByHandle("mainScroll").scrollBy(0, -1 * scrollbynumber, true);
+ scrollbynumber = 0;
+ }
+ if (oldEvent && event != oldEvent) {
- },
- //modelLabels:function(val) {return "";},
- css: {
- background: {
- "background-color": "silver"
- },
- before: {
- "background-color": "purple"
- },
- default: {
- "background-color": "white"
- }, // default value: 1px
- after: {
- "background-color": "green"
- }, // zone after default value
- pointer: {
- "background-color": "red"
- }, // circle pointer
- range: {
- "background-color": "red"
- } // use it if double value
- },
- scale: []
+ ZMDataModel.zmDebug("EventCtrl:Old event scrub will hide now");
+ oldEvent.Event.ShowScrub = false;
+ oldEvent.Event.height = zm.eventsListDetailsHeight;
+ oldEvent = "";
+ }
- };
+ event.Event.ShowScrub = !event.Event.ShowScrub;
+ // $ionicScrollDelegate.resize();
- event.Event.height = zm.eventsListDetailsHeight + zm.eventsListScrubHeight;
- $ionicScrollDelegate.resize();
- $scope.mycarousel.index = 0;
- $scope.ionRange.index = 1;
- //console.log("**Resetting range");
- $scope.slides = [];
- var i;
-
- if (event.Event.imageMode == 'path')
- {
- ZMDataModel.zmDebug("EventCtrl: found " + frames + " frames to scrub");
+ //console.log ("GROUP TYPE IS " + groupType);
+ if (event.Event.ShowScrub == true) // turn on display now
+ {
+ if (groupType == 'alarms') {
+ $scope.alarm_images = [];
+ event.Event.height = zm.eventsListDetailsHeight + zm.eventsListScrubHeight;
+ $ionicScrollDelegate.resize();
+ var myurl = loginData.apiurl + '/events/' + event.Event.Id + ".json";
+ ZMDataModel.zmLog("API for event details" + myurl);
+ $http.get(myurl)
+ .success(function (data) {
+ $scope.FrameArray = data.event.Frame;
+ // $scope.slider_options.scale=[];
+
+ //$scope.slider_options.scale = [];
+
+ var i;
+ var timestamp = null;
+ for (i = 0; i < data.event.Frame.length; i++) {
+ if (data.event.Frame[i].Type == "Alarm") {
+
+ //console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
+ var atype;
+ if (timestamp != data.event.Frame[i].TimeStamp) {
+
+ atype = $translate.instant('kShowTimeDiffFrames');
+ } else {
+ atype = $translate.instant('kShowAllFrames');
+ }
+ $scope.alarm_images.push({
+ type: atype,
+ id: data.event.Frame[i].Id,
+ frameid: data.event.Frame[i].FrameId,
+ score: data.event.Frame[i].Score,
+ fname: padToN(data.event.Frame[i].FrameId, eventImageDigits) + "-capture.jpg",
+ time: data.event.Frame[i].TimeStamp
+ });
+ timestamp = data.event.Frame[i].TimeStamp;
+ }
- for (i = 1; i <= frames; i++) {
- var fname = padToN(i, eventImageDigits) + "-capture.jpg";
+ }
+ oldEvent = event;
+ //console.log (JSON.stringify(data));
+ })
+ .error(function (err) {
+ ZMDataModel.zmLog("Error retrieving detailed frame API " + JSON.stringify(err));
+ ZMDataModel.displayBanner('error', ['could not retrieve frame details', 'please try again']);
+ });
+ } // end of groupType == alarms
+ else // groupType == scrub
+ {
- $scope.slides.push({
- id: i,
- img: fname
- });
+ ZMDataModel.zmDebug("EventCtrl: Scrubbing will turn on now");
+ $scope.currentEvent = "";
+ $scope.event = event;
+ //$ionicScrollDelegate.freezeScroll(true);
+ $ionicSideMenuDelegate.canDragContent(false);
+ $scope.slider_options = {
+ from: 1,
+ to: event.Event.Frames,
+ realtime: true,
+ step: 1,
+ className: "mySliderClass",
+ callback: function (value, released) {
+ //console.log("CALLBACK"+value+released);
+ $ionicScrollDelegate.freezeScroll(!released);
+ //ZMDataModel.zmDebug("EventCtrl: freezeScroll called with " + !released);
- }
- }
- else // we need fids
- {
- var myurl_frames = loginData.apiurl + '/events/' + event.Event.Id + ".json";
- ZMDataModel.zmLog("API for event details" + myurl_frames);
- $http.get(myurl_frames)
- .success(function (data) {
- $scope.FrameArray = data.event.Frame;
- // $scope.slider_options.scale=[];
-
- //$scope.slider_options.scale = [];
-
- var i;
- for (i = 0; i < data.event.Frame.length; i++) {
-
-
- //console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
- $scope.slides.push({
- id: data.event.Frame[i].Id,
- frameid: data.event.Frame[i].FrameId,
-
- });
-
- }
+ },
+ //modelLabels:function(val) {return "";},
+ css: {
+ background: {
+ "background-color": "silver"
+ },
+ before: {
+ "background-color": "purple"
+ },
+ default: {
+ "background-color": "white"
+ }, // default value: 1px
+ after: {
+ "background-color": "green"
+ }, // zone after default value
+ pointer: {
+ "background-color": "red"
+ }, // circle pointer
+ range: {
+ "background-color": "red"
+ } // use it if double value
+ },
+ scale: []
- //console.log (JSON.stringify(data));
- })
- .error(function (err) {
- ZMDataModel.zmLog("Error retrieving detailed frame API " + JSON.stringify(err));
- ZMDataModel.displayBanner('error', [$translate.instant('kErrorFrameBanner'), $translate.instant('kErrorPleaseTryAgain')]);
- });
-
- }
+ };
+ event.Event.height = zm.eventsListDetailsHeight + zm.eventsListScrubHeight;
+ $ionicScrollDelegate.resize();
+ $scope.mycarousel.index = 0;
+ $scope.ionRange.index = 1;
+ //console.log("**Resetting range");
+ $scope.slides = [];
+ var i;
+ if (event.Event.imageMode == 'path') {
+ ZMDataModel.zmDebug("EventCtrl: found " + frames + " frames to scrub");
- // now get event details to show alarm frames
- loginData = ZMDataModel.getLogin();
-
- if (typeof event.Event.DefaultVideo === 'undefined')
- event.Event.DefaultVideo = "";
- // grab video details
- event.Event.video = {};
- var videoURL;
-
- if (event.Event.imageMode == 'path')
- videoURL = event.Event.baseURL + "/events/" + event.Event.relativePath + event.Event.DefaultVideo;
- else
- videoURL = event.Event.baseURL + "/index.php?view=view_video&eid="+event.Event.Id;
-
- console.log("************** VIDEO IS " + videoURL);
- event.Event.video.config = {
- autoPlay: true,
- sources: [
- {
- src: $sce.trustAsResourceUrl(videoURL),
- type: "video/mp4"
- }
- ],
- theme: "lib/videogular-themes-default/videogular.css",
+ for (i = 1; i <= frames; i++) {
+ var fname = padToN(i, eventImageDigits) + "-capture.jpg";
+
- };
+ $scope.slides.push({
+ id: i,
+ img: fname
+ });
- var myurl2 = loginData.apiurl + '/events/' + event.Event.Id + ".json";
- ZMDataModel.zmLog("API for event details" + myurl2);
- $http.get(myurl2)
+ }
+ } else // we need fids
+ {
+ var myurl_frames = loginData.apiurl + '/events/' + event.Event.Id + ".json";
+ ZMDataModel.zmLog("API for event details" + myurl_frames);
+ $http.get(myurl_frames)
.success(function (data) {
$scope.FrameArray = data.event.Frame;
// $scope.slider_options.scale=[];
- $scope.slider_options.scale = [];
+
+ //$scope.slider_options.scale = [];
var i;
for (i = 0; i < data.event.Frame.length; i++) {
- if (data.event.Frame[i].Type == "Alarm") {
- //console.log ("**ALARM AT " + i + "of " + data.event.Frame.length);
- $scope.slider_options.scale.push({
- val: data.event.Frame[i].FrameId,
- label: ' '
- });
- } else {
- //$scope.slider_options.scale.push(' ');
- }
+
+ //console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
+ $scope.slides.push({
+ id: data.event.Frame[i].Id,
+ frameid: data.event.Frame[i].FrameId,
+
+ });
+
}
@@ -1225,29 +1125,93 @@ angular.module('zmApp.controllers')
ZMDataModel.displayBanner('error', [$translate.instant('kErrorFrameBanner'), $translate.instant('kErrorPleaseTryAgain')]);
});
+ }
- oldEvent = event;
- $rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
- var elem = angular.element(document.getElementById("item-" + ndx));
- var locobject = $ionicPosition.offset(elem);
- //console.log(JSON.stringify(locobject));
- var toplocation = parseInt(locobject.top);
- var objheight = parseInt(locobject.height);
- // console.log("top location is " + toplocation);
- var distdiff = parseInt($rootScope.devHeight) - toplocation - objheight;
- // console.log("*****Space at bottom is " + distdiff);
- if (distdiff < zm.eventsListScrubHeight) // size of the scroller with bars
- {
- scrollbynumber = zm.eventsListScrubHeight - distdiff;
- $ionicScrollDelegate.$getByHandle("mainScroll").scrollBy(0, scrollbynumber, true);
- // we need to scroll up to make space
- }
+ // now get event details to show alarm frames
+ loginData = ZMDataModel.getLogin();
+
+ if (typeof event.Event.DefaultVideo === 'undefined')
+ event.Event.DefaultVideo = "";
+ // grab video details
+ event.Event.video = {};
+ var videoURL;
+
+ if (event.Event.imageMode == 'path')
+ videoURL = event.Event.baseURL + "/events/" + event.Event.relativePath + event.Event.DefaultVideo;
+ else
+ videoURL = event.Event.baseURL + "/index.php?view=view_video&eid=" + event.Event.Id;
+
+ console.log("************** VIDEO IS " + videoURL);
+ event.Event.video.config = {
+ autoPlay: true,
+ sources: [
+ {
+ src: $sce.trustAsResourceUrl(videoURL),
+ type: "video/mp4"
+ }
+
+ ],
+
+ theme: "lib/videogular-themes-default/videogular.css",
+
+ };
+
+
+ var myurl2 = loginData.apiurl + '/events/' + event.Event.Id + ".json";
+ ZMDataModel.zmLog("API for event details" + myurl2);
+ $http.get(myurl2)
+ .success(function (data) {
+ $scope.FrameArray = data.event.Frame;
+ // $scope.slider_options.scale=[];
+ $scope.slider_options.scale = [];
+
+ var i;
+ for (i = 0; i < data.event.Frame.length; i++) {
+ if (data.event.Frame[i].Type == "Alarm") {
+
+ //console.log ("**ALARM AT " + i + "of " + data.event.Frame.length);
+ $scope.slider_options.scale.push({
+ val: data.event.Frame[i].FrameId,
+ label: ' '
+ });
+ } else {
+ //$scope.slider_options.scale.push(' ');
+ }
- } // end of groupType == scrub
- } // end of ShowScrub == true
- else {
+ }
+
+ //console.log (JSON.stringify(data));
+ })
+ .error(function (err) {
+ ZMDataModel.zmLog("Error retrieving detailed frame API " + JSON.stringify(err));
+ ZMDataModel.displayBanner('error', [$translate.instant('kErrorFrameBanner'), $translate.instant('kErrorPleaseTryAgain')]);
+ });
+
+
+ oldEvent = event;
+ $rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
+ var elem = angular.element(document.getElementById("item-" + ndx));
+ var locobject = $ionicPosition.offset(elem);
+ //console.log(JSON.stringify(locobject));
+ var toplocation = parseInt(locobject.top);
+ var objheight = parseInt(locobject.height);
+ // console.log("top location is " + toplocation);
+ var distdiff = parseInt($rootScope.devHeight) - toplocation - objheight;
+ // console.log("*****Space at bottom is " + distdiff);
+
+ if (distdiff < zm.eventsListScrubHeight) // size of the scroller with bars
+ {
+ scrollbynumber = zm.eventsListScrubHeight - distdiff;
+ $ionicScrollDelegate.$getByHandle("mainScroll").scrollBy(0, scrollbynumber, true);
+
+ // we need to scroll up to make space
+ }
+
+ } // end of groupType == scrub
+ } // end of ShowScrub == true
+ else {
// $ionicScrollDelegate.freezeScroll(false);
$ionicSideMenuDelegate.canDragContent(true);
event.Event.height = zm.eventsListDetailsHeight;
@@ -1257,519 +1221,517 @@ angular.module('zmApp.controllers')
$ionicScrollDelegate.$getByHandle("mainScroll").scrollBy(0, -1 * scrollbynumber, true);
scrollbynumber = 0;
}
- // we are turning off, so scroll by back
+ // we are turning off, so scroll by back
}
- }
+ }
- $scope.closeIfOpen = function (event) {
- if (event != undefined) {
- if (event.Event.ShowScrub)
- toggleGroup(event);
+ $scope.closeIfOpen = function (event) {
+ if (event != undefined) {
+ if (event.Event.ShowScrub)
+ toggleGroup(event);
- }
- };
+ }
+ };
- $scope.isGroupShown = function (event) {
- // console.log ("IS SHOW INDEX is " + ndx);
- //console.log ("SHOW GROUP IS " + showGroup);
+ $scope.isGroupShown = function (event) {
+ // console.log ("IS SHOW INDEX is " + ndx);
+ //console.log ("SHOW GROUP IS " + showGroup);
- return (event == undefined) ? false : event.Event.ShowScrub;
+ return (event == undefined) ? false : event.Event.ShowScrub;
- };
+ };
- //---------------------------------------------------
- // reload view
- //---------------------------------------------------
- $scope.reloadView = function () {
- // All we really need to do here is change the random token
- // in the image src and it will refresh. No need to reload the view
- // and if you did reload the view, it would go back to events list
- // which is the view - and when you are in the modal it will go away
- //console.log("*** Refreshing Modal view ***");
- //$state.go($state.current, {}, {reload: true});
- $rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
- $ionicLoading.show({
- template: $translate.instant('kRefreshedView'),
- noBackdrop: true,
- duration: 3000
- });
+ //---------------------------------------------------
+ // reload view
+ //---------------------------------------------------
+ $scope.reloadView = function () {
+ // All we really need to do here is change the random token
+ // in the image src and it will refresh. No need to reload the view
+ // and if you did reload the view, it would go back to events list
+ // which is the view - and when you are in the modal it will go away
+ //console.log("*** Refreshing Modal view ***");
+ //$state.go($state.current, {}, {reload: true});
+ $rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
+ $ionicLoading.show({
+ template: $translate.instant('kRefreshedView'),
+ noBackdrop: true,
+ duration: 3000
+ });
- };
+ };
- //---------------------------------------------------
- // when you tap a list entry - to break search loop
- //---------------------------------------------------
- $scope.tapped = function () {
- // console.log("*** TAPPED ****");
- // if he tapped, the we are not infinite loading on ion-infinite
- if (enableLoadMore == false) {
- moreEvents = true;
- enableLoadMore = true;
- // console.log("REMOVING ARTIFICAL LOAD MORE BLOCK");
- }
- };
+ //---------------------------------------------------
+ // when you tap a list entry - to break search loop
+ //---------------------------------------------------
+ $scope.tapped = function () {
+ // console.log("*** TAPPED ****");
+ // if he tapped, the we are not infinite loading on ion-infinite
+ if (enableLoadMore == false) {
+ moreEvents = true;
+ enableLoadMore = true;
+ // console.log("REMOVING ARTIFICAL LOAD MORE BLOCK");
+ }
+ };
- $scope.$on('$ionicView.loaded', function () {
- // console.log("**VIEW ** Events Ctrl Loaded");
+ $scope.$on('$ionicView.loaded', function () {
+ // console.log("**VIEW ** Events Ctrl Loaded");
+ });
+
+ //-------------------------------------------------------------------------
+ // Lets make sure we set screen dim properly as we enter
+ // The problem is we enter other states before we leave previous states
+ // from a callback perspective in ionic, so we really can't predictably
+ // reset power state on exit as if it is called after we enter another
+ // state, that effectively overwrites current view power management needs
+ //------------------------------------------------------------------------
+ $scope.$on('$ionicView.enter', function () {
+ // console.log("**VIEW ** Events Ctrl Entered");
+ ZMDataModel.setAwake(false);
+
+ EventServer.sendMessage('push', {
+ type: 'badge',
+ badge: 0,
});
- //-------------------------------------------------------------------------
- // Lets make sure we set screen dim properly as we enter
- // The problem is we enter other states before we leave previous states
- // from a callback perspective in ionic, so we really can't predictably
- // reset power state on exit as if it is called after we enter another
- // state, that effectively overwrites current view power management needs
- //------------------------------------------------------------------------
- $scope.$on('$ionicView.enter', function () {
- // console.log("**VIEW ** Events Ctrl Entered");
- ZMDataModel.setAwake(false);
+ $ionicPopover.fromTemplateUrl('templates/events-popover.html', {
+ scope: $scope,
+ }).then(function (popover) {
+ $scope.popover = popover;
+ });
- EventServer.sendMessage('push', {
- type: 'badge',
- badge: 0,
- });
- $ionicPopover.fromTemplateUrl('templates/events-popover.html', {
- scope: $scope,
- }).then(function (popover) {
- $scope.popover = popover;
+
+ //reset badge count
+ if (window.cordova && window.cordova.plugins.notification) {
+ $cordovaBadge.set(0).then(function () {
+ // You have permission, badge set.
+ }, function (err) {
+ ZMDataModel.zmDebug("app does not have badge permissions. Please check your phone notification settings");
+ // You do not have permission.
});
-
-
- //reset badge count
- if (window.cordova && window.cordova.plugins.notification) {
- $cordovaBadge.set(0).then(function () {
- // You have permission, badge set.
- }, function (err) {
- ZMDataModel.zmDebug("app does not have badge permissions. Please check your phone notification settings");
- // You do not have permission.
- });
+ $cordovaLocalNotification.clearAll();
+ }
- $cordovaLocalNotification.clearAll();
- }
+ });
- });
+ $scope.$on('$ionicView.leave', function () {
+ //console.log("**VIEW ** Events Ctrl Left");
+ });
- $scope.$on('$ionicView.leave', function () {
- //console.log("**VIEW ** Events Ctrl Left");
- });
+ $scope.$on('$ionicView.unloaded', function () {
+ //console.log("**VIEW ** Events Ctrl Unloaded");
+ //console.log("*** MODAL ** Destroying modal too");
+ if ($scope.modal !== undefined) {
+ $scope.modal.remove();
+ }
- $scope.$on('$ionicView.unloaded', function () {
- //console.log("**VIEW ** Events Ctrl Unloaded");
- //console.log("*** MODAL ** Destroying modal too");
- if ($scope.modal !== undefined) {
- $scope.modal.remove();
- }
+ });
- });
+ //---------------------------------------------------
+ // used to hide loading image toast
+ //---------------------------------------------------
+ $scope.finishedLoadingImage = function (ndx) {
+ // console.log("*** Events image FINISHED loading index: "+ndx+"***");
+ $ionicLoading.hide();
+ };
- //---------------------------------------------------
- // used to hide loading image toast
- //---------------------------------------------------
- $scope.finishedLoadingImage = function (ndx) {
- // console.log("*** Events image FINISHED loading index: "+ndx+"***");
- $ionicLoading.hide();
- };
+ //---------------------------------------------------
+ //
+ //---------------------------------------------------
+ $scope.clearSearch = function () {
+ $scope.search.text = "";
+ };
- //---------------------------------------------------
- //
- //---------------------------------------------------
- $scope.clearSearch = function () {
+ //---------------------------------------------------
+ // Called when user toggles search
+ //---------------------------------------------------
+ $scope.searchClicked = function () {
+ $scope.showSearch = !$scope.showSearch;
+ // this helps greatly in repeat scroll gets
+ if ($scope.showSearch == false)
$scope.search.text = "";
- };
- //---------------------------------------------------
- // Called when user toggles search
- //---------------------------------------------------
- $scope.searchClicked = function () {
- $scope.showSearch = !$scope.showSearch;
- // this helps greatly in repeat scroll gets
- if ($scope.showSearch == false)
- $scope.search.text = "";
-
- //console.log("**** Setting search view to " + $scope.showSearch + " ****");
- if (enableLoadMore == false && $scope.showSearch == false) {
- moreEvents = true;
- enableLoadMore = true;
- //console.log("REMOVING ARTIFICAL LOAD MORE BLOCK");
- }
- };
+ //console.log("**** Setting search view to " + $scope.showSearch + " ****");
+ if (enableLoadMore == false && $scope.showSearch == false) {
+ moreEvents = true;
+ enableLoadMore = true;
+ //console.log("REMOVING ARTIFICAL LOAD MORE BLOCK");
+ }
+ };
-
- //--------------------------------------------------------
- // utility function
- //--------------------------------------------------------
-
- function computeRelativePath(event) {
- var relativePath = "";
- var loginData = ZMDataModel.getLogin();
- var str = event.Event.StartTime;
- var yy = moment(str).format('YY');
- var mm = moment(str).format('MM');
- var dd = moment(str).format('DD');
- var hh = moment(str).format('HH');
- var min = moment(str).format('mm');
- var sec = moment(str).format('ss');
- relativePath = event.Event.MonitorId + "/" +
- yy + "/" +
- mm + "/" +
- dd + "/" +
- hh + "/" +
- min + "/" +
- sec + "/";
- return relativePath;
- }
-
- //--------------------------------------------------------
- // utility function
- //--------------------------------------------------------
-
- function computeBasePath(event) {
- var basePath = "";
- var loginData = ZMDataModel.getLogin();
- var str = event.Event.StartTime;
- var yy = moment(str).format('YY');
- var mm = moment(str).format('MM');
- var dd = moment(str).format('DD');
- var hh = moment(str).format('HH');
- var min = moment(str).format('mm');
- var sec = moment(str).format('ss');
-
- basePath = event.Event.baseURL + "/events/" +
- event.Event.MonitorId + "/" +
- yy + "/" +
- mm + "/" +
- dd + "/" +
- hh + "/" +
- min + "/" +
- sec + "/";
- return basePath;
- }
-
- $scope.modalGraph = function()
- {
- $ionicModal.fromTemplateUrl('templates/events-modalgraph.html', {
+ //--------------------------------------------------------
+ // utility function
+ //--------------------------------------------------------
+
+ function computeRelativePath(event) {
+ var relativePath = "";
+ var loginData = ZMDataModel.getLogin();
+ var str = event.Event.StartTime;
+ var yy = moment(str).format('YY');
+ var mm = moment(str).format('MM');
+ var dd = moment(str).format('DD');
+ var hh = moment(str).format('HH');
+ var min = moment(str).format('mm');
+ var sec = moment(str).format('ss');
+ relativePath = event.Event.MonitorId + "/" +
+ yy + "/" +
+ mm + "/" +
+ dd + "/" +
+ hh + "/" +
+ min + "/" +
+ sec + "/";
+ return relativePath;
+
+ }
+
+ //--------------------------------------------------------
+ // utility function
+ //--------------------------------------------------------
+
+ function computeBasePath(event) {
+ var basePath = "";
+ var loginData = ZMDataModel.getLogin();
+ var str = event.Event.StartTime;
+ var yy = moment(str).format('YY');
+ var mm = moment(str).format('MM');
+ var dd = moment(str).format('DD');
+ var hh = moment(str).format('HH');
+ var min = moment(str).format('mm');
+ var sec = moment(str).format('ss');
+
+ basePath = event.Event.baseURL + "/events/" +
+ event.Event.MonitorId + "/" +
+ yy + "/" +
+ mm + "/" +
+ dd + "/" +
+ hh + "/" +
+ min + "/" +
+ sec + "/";
+ return basePath;
+ }
+
+ $scope.modalGraph = function () {
+ $ionicModal.fromTemplateUrl('templates/events-modalgraph.html', {
scope: $scope, // give ModalCtrl access to this scope
animation: 'slide-in-up',
- id:'modalgraph',
-
+ id: 'modalgraph',
+
})
.then(function (modal) {
$scope.modal = modal;
-
-
+
+
$scope.modal.show();
});
- };
+ };
- $scope.analyzeEvent = function(ev)
- {
- $scope.event = ev;
- $ionicModal.fromTemplateUrl('templates/timeline-modal.html', {
+ $scope.analyzeEvent = function (ev) {
+ $scope.event = ev;
+ $ionicModal.fromTemplateUrl('templates/timeline-modal.html', {
scope: $scope, // give ModalCtrl access to this scope
animation: 'slide-in-up',
- id:'analyze',
+ id: 'analyze',
})
.then(function (modal) {
$scope.modal = modal;
-
-
+
+
$scope.modal.show();
});
- };
-
- $scope.$on('modal.removed', function (e,m) {
-
+ };
+
+ $scope.$on('modal.removed', function (e, m) {
+
if (m.id != 'footage')
return;
- ZMDataModel.zmDebug ("Rebinding watchers of eventCtrl");
- setupWatchers();
-
- //console.log ("************** FOOTAGE CLOSED");
-
- });
-
- //--------------------------------------------------------
- //This is called when we first tap on an event to see
- // the feed. It's important to instantiate ionicModal here
- // as otherwise you'd instantiate it when the view loads
- // and our "Please wait loading" technique I explained
- //earlier won't work
- //--------------------------------------------------------
-
- $scope.openModal = function (event) {
-
- ZMDataModel.zmDebug ("unbinding eventCtrl watchers as modal has its own");
- ionRangeWatcher();
- mycarouselWatcher();
- //ZMDataModel.zmDebug("EventCtrl: Open Modal with Base path " + relativepath);
-
- $scope.event = event;
-
- ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
-
- $scope.currentEvent = event;
- $scope.followSameMonitor = ($stateParams.id == "0")?"0":"1";
-
-
-
- $ionicModal.fromTemplateUrl('templates/events-modal.html', {
- scope: $scope,
- animation: 'slide-in-up',
- id:'footage',
- })
- .then(function (modal) {
- $scope.modal = modal;
-
- $ionicLoading.show({
- template: $translate.instant('kPleaseWait')+"...",
- noBackdrop: true,
- duration: 10000
- });
+ ZMDataModel.zmDebug("Rebinding watchers of eventCtrl");
+ setupWatchers();
- $scope.modal.show();
+ //console.log ("************** FOOTAGE CLOSED");
- var ld = ZMDataModel.getLogin();
+ });
-
+ //--------------------------------------------------------
+ //This is called when we first tap on an event to see
+ // the feed. It's important to instantiate ionicModal here
+ // as otherwise you'd instantiate it when the view loads
+ // and our "Please wait loading" technique I explained
+ //earlier won't work
+ //--------------------------------------------------------
- });
+ $scope.openModal = function (event) {
- };
+ ZMDataModel.zmDebug("unbinding eventCtrl watchers as modal has its own");
+ ionRangeWatcher();
+ mycarouselWatcher();
+ //ZMDataModel.zmDebug("EventCtrl: Open Modal with Base path " + relativepath);
- //--------------------------------------------------------
- //We need to destroy because we are instantiating
- // it on open
- //--------------------------------------------------------
- $scope.closeModal = function () {
- ZMDataModel.zmDebug(">>>EventCtrl:Close & Destroy Modal");
- ZMDataModel.setAwake(false);
- if ($scope.modal !== undefined) {
- $scope.modal.remove();
- }
+ $scope.event = event;
- };
+ ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
- //--------------------------------------------------------
- //Cleanup the modal when we're done with it
- // I Don't think it ever comes here
- //--------------------------------------------------------
- $scope.$on('$destroy', function () {
- //console.log("Destroy Modal");
- if ($scope.modal !== undefined) {
- $scope.modal.remove();
- }
- if ($scope.popover !== undefined)
- $scope.popover.remove();
- });
+ $scope.currentEvent = event;
+ $scope.followSameMonitor = ($stateParams.id == "0") ? "0" : "1";
+
+
+
+ $ionicModal.fromTemplateUrl('templates/events-modal.html', {
+ scope: $scope,
+ animation: 'slide-in-up',
+ id: 'footage',
+ })
+ .then(function (modal) {
+ $scope.modal = modal;
+
+ $ionicLoading.show({
+ template: $translate.instant('kPleaseWait') + "...",
+ noBackdrop: true,
+ duration: 10000
+ });
+
+ $scope.modal.show();
+
+ var ld = ZMDataModel.getLogin();
- //--------------------------------------------------------
- // used by infinite scrolling to see if we can get more
- //--------------------------------------------------------
- $scope.moreDataCanBeLoaded = function () {
- return moreEvents;
- };
- //--------------------------------------------------------
- // stop searching for more data
- //--------------------------------------------------------
- $scope.cancelSearch = function () {
- $ionicLoading.hide(); //Or whatever action you want to preform
- enableLoadMore = false;
- //console.log("**** CANCELLED ****");
- $ionicLoading.show({
- template: $translate.instant('kSearchCancelled'),
- animation: 'fade-in',
- showBackdrop: true,
- duration: 2000,
- maxWidth: 200,
- showDelay: 0
});
+ };
- };
+ //--------------------------------------------------------
+ //We need to destroy because we are instantiating
+ // it on open
+ //--------------------------------------------------------
+ $scope.closeModal = function () {
+ ZMDataModel.zmDebug(">>>EventCtrl:Close & Destroy Modal");
+ ZMDataModel.setAwake(false);
+ if ($scope.modal !== undefined) {
+ $scope.modal.remove();
+ }
- //--------------------------------------------------------
- // loads next page of events
- //--------------------------------------------------------
+ };
+ //--------------------------------------------------------
+ //Cleanup the modal when we're done with it
+ // I Don't think it ever comes here
+ //--------------------------------------------------------
+ $scope.$on('$destroy', function () {
+ //console.log("Destroy Modal");
+ if ($scope.modal !== undefined) {
+ $scope.modal.remove();
+ }
+ if ($scope.popover !== undefined)
+ $scope.popover.remove();
+ });
- function loadMore() {
- // the events API does not return an error for anything
- // except greater page limits than reported
+ //--------------------------------------------------------
+ // used by infinite scrolling to see if we can get more
+ //--------------------------------------------------------
- // console.log("***** LOADING MORE INFINITE SCROLL ****");
- eventsPage--;
- if ((eventsPage <= 0) && (pageLoaded)) {
- moreEvents = false;
- //console.log("*** At Page " + eventsPage + ", not proceeding");
- return;
- }
+ $scope.moreDataCanBeLoaded = function () {
+ return moreEvents;
+ };
- if (!enableLoadMore) {
- moreEvents = false; // Don't ion-scroll till enableLoadMore is true;
- $scope.$broadcast('scroll.infiniteScrollComplete');
+ //--------------------------------------------------------
+ // stop searching for more data
+ //--------------------------------------------------------
+ $scope.cancelSearch = function () {
+ $ionicLoading.hide(); //Or whatever action you want to preform
+ enableLoadMore = false;
+ //console.log("**** CANCELLED ****");
+ $ionicLoading.show({
+ template: $translate.instant('kSearchCancelled'),
+ animation: 'fade-in',
+ showBackdrop: true,
+ duration: 2000,
+ maxWidth: 200,
+ showDelay: 0
+ });
- // console.log("**** LOADMORE ARTIFICALLY DISABLED");
- return;
- }
- var loadingStr = "";
- if ($scope.search.text != "") {
- var toastStr = $translate.instant('kToastSearchingPage') + eventsPage;
- $ionicLoading.show({
- maxwidth: 100,
- scope: $scope,
- template: '<button class="button button-clear icon-left ion-close-circled button-text-wrap" ng-click="cancelSearch()" >' + toastStr + '</button>'
- });
+ };
- loadingStr = "none";
- }
+ //--------------------------------------------------------
+ // loads next page of events
+ //--------------------------------------------------------
- ZMDataModel.getEvents($scope.id, eventsPage, loadingStr, $rootScope.fromString, $rootScope.toString)
- .then(function (data) {
- var loginData = ZMDataModel.getLogin();
- // console.log("Got new page of events with Page=" + eventsPage);
- var myevents = data;
- for (var i = 0; i < myevents.length; i++) {
+ function loadMore() {
+ // the events API does not return an error for anything
+ // except greater page limits than reported
- var idfound = true;
- var ld = ZMDataModel.getLogin();
+ // console.log("***** LOADING MORE INFINITE SCROLL ****");
+ eventsPage--;
+ if ((eventsPage <= 0) && (pageLoaded)) {
+ moreEvents = false;
+ //console.log("*** At Page " + eventsPage + ", not proceeding");
+ return;
+ }
- if (ld.persistMontageOrder) {
- idfound = false;
- for (var ii = 0; ii < $scope.monitors.length; ii++) {
- if ($scope.monitors[ii].Monitor.Id == myevents[i].Event.MonitorId) {
+ if (!enableLoadMore) {
+ moreEvents = false; // Don't ion-scroll till enableLoadMore is true;
+ $scope.$broadcast('scroll.infiniteScrollComplete');
- //console.log ( $scope.monitors[ii].Monitor.Id + " MATCHES " + myevents[i].Event.MonitorId);
- idfound = true;
-
- break;
- }
+ // console.log("**** LOADMORE ARTIFICALLY DISABLED");
+ return;
+ }
+
+ var loadingStr = "";
+ if ($scope.search.text != "") {
+ var toastStr = $translate.instant('kToastSearchingPage') + eventsPage;
+ $ionicLoading.show({
+ maxwidth: 100,
+ scope: $scope,
+ template: '<button class="button button-clear icon-left ion-close-circled button-text-wrap" ng-click="cancelSearch()" >' + toastStr + '</button>'
+ });
+
+ loadingStr = "none";
+ }
+
+ ZMDataModel.getEvents($scope.id, eventsPage, loadingStr, $rootScope.fromString, $rootScope.toString)
+ .then(function (data) {
+ var loginData = ZMDataModel.getLogin();
+ // console.log("Got new page of events with Page=" + eventsPage);
+ var myevents = data;
+
+ for (var i = 0; i < myevents.length; i++) {
+
+ var idfound = true;
+ var ld = ZMDataModel.getLogin();
+
+ if (ld.persistMontageOrder) {
+ idfound = false;
+ for (var ii = 0; ii < $scope.monitors.length; ii++) {
+ if ($scope.monitors[ii].Monitor.Id == myevents[i].Event.MonitorId) {
+
+ //console.log ( $scope.monitors[ii].Monitor.Id + " MATCHES " + myevents[i].Event.MonitorId);
+ idfound = true;
+
+ break;
}
}
+ }
- myevents[i].Event.MonitorName = ZMDataModel.getMonitorName(myevents[i].Event.MonitorId);
- // now construct base path
+ myevents[i].Event.MonitorName = ZMDataModel.getMonitorName(myevents[i].Event.MonitorId);
+ // now construct base path
- myevents[i].Event.streamingURL = ZMDataModel.getStreamingURL (myevents[i].Event.MonitorId);
- myevents[i].Event.baseURL = ZMDataModel.getBaseURL (myevents[i].Event.MonitorId);
- myevents[i].Event.imageMode = ZMDataModel.getImageMode (myevents[i].Event.MonitorId);
- // console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);
+ myevents[i].Event.streamingURL = ZMDataModel.getStreamingURL(myevents[i].Event.MonitorId);
+ myevents[i].Event.baseURL = ZMDataModel.getBaseURL(myevents[i].Event.MonitorId);
+ myevents[i].Event.imageMode = ZMDataModel.getImageMode(myevents[i].Event.MonitorId);
+ // console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);
- // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);
-
- myevents[i].Event.ShowScrub = false;
- myevents[i].Event.BasePath = computeBasePath(myevents[i]);
- myevents[i].Event.relativePath = computeRelativePath(myevents[i]);
- myevents[i].Event.height = zm.eventsListDetailsHeight;
- if (idfound) $scope.events.push(myevents[i]);
- }
+ // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);
- //console.log("Got new page of events");
- moreEvents = true;
- $scope.$broadcast('scroll.infiniteScrollComplete');
- },
+ myevents[i].Event.ShowScrub = false;
+ myevents[i].Event.BasePath = computeBasePath(myevents[i]);
+ myevents[i].Event.relativePath = computeRelativePath(myevents[i]);
+ myevents[i].Event.height = zm.eventsListDetailsHeight;
+ if (idfound) $scope.events.push(myevents[i]);
+ }
- function (error) {
- // console.log("*** No More Events to Load, Stop Infinite Scroll ****");
- moreEvents = false;
- $scope.$broadcast('scroll.infiniteScrollComplete');
+ //console.log("Got new page of events");
+ moreEvents = true;
+ $scope.$broadcast('scroll.infiniteScrollComplete');
+ },
- });
- }
+ function (error) {
+ // console.log("*** No More Events to Load, Stop Infinite Scroll ****");
+ moreEvents = false;
+ $scope.$broadcast('scroll.infiniteScrollComplete');
- $scope.loadMore = function () {
- loadMore();
+ });
+ }
- };
-
- $scope.toggleMinAlarmFrameCount = function () {
-
-
- var ld = ZMDataModel.getLogin();
-
- console.log ("Toggling " + ld.enableAlarmCount);
- ld.enableAlarmCount = !ld.enableAlarmCount;
- ZMDataModel.setLogin(ld);
- $scope.loginData = ZMDataModel.getLogin();
- doRefresh();
- };
+ $scope.loadMore = function () {
+ loadMore();
+ };
- //--------------------------------------
- // formats events dates in a nice way
- //---------------------------------------
+ $scope.toggleMinAlarmFrameCount = function () {
- $scope.prettifyDate = function (str) {
- return moment(str).format('MMM Do');
- };
- function prettifyDate(str) {
- return moment(str).format('MMM Do');
- }
+ var ld = ZMDataModel.getLogin();
- $scope.prettifyTime = function (str) {
- return moment(str).format(ZMDataModel.getTimeFormat());
- };
-
- $scope.prettifyTimeSec = function (str) {
- return moment(str).format(ZMDataModel.getTimeFormatSec());
- };
+ console.log("Toggling " + ld.enableAlarmCount);
+ ld.enableAlarmCount = !ld.enableAlarmCount;
+ ZMDataModel.setLogin(ld);
+ $scope.loginData = ZMDataModel.getLogin();
+ doRefresh();
+ };
- $scope.prettify = function (str) {
- return moment(str).format(ZMDataModel.getTimeFormat()+', MMMM Do YYYY');
- };
- //--------------------------------------------------------
- // For consistency we are keeping the refresher list
- // but its a dummy. The reason I deviated is because
- // refresh with infinite scroll is a UX problem - its
- // easy to pull to refresh when scrolling up with
- // a large list
- //--------------------------------------------------------
-
- $scope.dummyDoRefresh = function () {
- $scope.$broadcast('scroll.refreshComplete');
- };
+ //--------------------------------------
+ // formats events dates in a nice way
+ //---------------------------------------
+ $scope.prettifyDate = function (str) {
+ return moment(str).format('MMM Do');
+ };
- $scope.doRefresh = function () {
- doRefresh();
- }; //dorefresh
+ function prettifyDate(str) {
+ return moment(str).format('MMM Do');
+ }
- function doRefresh() {
- // console.log("***Pull to Refresh");
+ $scope.prettifyTime = function (str) {
+ return moment(str).format(ZMDataModel.getTimeFormat());
+ };
- ZMDataModel.zmDebug("Reloading monitors");
- var refresh = ZMDataModel.getMonitors(1);
- refresh.then(function (data) {
+ $scope.prettifyTimeSec = function (str) {
+ return moment(str).format(ZMDataModel.getTimeFormatSec());
+ };
- var ld = ZMDataModel.getLogin();
- if (ld.persistMontageOrder) {
- var tempMon = data;
- $scope.monitors = ZMDataModel.applyMontageMonitorPrefs(tempMon, 2)[0];
- } else {
- $scope.monitors = data;
- }
+ $scope.prettify = function (str) {
+ return moment(str).format(ZMDataModel.getTimeFormat() + ', MMMM Do YYYY');
+ };
+ //--------------------------------------------------------
+ // For consistency we are keeping the refresher list
+ // but its a dummy. The reason I deviated is because
+ // refresh with infinite scroll is a UX problem - its
+ // easy to pull to refresh when scrolling up with
+ // a large list
+ //--------------------------------------------------------
+
+ $scope.dummyDoRefresh = function () {
+ $scope.$broadcast('scroll.refreshComplete');
+ };
- getInitialEvents();
- moreEvents = true;
-
- });
- }
+
+ $scope.doRefresh = function () {
+ doRefresh();
+ }; //dorefresh
+
+ function doRefresh() {
+ // console.log("***Pull to Refresh");
+
+ ZMDataModel.zmDebug("Reloading monitors");
+ var refresh = ZMDataModel.getMonitors(1);
+ refresh.then(function (data) {
+
+ var ld = ZMDataModel.getLogin();
+ if (ld.persistMontageOrder) {
+ var tempMon = data;
+ $scope.monitors = ZMDataModel.applyMontageMonitorPrefs(tempMon, 2)[0];
+ } else {
+ $scope.monitors = data;
+ }
+
+
+ getInitialEvents();
+ moreEvents = true;
+
+ });
+ }
}]); \ No newline at end of file
diff --git a/www/js/EventDateTimeFilterCtrl.js b/www/js/EventDateTimeFilterCtrl.js
index 1d2535b7..6337ea6b 100644
--- a/www/js/EventDateTimeFilterCtrl.js
+++ b/www/js/EventDateTimeFilterCtrl.js
@@ -6,24 +6,28 @@
angular.module('zmApp.controllers')
.controller('zmApp.EventDateTimeFilterCtrl', ['$scope', '$ionicSlideBoxDelegate', '$ionicSideMenuDelegate', '$rootScope', '$ionicHistory', 'ZMDataModel', '$state', function ($scope, $ionicScrollDelegate, $ionicSideMenuDelegate, $rootScope, $ionicHistory, ZMDataModel, $state) {
-
- //----------------------------------------------------------------
- // Alarm notification handling
- //----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
- }
- };
-
- //--------------------------------------------------------------------------
- // Clears filters
- //--------------------------------------------------------------------------
+
+ //----------------------------------------------------------------
+ // Alarm notification handling
+ //----------------------------------------------------------------
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
+ }
+ };
+
+ //--------------------------------------------------------------------------
+ // Clears filters
+ //--------------------------------------------------------------------------
$scope.removeFilters = function () {
$rootScope.isEventFilterOn = false;
@@ -48,10 +52,10 @@ angular.module('zmApp.controllers')
//$ionicHistory.goBack();
};
- //--------------------------------------------------------------------------
- // Saves filters in root variables so EventFilter can access it. I know:
- // don't root.
- //--------------------------------------------------------------------------
+ //--------------------------------------------------------------------------
+ // Saves filters in root variables so EventFilter can access it. I know:
+ // don't root.
+ //--------------------------------------------------------------------------
$scope.saveFilters = function () {
if (!$rootScope.fromDate) {
//console.log("RESET fromDate");
@@ -60,13 +64,13 @@ angular.module('zmApp.controllers')
}
if (!$rootScope.toDate) {
- // console.log("RESET toDate");
+ // console.log("RESET toDate");
$rootScope.toDate = new Date();
ZMDataModel.zmDebug("DateTimeFilter: resetting to date");
}
if (!$rootScope.fromTime) {
- // console.log("RESET fromTime");
+ // console.log("RESET fromTime");
$rootScope.fromTime = new Date(99, 5, 24, 0, 0, 0, 0); //moment().format("hh:mm:ss");
ZMDataModel.zmDebug("DateTimeFilter: resetting from time");
}
diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js
index 45fb501c..4bd5d4e4 100644
--- a/www/js/EventModalCtrl.js
+++ b/www/js/EventModalCtrl.js
@@ -152,7 +152,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
//console.log ("Event timer");
$scope.checkEventOn = true;
if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '') {
- console.log("playing video, not using zms, skipping event commands");
+ //console.log("playing video, not using zms, skipping event commands");
} else {
processEvent('99', $scope.connKey);
}
@@ -163,7 +163,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
var d = $q.defer();
if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '') {
- console.log("playing video, not using zms, skipping event commands");
+ // console.log("playing video, not using zms, skipping event commands");
d.resolve(true);
return (d.promise);
}
@@ -171,7 +171,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
var loginData = ZMDataModel.getLogin();
- console.log("Sending CGI command to " + loginData.url);
+ //console.log("Sending CGI command to " + loginData.url);
var rqtoken = rq ? rq : "stream";
var myauthtoken = $rootScope.authSession.replace("&auth=", "");
//&auth=
@@ -193,7 +193,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
foo = foo + extras;
//console.log("EXTRAS****SUB RETURNING " + foo);
}
- console.log("CGI subcommand=" + foo);
+ //console.log("CGI subcommand=" + foo);
return foo;
},
@@ -228,12 +228,12 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
function processEvent(cmd, connkey) {
if ($scope.blockSlider) {
- console.log("Not doing ZMS Command as slider is depressed...");
+ //console.log("Not doing ZMS Command as slider is depressed...");
return;
}
var loginData = ZMDataModel.getLogin();
- console.log("sending process Event command to " + loginData.url);
+ //console.log("sending process Event command to " + loginData.url);
var myauthtoken = $rootScope.authSession.replace("&auth=", "");
//&auth=
var req = $http({
@@ -250,7 +250,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
str.push(encodeURIComponent(p) + "=" +
encodeURIComponent(obj[p]));
var foo = str.join("&");
- console.log("****processEvent subcommands RETURNING " + foo);
+ //console.log("****processEvent subcommands RETURNING " + foo);
return foo;
},
@@ -355,7 +355,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.youChangedSlider = function () {
- console.log("YOU changed " + $scope.sliderProgress.progress);
+ //console.log("YOU changed " + $scope.sliderProgress.progress);
$scope.currentProgress.progress = $scope.sliderProgress.progress;
$timeout(function () {
sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
@@ -719,7 +719,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
currentEvent = $scope.currentEvent;
- console.log("Current Event " + JSON.stringify(currentEvent));
+ //console.log("Current Event " + JSON.stringify(currentEvent));
$scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
ZMDataModel.zmDebug("Generated Connkey:" + $scope.connKey);
@@ -1130,7 +1130,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
duration: zm.httpTimeout
});
- console.log("Send command connkey: " + connkey);
+ //console.log("Send command connkey: " + connkey);
sendCommand(cmd, connkey)
.then(
function (success) {
@@ -1321,9 +1321,9 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.defaultVideo = event.Event.DefaultVideo;
- console.log("loginData is " + JSON.stringify($scope.loginData));
- console.log("Event ID is " + $scope.eventId);
- console.log("video is " + $scope.defaultVideo);
+ //console.log("loginData is " + JSON.stringify($scope.loginData));
+ //console.log("Event ID is " + $scope.eventId);
+ //console.log("video is " + $scope.defaultVideo);
neighborEvents(event.Event.Id)
diff --git a/www/js/EventServer.js b/www/js/EventServer.js
index 391c4485..e4c4e7cb 100644
--- a/www/js/EventServer.js
+++ b/www/js/EventServer.js
@@ -20,7 +20,7 @@ angular.module('zmApp.controllers')
var localNotificationId = 0;
-
+
//--------------------------------------------------------------------------
// called when the websocket is opened
@@ -68,8 +68,8 @@ angular.module('zmApp.controllers')
var d = $q.defer();
var loginData = ZMDataModel.getLogin();
-
- console.log ("INIT GOT " + JSON.stringify(loginData));
+
+ //console.log ("INIT GOT " + JSON.stringify(loginData));
if (loginData.isUseEventServer == false || !loginData.eventServer) {
ZMDataModel.zmLog("No Event Server present. Not initializing");
@@ -78,7 +78,7 @@ angular.module('zmApp.controllers')
}
//if (!$rootScope.apnsToken)
- pushInit();
+ pushInit();
@@ -112,7 +112,7 @@ angular.module('zmApp.controllers')
ws.$on('$message', function (str) {
ZMDataModel.zmLog("Real-time event: " + JSON.stringify(str));
-
+
// Error messages
if (str.status != 'Success') {
@@ -130,9 +130,9 @@ angular.module('zmApp.controllers')
if (str.version == undefined)
str.version = "0.1";
if (ZMDataModel.versionCompare(str.version, zm.minEventServerVersion) == -1) {
- $rootScope.zmPopup= $ionicPopup.alert({
+ $rootScope.zmPopup = $ionicPopup.alert({
title: $translate.instant('kEventServerVersionTitle'),
- template: $translate.instant('kEventServerVersionBody1') + " " + str.version + ". "+ $translate.instant('kEventServerVersionBody2') +
+ template: $translate.instant('kEventServerVersionBody1') + " " + str.version + ". " + $translate.instant('kEventServerVersionBody2') +
zm.minEventServerVersion
});
}
@@ -144,11 +144,10 @@ angular.module('zmApp.controllers')
if (str.status == 'Success' && str.event == 'alarm') // new events
{
-
+
var localNotText;
// ZMN specific hack for Event Server
- if (str.supplementary != 'true')
- {
+ if (str.supplementary != 'true') {
new Audio('sounds/blop.mp3').play();
localNotText = "Latest Alarms: ";
$rootScope.isAlarm = 1;
@@ -162,13 +161,11 @@ angular.module('zmApp.controllers')
$rootScope.alarmCount = (parseInt($rootScope.alarmCount) + 1).toString();
}
- }
- else
- {
+ } else {
ZMDataModel.zmDebug("received supplementary event information over websockets");
}
var eventsToDisplay = [];
- var listOfMonitors=[];
+ var listOfMonitors = [];
for (var iter = 0; iter < str.events.length; iter++) {
// lets stack the display so they don't overwrite
eventsToDisplay.push(str.events[iter].Name + ": latest new alarm (" + str.events[iter].EventId + ")");
@@ -181,13 +178,14 @@ angular.module('zmApp.controllers')
// if we are in background, do a local notification, else do an in app display
if (!ZMDataModel.isBackground()) {
-
+
//emit alarm details - this is when received over websockets
- $rootScope.$emit('alarm',{message:listOfMonitors});
-
- if (str.supplementary != 'true')
- {
-
+ $rootScope.$emit('alarm', {
+ message: listOfMonitors
+ });
+
+ if (str.supplementary != 'true') {
+
ZMDataModel.zmDebug("App is in foreground, displaying banner");
if (eventsToDisplay.length > 0) {
@@ -195,15 +193,15 @@ angular.module('zmApp.controllers')
//console.log("Single Display: " + eventsToDisplay[0]);
ZMDataModel.displayBanner('alarm', [eventsToDisplay[0]], 5000, 5000);
} else {
- ZMDataModel.displayBanner('alarm', eventsToDisplay,
- 5000, 5000 * eventsToDisplay.length);
+ ZMDataModel.displayBanner('alarm', eventsToDisplay,
+ 5000, 5000 * eventsToDisplay.length);
}
}
}
}
-
+
} //end of success handler
@@ -216,20 +214,19 @@ angular.module('zmApp.controllers')
return (d.promise);
}
-
- function disconnect()
- {
+
+ function disconnect() {
ZMDataModel.zmLog("Disconnecting and deleting Event Server socket...");
-
- if (typeof ws === 'undefined')
- return;
-
+
+ if (typeof ws === 'undefined')
+ return;
+
ws.$close();
ws.$un('open');
ws.$un('close');
ws.$un('message');
ws = undefined;
-
+
}
//--------------------------------------------------------------------------
@@ -242,7 +239,7 @@ angular.module('zmApp.controllers')
//--------------------------------------------------------------------------
function sendMessage(type, obj, isForce) {
var ld = ZMDataModel.getLogin();
- if (ld.isUseEventServer == false && isForce!=1) {
+ if (ld.isUseEventServer == false && isForce != 1) {
ZMDataModel.zmDebug("Not sending WSS message as event server is off");
return;
}
@@ -264,7 +261,7 @@ angular.module('zmApp.controllers')
ws.$on('$open', openHandshake, function () {
//console.log(" sending " + type + " " +
- // JSON.stringify(obj));
+ // JSON.stringify(obj));
ws.$emit(type, obj);
ws.$un('$open');
@@ -331,14 +328,13 @@ angular.module('zmApp.controllers')
var push;
var mediasrc;
var media;
- var ld = ZMDataModel.getLogin();
+ var ld = ZMDataModel.getLogin();
var plat = $ionicPlatform.is('ios') ? 'ios' : 'android';
- if ($rootScope.platformOS == 'desktop')
- {
- ZMDataModel.zmLog ("Desktop instance, not setting up push. Websockets only, I hope");
+ if ($rootScope.platformOS == 'desktop') {
+ ZMDataModel.zmLog("Desktop instance, not setting up push. Websockets only, I hope");
return;
}
@@ -362,30 +358,30 @@ angular.module('zmApp.controllers')
} else {
mediasrc = "/android_asset/www/sounds/blop.mp3";
var android_media_file = "blop";
-
-
-
-
- push = PushNotification.init(
-
- {
- "android": {
- "senderID": zm.gcmSenderId,
- "icon": "ic_stat_notification",
- sound:ld.soundOnPush,
- vibrate: ld.vibrateOnPush
+
+
+
+
+ push = PushNotification.init(
+
+ {
+ "android": {
+ "senderID": zm.gcmSenderId,
+ "icon": "ic_stat_notification",
+ sound: ld.soundOnPush,
+ vibrate: ld.vibrateOnPush
//"sound": android_media_file
- }
}
+ }
+
+ );
- );
-
}
- // console.log("*********** MEDIA BLOG IS " + mediasrc);
+ // console.log("*********** MEDIA BLOG IS " + mediasrc);
media = $cordovaMedia.newMedia(mediasrc);
-
+
push.on('registration', function (data) {
ZMDataModel.zmDebug("Push Notification registration ID received: " + JSON.stringify(data));
$rootScope.apnsToken = data.registrationId;
@@ -393,7 +389,7 @@ angular.module('zmApp.controllers')
var plat = $ionicPlatform.is('ios') ? 'ios' : 'android';
var ld = ZMDataModel.getLogin();
var pushstate = "enabled";
- if (ld.disablePush ==true)
+ if (ld.disablePush == true)
pushstate = "disabled";
sendMessage('push', {
@@ -401,74 +397,73 @@ angular.module('zmApp.controllers')
platform: plat,
token: $rootScope.apnsToken,
state: pushstate
- },1);
+ }, 1);
});
push.on('notification', function (data) {
-
- ZMDataModel.zmDebug ("received push notification");
+
+ ZMDataModel.zmDebug("received push notification");
var ld = ZMDataModel.getLogin();
- if (ld.isUseEventServer ==false) {
+ if (ld.isUseEventServer == false) {
ZMDataModel.zmDebug("received push notification, but event server disabled. Not acting on it");
return;
}
-
+
if (data.additionalData.foreground == false) {
// This means push notification tap in background
-
- ZMDataModel.zmDebug ("*** PUSH NOTFN.>>>>"+JSON.stringify(data));
-
+
+ ZMDataModel.zmDebug("*** PUSH NOTFN.>>>>" + JSON.stringify(data));
+
// set tappedMid to monitor
//*** PUSH DATA>>>>{"sound":"blop","message":"Alarms: Basement (2854) ","additionalData":{"mid":"2","coldstart":false,"collapse_key":"do_not_collapse","foreground":false}}
-
+
ZMDataModel.zmDebug("Notification Tapped");
$rootScope.alarmCount = "0";
$rootScope.isAlarm = 0;
$rootScope.tappedNotification = 1;
var mid = data.additionalData.mid;
-
+
// if Multiple mids, take the first one
var mi = mid.indexOf(',');
- if (mi > 0)
- {
- mid = mid.slice(0,mi);
+ if (mi > 0) {
+ mid = mid.slice(0, mi);
}
mid = parseInt(mid);
-
+
$rootScope.tappedMid = mid;
- ZMDataModel.zmLog ("Push notification: Tapped Monitor taken as:"+$rootScope.tappedMid);
-
-
-
- if ($rootScope.platformOS == 'ios')
- {
-
-
- ZMDataModel.zmDebug ("iOS only: clearing background push");
- push.finish(function() {
+ ZMDataModel.zmLog("Push notification: Tapped Monitor taken as:" + $rootScope.tappedMid);
+
+
+
+ if ($rootScope.platformOS == 'ios') {
+
+
+ ZMDataModel.zmDebug("iOS only: clearing background push");
+ push.finish(function () {
ZMDataModel.zmDebug("processing of push data is finished");
});
}
-
+
} else {
-
+
// this flag honors the HW mute button. Go figure
// http://ilee.co.uk/phonegap-plays-sound-on-mute/
- if (ld.soundOnPush)
- {
- media.play({ playAudioWhenScreenIsLocked : false });
+ if (ld.soundOnPush) {
+ media.play({
+ playAudioWhenScreenIsLocked: false
+ });
}
-
+
var str = data.message;
// console.log ("***STRING: " + str + " " +str.status);
var eventsToDisplay = [];
-
+
ZMDataModel.displayBanner('alarm', [str], 0, 5000 * eventsToDisplay.length);
@@ -487,8 +482,8 @@ angular.module('zmApp.controllers')
});
push.on('error', function (e) {
- ZMDataModel.zmDebug ("Push error: " + JSON.stringify(e));
- // console.log("************* PUSH ERROR ******************");
+ ZMDataModel.zmDebug("Push error: " + JSON.stringify(e));
+ // console.log("************* PUSH ERROR ******************");
});
}
diff --git a/www/js/EventServerSettingsCtrl.js b/www/js/EventServerSettingsCtrl.js
index 215a6c4c..4ee0b4a3 100644
--- a/www/js/EventServerSettingsCtrl.js
+++ b/www/js/EventServerSettingsCtrl.js
@@ -33,17 +33,16 @@
}
};
-
+
// we need this to dynamically get title
// name as ion-view is set in stone and
// we don't get title till beforeEnter
// which is odd - I'd expect beforeEnter to load
// before View is loaded
- $scope.getTitle = function()
- {
+ $scope.getTitle = function () {
return $scope.loginData.serverName;
};
-
+
//----------------------------------------------------------------
// Save anyway when you exit
//----------------------------------------------------------------
@@ -53,40 +52,40 @@
});
-
-
+
+
$scope.$on('$ionicView.beforeEnter', function () {
-
- $scope.loginData = ZMDataModel.getLogin();
- console.log ("Event server - before Enter, loginData is " + JSON.stringify($scope.loginData));
- $scope.defScreen = $scope.loginData.onTapScreen;
- if ($scope.loginData.eventServer == "") {
- $scope.loginData.eventServer = "wss://" + extractDomain($scope.loginData.url) + ":9000";
- }
+ $scope.loginData = ZMDataModel.getLogin();
+ //console.log ("Event server - before Enter, loginData is " + JSON.stringify($scope.loginData));
+ $scope.defScreen = $scope.loginData.onTapScreen;
+ if ($scope.loginData.eventServer == "") {
+ $scope.loginData.eventServer = "wss://" + extractDomain($scope.loginData.url) + ":9000";
+ }
- res = $scope.loginData.eventServerMonitors.split(",");
- minterval = $scope.loginData.eventServerInterval.split(",");
+ res = $scope.loginData.eventServerMonitors.split(",");
+ minterval = $scope.loginData.eventServerInterval.split(",");
- for (var i = 0; i < $scope.monitors.length; i++) {
+ for (var i = 0; i < $scope.monitors.length; i++) {
- if (!isEnabled($scope.monitors[i].Monitor.Id)) {
- // if the filter list has IDs and this is not part of it, uncheck it
- $scope.monitors[i].Monitor.isChecked = false;
- //console.log("Marking false");
- $scope.monitors[i].Monitor.reportingInterval = 0;
- } else {
- // console.log("Marking true");
- $scope.monitors[i].Monitor.isChecked = true;
- $scope.monitors[i].Monitor.reportingInterval = getInterval($scope.monitors[i].Monitor.Id);
- }
- }
- });
+ if (!isEnabled($scope.monitors[i].Monitor.Id)) {
+ // if the filter list has IDs and this is not part of it, uncheck it
+ $scope.monitors[i].Monitor.isChecked = false;
+ //console.log("Marking false");
+ $scope.monitors[i].Monitor.reportingInterval = 0;
+ } else {
+ // console.log("Marking true");
+ $scope.monitors[i].Monitor.isChecked = true;
+ $scope.monitors[i].Monitor.reportingInterval = getInterval($scope.monitors[i].Monitor.Id);
+ }
+
+ }
+ });
//--------------------------------------------------
@@ -194,8 +193,8 @@
$scope.loginData.eventServerInterval = intervalstring;
- console.log ("SAVED: " + JSON.stringify($scope.loginData));
- ZMDataModel.setLogin($scope.loginData);
+ //console.log ("SAVED: " + JSON.stringify($scope.loginData));
+ ZMDataModel.setLogin($scope.loginData);
var pushstate = "enabled";
if ($scope.loginData.disablePush == true || $scope.loginData.isUseEventServer == false)
@@ -224,15 +223,15 @@
platform: plat,
token: $rootScope.apnsToken,
state: pushstate
- },1);
+ }, 1);
}
});
-
-
-
+
+
+
} else {
if ($rootScope.apnsToken != "")
// if its defined then this is post init work
@@ -250,10 +249,10 @@
}
// Give the above some time to transmit
-
- EventServer.disconnect();
-
-
+
+ EventServer.disconnect();
+
+
}
@@ -322,10 +321,10 @@
//------------------------------------------------------------------------
$scope.monitors = [];
$scope.monitors = message;
- var res ,minterval;
+ var res, minterval;
+
-
diff --git a/www/js/EventsGraphsCtrl.js b/www/js/EventsGraphsCtrl.js
index 758e7ec8..cda51415 100644
--- a/www/js/EventsGraphsCtrl.js
+++ b/www/js/EventsGraphsCtrl.js
@@ -15,21 +15,25 @@ angular.module('zmApp.controllers').controller('zmApp.EventsGraphsCtrl', ['$ioni
};
$scope.$on('$ionicView.loaded', function () {
- // console.log("**VIEW ** Graph Ctrl Loaded");
+ // console.log("**VIEW ** Graph Ctrl Loaded");
});
-
-
+
+
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
@@ -41,16 +45,16 @@ angular.module('zmApp.controllers').controller('zmApp.EventsGraphsCtrl', ['$ioni
// state, that effectively overwrites current view power management needs
//------------------------------------------------------------------------
$scope.$on('$ionicView.enter', function () {
- // console.log("**VIEW ** EventsGraphs Ctrl Entered");
+ // console.log("**VIEW ** EventsGraphs Ctrl Entered");
ZMDataModel.setAwake(false);
});
$scope.$on('$ionicView.leave', function () {
- // console.log("**VIEW ** Graph Ctrl Left");
+ // console.log("**VIEW ** Graph Ctrl Left");
});
$scope.$on('$ionicView.unloaded', function () {
- // console.log("**VIEW ** Graph Ctrl Unloaded");
+ // console.log("**VIEW ** Graph Ctrl Unloaded");
});
@@ -141,8 +145,8 @@ angular.module('zmApp.controllers').controller('zmApp.EventsGraphsCtrl', ['$ioni
if (hrs) {
// Apply a time based filter if I am not watching all events
var cur = moment();
- endDate = cur.format("YYYY-MM-DD "+ZMDataModel.getTimeFormat());
- startDate = cur.subtract(hrs, 'hours').format("YYYY-MM-DD "+ZMDataModel.getTimeFormat());
+ endDate = cur.format("YYYY-MM-DD " + ZMDataModel.getTimeFormat());
+ startDate = cur.subtract(hrs, 'hours').format("YYYY-MM-DD " + ZMDataModel.getTimeFormat());
//console.log("Start and End " + startDate + "==" + endDate);
ZMDataModel.zmLog("Generating graph for " + startDate + " to " + endDate);
diff --git a/www/js/EventsModalGraphCtrl.js b/www/js/EventsModalGraphCtrl.js
index 43fef865..1a5f818c 100644
--- a/www/js/EventsModalGraphCtrl.js
+++ b/www/js/EventsModalGraphCtrl.js
@@ -8,14 +8,14 @@
angular.module('zmApp.controllers').controller('EventsModalGraphCtrl', ['$scope', '$rootScope', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$q', '$sce', 'carouselUtils', '$ionicPopup', '$translate', function ($scope, $rootScope, zm, ZMDataModel, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $q, $sce, carouselUtils, $ionicPopup, $translate) {
-
-
+
+
var Graph2d;
var tcGraph;
var items;
var groups;
- var eventImageDigits=5;
+ var eventImageDigits = 5;
var cv;
var ctx;
//var options;
@@ -24,112 +24,114 @@ angular.module('zmApp.controllers').controller('EventsModalGraphCtrl', ['$scope'
var current_data;
var current_options;
var btype;
- var data,options;
-
-
-
-
-
-
- $scope.$on('modal.shown', function (e,m) {
-
- if (m.id != 'modalgraph')
+ var data, options;
+
+
+
+
+
+
+ $scope.$on('modal.shown', function (e, m) {
+
+ if (m.id != 'modalgraph')
return;
-
-
- console.log ("INSIDE MODAL GRAPH>>>>>>>>>>>>>>>>>");
- data = {
- labels: ["January", "February", "March", "April", "May", "June", "July"],
- datasets: [
- {
- label: "My First dataset",
- fillColor: "rgba(220,220,220,0.5)",
- strokeColor: "rgba(220,220,220,0.8)",
- highlightFill: "rgba(220,220,220,0.75)",
- highlightStroke: "rgba(220,220,220,1)",
- data: [65, 59, 80, 81, 56, 55, 40]
+
+
+ //console.log ("INSIDE MODAL GRAPH>>>>>>>>>>>>>>>>>");
+ data = {
+ labels: ["January", "February", "March", "April", "May", "June", "July"],
+ datasets: [
+ {
+ label: "My First dataset",
+ fillColor: "rgba(220,220,220,0.5)",
+ strokeColor: "rgba(220,220,220,0.8)",
+ highlightFill: "rgba(220,220,220,0.75)",
+ highlightStroke: "rgba(220,220,220,1)",
+ data: [65, 59, 80, 81, 56, 55, 40]
},
- {
- label: "My Second dataset",
- fillColor: "rgba(151,187,205,0.5)",
- strokeColor: "rgba(151,187,205,0.8)",
- highlightFill: "rgba(151,187,205,0.75)",
- highlightStroke: "rgba(151,187,205,1)",
- data: [28, 48, 40, 19, 86, 27, 90]
+ {
+ label: "My Second dataset",
+ fillColor: "rgba(151,187,205,0.5)",
+ strokeColor: "rgba(151,187,205,0.8)",
+ highlightFill: "rgba(151,187,205,0.75)",
+ highlightStroke: "rgba(151,187,205,1)",
+ data: [28, 48, 40, 19, 86, 27, 90]
}
]
-};
-
- options = {
-
- scales: {
- yAxes:[{
- ticks: {
- // beginAtZero:true,
- min:-1,
- },
+ };
+
+ options = {
+
+ scales: {
+ yAxes: [{
+ ticks: {
+ // beginAtZero:true,
+ min: -1,
+ },
}],
- xAxes:[{
- display:false
+ xAxes: [{
+ display: false
}]
- },
+ },
- responsive: true,
- scaleBeginAtZero : true,
- scaleShowGridLines : true,
- scaleGridLineColor : "rgba(0,0,0,.05)",
- scaleGridLineWidth : 1,
-
-
- hover:
- {
- mode:'single',
- onHover:function(obj)
- {
- if (obj.length > 0)
- tapOrHover(obj[0]._index);
- }
- },
+ responsive: true,
+ scaleBeginAtZero: true,
+ scaleShowGridLines: true,
+ scaleGridLineColor: "rgba(0,0,0,.05)",
+ scaleGridLineWidth: 1,
- //String - A legend template
- legendTemplate : '<ul class="tc-chart-js-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'
- };
-
- cv = document.getElementById("eventchart");
- ctx = cv.getContext("2d");
- $timeout (function() {
- var tcGraph2 = new Chart(ctx,{type:'bar', data: data, options:options}); });
+
+ hover: {
+ mode: 'single',
+ onHover: function (obj) {
+ if (obj.length > 0)
+ tapOrHover(obj[0]._index);
+ }
+ },
+
+ //String - A legend template
+ legendTemplate: '<ul class="tc-chart-js-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'
+ };
+
+ cv = document.getElementById("eventchart");
+ ctx = cv.getContext("2d");
+ $timeout(function () {
+ var tcGraph2 = new Chart(ctx, {
+ type: 'bar',
+ data: data,
+ options: options
+ });
+ });
});
-
+
//-------------------------------------------------------
// we use this to reload the connkey if authkey changed
//------------------------------------------------------
-
-
- $rootScope.$on("auth-success", function () {
- ZMDataModel.zmDebug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
-
-
+
+ $rootScope.$on("auth-success", function () {
+
+ ZMDataModel.zmDebug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
+
+
});
-
-
-
-
-
+
+
+
+
+
//-------------------------------------------------------
// I was kidding, this is where it really is drawn
// scout's promise
//------------------------------------------------------
-
- function drawGraphTC(event)
- {
-
- $scope.eid = event.event.Event.Id;
-
- $scope.alarm_images=[];
-
- /*data = {
+
+ function drawGraphTC(event) {
+
+ $scope.eid = event.event.Event.Id;
+
+ $scope.alarm_images = [];
+
+ /*data = {
labels: [],
datasets: [
{
@@ -152,180 +154,178 @@ angular.module('zmApp.controllers').controller('EventsModalGraphCtrl', ['$scope'
]
};*/
-
-
- data = {
- labels: [],
- datasets: [
- {
- label: $translate.instant('kScore'),
- fill:true,
- backgroundColor: 'rgba(129, 207, 224, 1.0)',
- borderColor: 'rgb(92, 147, 159)',
- borderCapStyle: 'butt',
- borderJoinStyle: 'miter',
- pointBorderColor: "rgba(220,220,220,1)",
- pointBackgroundColor: "#e74c3c",
-
- pointHoverRadius: 10,
- pointHoverBackgroundColor: "#f39c12",
- pointHoverBorderWidth: 1,
- tension: 0.1,
-
- data: [],
- frames: []
+
+
+ data = {
+ labels: [],
+ datasets: [
+ {
+ label: $translate.instant('kScore'),
+ fill: true,
+ backgroundColor: 'rgba(129, 207, 224, 1.0)',
+ borderColor: 'rgb(92, 147, 159)',
+ borderCapStyle: 'butt',
+ borderJoinStyle: 'miter',
+ pointBorderColor: "rgba(220,220,220,1)",
+ pointBackgroundColor: "#e74c3c",
+
+ pointHoverRadius: 10,
+ pointHoverBackgroundColor: "#f39c12",
+ pointHoverBorderWidth: 1,
+ tension: 0.1,
+
+ data: [],
+ frames: []
},
-
+
]
- };
-
- onlyalarm_data = {
- labels: [],
- datasets: [
- {
- label: $translate.instant ('kScore'),
- backgroundColor: 'rgba(129, 207, 224, 1.0)',
- borderColor: 'rgba(129, 207, 224, 1.0)',
- hoverBackgroundColor: 'rgba(248, 148, 6,1.0)',
- hoverBorderColor: 'rgba(248, 148, 6,1.0)',
- data: [],
- frames: []
+ };
+
+ onlyalarm_data = {
+ labels: [],
+ datasets: [
+ {
+ label: $translate.instant('kScore'),
+ backgroundColor: 'rgba(129, 207, 224, 1.0)',
+ borderColor: 'rgba(129, 207, 224, 1.0)',
+ hoverBackgroundColor: 'rgba(248, 148, 6,1.0)',
+ hoverBorderColor: 'rgba(248, 148, 6,1.0)',
+ data: [],
+ frames: []
},
-
+
]
- };
-
- // Chart.js Options
- options = {
-
- scales: {
- yAxes:[{
- ticks: {
- // beginAtZero:true,
- min:-1,
- },
+ };
+
+ // Chart.js Options
+ options = {
+
+ scales: {
+ yAxes: [{
+ ticks: {
+ // beginAtZero:true,
+ min: -1,
+ },
}],
- xAxes:[{
- display:false
+ xAxes: [{
+ display: false
}]
- },
+ },
- responsive: true,
- scaleBeginAtZero : true,
- scaleShowGridLines : true,
- scaleGridLineColor : "rgba(0,0,0,.05)",
- scaleGridLineWidth : 1,
-
-
- hover:
- {
- mode:'single',
- onHover:function(obj)
- {
- if (obj.length > 0)
- tapOrHover(obj[0]._index);
- }
- },
+ responsive: true,
+ scaleBeginAtZero: true,
+ scaleShowGridLines: true,
+ scaleGridLineColor: "rgba(0,0,0,.05)",
+ scaleGridLineWidth: 1,
+
+
+ hover: {
+ mode: 'single',
+ onHover: function (obj) {
+ if (obj.length > 0)
+ tapOrHover(obj[0]._index);
+ }
+ },
+
+ //String - A legend template
+ legendTemplate: '<ul class="tc-chart-js-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'
+ };
- //String - A legend template
- legendTemplate : '<ul class="tc-chart-js-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'
- };
-
$scope.graphWidth = event.event.Frame.length * 10;
if ($scope.graphWidth < $rootScope.devWidth)
$scope.graphWidth = $rootScope.devWidth;
-
- // ZMDataModel.zmLog ("Changing graph width to " + $scope.graphWidth);
-
- for (var i=0; i< event.event.Frame.length; i++)
- {
-
-
+
+ // ZMDataModel.zmLog ("Changing graph width to " + $scope.graphWidth);
+
+ for (var i = 0; i < event.event.Frame.length; i++) {
+
+
data.labels.push(event.event.Frame[i].TimeStamp);
//data.labels.push(' ');
data.datasets[0].data.push(event.event.Frame[i].Score);
- data.datasets[0].frames.push({x:event.event.Frame[i].TimeStamp,
- y:event.event.Frame[i].Score,
- eid: event.event.Event.Id,
- fid: event.event.Frame[i].FrameId,
- //group:i,
- relativePath:computeRelativePath(event.event),
- score:event.event.Frame[i].Score,
- fname: padToN(event.event.Frame[i].FrameId,eventImageDigits)+"-capture.jpg",
-
- });
-
- if (event.event.Frame[i].Type=="Alarm")
- {
-
+ data.datasets[0].frames.push({
+ x: event.event.Frame[i].TimeStamp,
+ y: event.event.Frame[i].Score,
+ eid: event.event.Event.Id,
+ fid: event.event.Frame[i].FrameId,
+ //group:i,
+ relativePath: computeRelativePath(event.event),
+ score: event.event.Frame[i].Score,
+ fname: padToN(event.event.Frame[i].FrameId, eventImageDigits) + "-capture.jpg",
+
+ });
+
+ if (event.event.Frame[i].Type == "Alarm") {
+
onlyalarm_data.labels.push(event.event.Frame[i].TimeStamp);
//data.labels.push(' ');
onlyalarm_data.datasets[0].data.push(event.event.Frame[i].Score);
- onlyalarm_data.datasets[0].frames.push({x:event.event.Frame[i].TimeStamp,
- y:event.event.Frame[i].Score,
- eid: event.event.Event.Id,
- fid: event.event.Frame[i].FrameId,
- //group:i,
- relativePath:computeRelativePath(event.event),
- score:event.event.Frame[i].Score,
- fname: padToN(event.event.Frame[i].FrameId,eventImageDigits)+"-capture.jpg",
-
- });
+ onlyalarm_data.datasets[0].frames.push({
+ x: event.event.Frame[i].TimeStamp,
+ y: event.event.Frame[i].Score,
+ eid: event.event.Event.Id,
+ fid: event.event.Frame[i].FrameId,
+ //group:i,
+ relativePath: computeRelativePath(event.event),
+ score: event.event.Frame[i].Score,
+ fname: padToN(event.event.Frame[i].FrameId, eventImageDigits) + "-capture.jpg",
+
+ });
}
-
+
}
-
+
$scope.dataReady = true;
-
- cv = document.getElementById("tcchart");
- ctx = cv.getContext("2d");
-
- if (ZMDataModel.getLogin().timelineModalGraphType == 'all')
- {
+
+ cv = document.getElementById("tcchart");
+ ctx = cv.getContext("2d");
+
+ if (ZMDataModel.getLogin().timelineModalGraphType == 'all') {
btype = 'line';
current_data = data;
- }
- else
- {
+ } else {
btype = 'bar';
current_data = onlyalarm_data;
}
- $timeout(function() {
- tcGraph = new Chart(ctx,{type:btype, data: current_data, options:options});});
-
- cv.onclick = function(e)
- {
- var b = tcGraph.getElementAtEvent(e);
- if (b.length > 0)
- {
+ $timeout(function () {
+ tcGraph = new Chart(ctx, {
+ type: btype,
+ data: current_data,
+ options: options
+ });
+ });
+
+ cv.onclick = function (e) {
+ var b = tcGraph.getElementAtEvent(e);
+ if (b.length > 0) {
tapOrHover(b[0]._index);
}
};
}
-
- function tapOrHover(ndx)
- {
-
- $timeout (function() {
-
-
- //console.log ("You tapped " + ndx);
- $scope.alarm_images=[];
- $scope.playbackURL = ZMDataModel.getLogin().url;
- var items = current_data.datasets[0].frames[ndx];
- $scope.alarm_images.push({
- relativePath:items.relativePath,
- fid:items.fid,
- fname:items.fname,
- score:items.score,
- time:moment(items.x).format("MMM D,"+ZMDataModel.getTimeFormatSec()),
- eid:items.eid});
+
+ function tapOrHover(ndx) {
+
+ $timeout(function () {
+
+
+ //console.log ("You tapped " + ndx);
+ $scope.alarm_images = [];
+ $scope.playbackURL = ZMDataModel.getLogin().url;
+ var items = current_data.datasets[0].frames[ndx];
+ $scope.alarm_images.push({
+ relativePath: items.relativePath,
+ fid: items.fid,
+ fname: items.fname,
+ score: items.score,
+ time: moment(items.x).format("MMM D," + ZMDataModel.getTimeFormatSec()),
+ eid: items.eid
});
-
+ });
+
}
-
-
-
+
+
+
//--------------------------------------------------------
// utility function
//--------------------------------------------------------
@@ -397,8 +397,6 @@ angular.module('zmApp.controllers').controller('EventsModalGraphCtrl', ['$scope'
return number;
}
-
-
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/FirstUseCtrl.js b/www/js/FirstUseCtrl.js
index 66b7712c..bf3f328d 100644
--- a/www/js/FirstUseCtrl.js
+++ b/www/js/FirstUseCtrl.js
@@ -2,10 +2,10 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console */
-angular.module('zmApp.controllers').controller('zmApp.FirstUseCtrl', ['$scope','$ionicSideMenuDelegate', 'zm', '$stateParams', '$ionicHistory','$state', 'ZMDataModel', '$rootScope', '$ionicPopup', '$translate', function ($scope,$ionicSideMenuDelegate,zm, $stateParams, $ionicHistory, $state, ZMDataModel, $rootScope, $ionicPopup, $translate) {
-$scope.openMenu = function () {
- $ionicSideMenuDelegate.toggleLeft();
- };
+angular.module('zmApp.controllers').controller('zmApp.FirstUseCtrl', ['$scope', '$ionicSideMenuDelegate', 'zm', '$stateParams', '$ionicHistory', '$state', 'ZMDataModel', '$rootScope', '$ionicPopup', '$translate', function ($scope, $ionicSideMenuDelegate, zm, $stateParams, $ionicHistory, $state, ZMDataModel, $rootScope, $ionicPopup, $translate) {
+ $scope.openMenu = function () {
+ $ionicSideMenuDelegate.toggleLeft();
+ };
@@ -13,24 +13,25 @@ $scope.openMenu = function () {
// Controller Main
//------------------------------------------------------------------------
$scope.$on('$ionicView.enter', function () {
- console.log("**VIEW ** FirstUse Ctrl Entered");
+ //console.log("**VIEW ** FirstUse Ctrl Entered");
$ionicSideMenuDelegate.canDragContent(true);
-
+
});
-
- $scope.switchLang = function()
- {
+
+ $scope.switchLang = function () {
$scope.lang = ZMDataModel.getLanguages();
- $scope.myopt = {lang:""};
-
+ $scope.myopt = {
+ lang: ""
+ };
+
$rootScope.zmPopup = $ionicPopup.show({
scope: $scope,
template: '<ion-radio-fix ng-repeat="item in lang" ng-value="item.value" ng-model="myopt.lang"> {{item.text}} </ion-radio-fix>',
title: $translate.instant('kSelectLanguage'),
-
+
buttons: [
{
text: $translate.instant('kButtonCancel'),
@@ -42,38 +43,38 @@ $scope.openMenu = function () {
{
text: $translate.instant('kButtonOk'),
onTap: function (e) {
- ZMDataModel.zmLog("Language selected:"+$scope.myopt.lang);
+ ZMDataModel.zmLog("Language selected:" + $scope.myopt.lang);
ZMDataModel.setDefaultLanguage($scope.myopt.lang, true);
-
-
+
+
//return "OK";
}
}
]
});
-
-
+
+
};
-
- $scope.goToLogin = function()
- {
+
+ $scope.goToLogin = function () {
$ionicHistory.nextViewOptions({
- disableAnimate: false,
- disableBack: true
- });
- $state.go("login" ,{"wizard": false});
+ disableAnimate: false,
+ disableBack: true
+ });
+ $state.go("login", {
+ "wizard": false
+ });
};
-
- $scope.goToWizard = function()
- {
+
+ $scope.goToWizard = function () {
$ionicHistory.nextViewOptions({
- disableAnimate: false,
- disableBack: true
- });
- $state.go("wizard" );
+ disableAnimate: false,
+ disableBack: true
+ });
+ $state.go("wizard");
};
-
-
-}]);
+
+
+}]); \ No newline at end of file
diff --git a/www/js/HelpCtrl.js b/www/js/HelpCtrl.js
index 15504f7b..8506b2f1 100644
--- a/www/js/HelpCtrl.js
+++ b/www/js/HelpCtrl.js
@@ -2,66 +2,67 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console, Masonry */
-angular.module('zmApp.controllers').controller('zmApp.HelpCtrl', ['$scope', '$rootScope', '$ionicModal', 'ZMDataModel','$ionicSideMenuDelegate', '$ionicHistory', '$state', '$translate', '$q', '$templateRequest', '$sce', '$compile', function ($scope, $rootScope, $ionicModal, ZMDataModel,$ionicSideMenuDelegate, $ionicHistory, $state, $translate, $q, $templateRequest, $sce, $compile) {
-$scope.openMenu = function () {
- $ionicSideMenuDelegate.toggleLeft();
- };
+angular.module('zmApp.controllers').controller('zmApp.HelpCtrl', ['$scope', '$rootScope', '$ionicModal', 'ZMDataModel', '$ionicSideMenuDelegate', '$ionicHistory', '$state', '$translate', '$q', '$templateRequest', '$sce', '$compile', function ($scope, $rootScope, $ionicModal, ZMDataModel, $ionicSideMenuDelegate, $ionicHistory, $state, $translate, $q, $templateRequest, $sce, $compile) {
+ $scope.openMenu = function () {
+ $ionicSideMenuDelegate.toggleLeft();
+ };
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
-
- function insertHelp()
- {
-
-
-
+ //----------------------------------------------------------------
+ // This function dynamically inserts the relevant help text file
+ // based on selected language
+ //----------------------------------------------------------------
+
+ function insertHelp() {
+
var l = ZMDataModel.getDefaultLanguage() || 'en';
- var lang = "lang/help/help-"+l+".html";
- console.log ("LANG IS " + lang);
+ var lang = "lang/help/help-" + l + ".html";
+ //console.log ("LANG IS " + lang);
var templateUrl = $sce.getTrustedResourceUrl(lang);
- var lang_fb= "lang/help/help-"+"en"+".html";
+ var lang_fb = "lang/help/help-" + "en" + ".html";
var templateUrlFB = $sce.getTrustedResourceUrl(lang_fb);
-
+
$templateRequest(lang)
- .then (function(template)
- {
+ .then(function (template) {
var elem = angular.element(document.getElementById('insertHelp'));
- $compile(elem.html(template).contents())($scope);
- },
- function (error)
- {
- ZMDataModel.zmLog ("Language file " + lang + " not found, falling back");
+ $compile(elem.html(template).contents())($scope);
+ },
+ function (error) {
+ ZMDataModel.zmLog("Language file " + lang + " not found, falling back");
$templateRequest(templateUrlFB)
- .then (function( template)
- {
+ .then(function (template) {
var elem = angular.element(document.getElementById('insertHelp'));
$compile(elem.html(template).contents())($scope);
- },
- function (error)
- {
+ },
+ function (error) {
ZMDataModel.zmLog("fallback help not found");
- });
+ });
}
- );
-
-
-
+ );
+
+
+
}
- //-------------------------------------------------------------------------
+ //-------------------------------------------------------------------------
// Lets make sure we set screen dim properly as we enter
// The problem is we enter other states before we leave previous states
// from a callback perspective in ionic, so we really can't predictably
@@ -73,11 +74,11 @@ $scope.openMenu = function () {
ZMDataModel.setAwake(false);
$scope.zmAppVersion = ZMDataModel.getAppVersion();
insertHelp();
-
-
-
+
+
+
});
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/ImportantMessageCtrl.js b/www/js/ImportantMessageCtrl.js
index bbb34c32..814359cf 100644
--- a/www/js/ImportantMessageCtrl.js
+++ b/www/js/ImportantMessageCtrl.js
@@ -2,10 +2,10 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console */
-angular.module('zmApp.controllers').controller('zmApp.ImportantMessageCtrl', ['$scope','$ionicSideMenuDelegate', 'zm', '$stateParams', '$timeout','$rootScope', function ($scope,$ionicSideMenuDelegate,zm, $stateParams, $timeout, $rootScope) {
-$scope.openMenu = function () {
- $ionicSideMenuDelegate.toggleLeft();
- };
+angular.module('zmApp.controllers').controller('zmApp.ImportantMessageCtrl', ['$scope', '$ionicSideMenuDelegate', 'zm', '$stateParams', '$timeout', '$rootScope', function ($scope, $ionicSideMenuDelegate, zm, $stateParams, $timeout, $rootScope) {
+ $scope.openMenu = function () {
+ $ionicSideMenuDelegate.toggleLeft();
+ };
@@ -21,8 +21,8 @@ $scope.openMenu = function () {
$scope.recommendedVersion = zm.recommendedAppVersion;
});
-
- $scope.openMenu = function () {
+
+ $scope.openMenu = function () {
$timeout(function () {
$rootScope.stateofSlide = $ionicSideMenuDelegate.isOpen();
}, 500);
@@ -30,4 +30,4 @@ $scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
};
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/LogCtrl.js b/www/js/LogCtrl.js
index 31e580e3..76683257 100644
--- a/www/js/LogCtrl.js
+++ b/www/js/LogCtrl.js
@@ -2,7 +2,7 @@
/* jslint browser: true*/
/* global saveAs, cordova,StatusBar,angular,console,moment */
-angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$rootScope','zm', '$ionicModal', 'ZMDataModel', '$ionicSideMenuDelegate', '$fileLogger', '$cordovaEmailComposer', '$ionicPopup', '$timeout', '$ionicHistory', '$state', '$interval', '$ionicLoading', '$translate', function ($scope, $rootScope,zm, $ionicModal, ZMDataModel, $ionicSideMenuDelegate, $fileLogger, $cordovaEmailComposer, $ionicPopup, $timeout, $ionicHistory, $state, $interval, $ionicLoading, $translate) {
+angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$rootScope', 'zm', '$ionicModal', 'ZMDataModel', '$ionicSideMenuDelegate', '$fileLogger', '$cordovaEmailComposer', '$ionicPopup', '$timeout', '$ionicHistory', '$state', '$interval', '$ionicLoading', '$translate', function ($scope, $rootScope, zm, $ionicModal, ZMDataModel, $ionicSideMenuDelegate, $fileLogger, $cordovaEmailComposer, $ionicPopup, $timeout, $ionicHistory, $state, $interval, $ionicLoading, $translate) {
$scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
};
@@ -10,31 +10,29 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
//---------------------------------------------------------------
// Controller main
//---------------------------------------------------------------
-
- var intervalLogUpdateHandle;
-
- document.addEventListener("pause", onPause, false);
+
+ var intervalLogUpdateHandle;
+
+ document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
-
- function onPause()
- {
+
+ function onPause() {
ZMDataModel.zmDebug("LogCtrl: pause called, killing log timer");
// $interval.cancel(intervalLogUpdateHandle);
}
-
-
- function onResume()
- {
+
+
+ function onResume() {
ZMDataModel.zmDebug("LogCtrl: resume called, starting log timer");
- /* intervalLogUpdateHandle = $interval(function ()
+ /* intervalLogUpdateHandle = $interval(function ()
{
loadLogs();
}.bind(this), 3000);*/
-
+
loadLogs();
}
-
+
$scope.deleteLogs = function () {
@@ -57,14 +55,18 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
@@ -75,7 +77,7 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
$scope.sendEmail = function (logstring) {
$ionicPopup.confirm({
title: $translate.instant('kSensitiveTitle'),
- template: $rootScope.appName+' '+$translate.instant('kSensitiveBody')
+ template: $rootScope.appName + ' ' + $translate.instant('kSensitiveBody')
})
.then(function (res) {
if (res) sendEmailReally(logstring);
@@ -88,79 +90,77 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
//--------------------------------------------------------------------------
function sendEmailReally(logstring) {
if (window.cordova) {
-
-
-
-
-
-
- // do my best to replace sensitive information
- var loginData = ZMDataModel.getLogin();
-
-
- // We don't need this anymore as zmLog and zmDebug now strip passwords
- /*if (loginData.password !="")
- {
- var re1 = new RegExp(loginData.password, "g");
- logstring = logstring.replace(re1, "<deleted>");
- }*/
- // keep the protocol, helps to debug
- var urlNoProtocol = loginData.url.replace(/.*?:\/\//, "");
- if (urlNoProtocol != "")
- {
- var re2 = new RegExp(urlNoProtocol, "g");
- // just replacing baseurl - that will take care of
- // masking api but may not be cgi
- logstring = logstring.replace(re2, "<server>");
- }
- urlNoProtocol = loginData.streamingurl.replace(/.*?:\/\//, "");
- if (urlNoProtocol != "")
- {
- var re3 = new RegExp(urlNoProtocol, "g");
- logstring = logstring.replace(re3, "<server>");
- }
-
- urlNoProtocol = loginData.eventServer.replace(/.*?:\/\//, "");
- if (urlNoProtocol != "")
- {
- var re4 = new RegExp(urlNoProtocol, "g");
- logstring = logstring.replace(re4, "<server>");
- }
-
- window.plugins.emailComposer.showEmailComposerWithCallback(callback,$rootScope.appName+' logs',logstring,[zm.authoremail]);
-
-
+
+
+
+
+
+
+ // do my best to replace sensitive information
+ var loginData = ZMDataModel.getLogin();
+
+
+ // We don't need this anymore as zmLog and zmDebug now strip passwords
+ /*if (loginData.password !="")
+ {
+ var re1 = new RegExp(loginData.password, "g");
+ logstring = logstring.replace(re1, "<deleted>");
+ }*/
+ // keep the protocol, helps to debug
+ var urlNoProtocol = loginData.url.replace(/.*?:\/\//, "");
+ if (urlNoProtocol != "") {
+ var re2 = new RegExp(urlNoProtocol, "g");
+ // just replacing baseurl - that will take care of
+ // masking api but may not be cgi
+ logstring = logstring.replace(re2, "<server>");
+ }
+ urlNoProtocol = loginData.streamingurl.replace(/.*?:\/\//, "");
+ if (urlNoProtocol != "") {
+ var re3 = new RegExp(urlNoProtocol, "g");
+ logstring = logstring.replace(re3, "<server>");
+ }
+
+ urlNoProtocol = loginData.eventServer.replace(/.*?:\/\//, "");
+ if (urlNoProtocol != "") {
+ var re4 = new RegExp(urlNoProtocol, "g");
+ logstring = logstring.replace(re4, "<server>");
+ }
+
+ window.plugins.emailComposer.showEmailComposerWithCallback(callback, $rootScope.appName + ' logs', logstring, [zm.authoremail]);
+
+
} else {
- // console.log("Using default email client to send data");
-
- var fname = $rootScope.appName+"-logs-" +
- moment().format('MMM-DD-YY_HH-mm-ss') + ".txt";
-
- var dlogstring = "version:"+$scope.zmAppVersion + "\n" + logstring;
- var blob = new Blob([dlogstring], {type: "text/plain;charset=utf-8"});
-saveAs(blob, fname);
+ // console.log("Using default email client to send data");
+
+ var fname = $rootScope.appName + "-logs-" +
+ moment().format('MMM-DD-YY_HH-mm-ss') + ".txt";
+
+ var dlogstring = "version:" + $scope.zmAppVersion + "\n" + logstring;
+ var blob = new Blob([dlogstring], {
+ type: "text/plain;charset=utf-8"
+ });
+ saveAs(blob, fname);
}
}
-
- function callback ()
- {
- console.log ("EMAIL SENT");
+
+ function callback() {
+ // console.log ("EMAIL SENT");
+ ZMDataModel.zmDebug("Email sent callback called");
}
-
- function loadLogs()
- {
+
+ function loadLogs() {
//console.log ("GETTING LOGS");
-
- $ionicLoading.show({
- template: $translate.instant('kLoading'),
- noBackdrop: true,
- duration: zm.loadingTimeout
- });
-
+
+ $ionicLoading.show({
+ template: $translate.instant('kLoading'),
+ noBackdrop: true,
+ duration: zm.loadingTimeout
+ });
+
$fileLogger.getLogfile().then(function (l) {
-
+
$scope.zmLog.logString = l.split('\n').reverse().join('\n');
$ionicLoading.hide();
},
@@ -184,26 +184,25 @@ saveAs(blob, fname);
$scope.zmLog = {
logString: ""
};
-
+
$scope.zmAppVersion = ZMDataModel.getAppVersion();
-
-
+
+
/* intervalLogUpdateHandle = $interval(function ()
{
loadLogs();
}.bind(this), 3000);*/
-
+
loadLogs();
-
+
});
-
- $scope.$on('$ionicView.leave', function ()
- {
+
+ $scope.$on('$ionicView.leave', function () {
//console.log ("Deleting Log interval...");
- // $interval.cancel(intervalLogUpdateHandle);
+ // $interval.cancel(intervalLogUpdateHandle);
});
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/LoginCtrl.js b/www/js/LoginCtrl.js
index 439b9f56..b71058cf 100644
--- a/www/js/LoginCtrl.js
+++ b/www/js/LoginCtrl.js
@@ -2,7 +2,7 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console,alert,URI, localforage */
-angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$rootScope', 'zm', '$ionicModal', 'ZMDataModel', '$ionicSideMenuDelegate', '$ionicPopup', '$http', '$q', '$ionicLoading', 'zmAutoLogin', '$cordovaPinDialog', 'EventServer', '$ionicHistory', '$state', '$ionicActionSheet', 'SecuredPopups', '$stateParams', '$translate', function ($scope, $rootScope, zm, $ionicModal, ZMDataModel, $ionicSideMenuDelegate, $ionicPopup, $http, $q, $ionicLoading, zmAutoLogin, $cordovaPinDialog, EventServer, $ionicHistory, $state, $ionicActionSheet, SecuredPopups, $stateParams, $translate) {
+angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$rootScope', 'zm', '$ionicModal', 'ZMDataModel', '$ionicSideMenuDelegate', '$ionicPopup', '$http', '$q', '$ionicLoading', 'zmAutoLogin', '$cordovaPinDialog', 'EventServer', '$ionicHistory', '$state', '$ionicActionSheet', 'SecuredPopups', '$stateParams', '$translate', function ($scope, $rootScope, zm, $ionicModal, ZMDataModel, $ionicSideMenuDelegate, $ionicPopup, $http, $q, $ionicLoading, zmAutoLogin, $cordovaPinDialog, EventServer, $ionicHistory, $state, $ionicActionSheet, SecuredPopups, $stateParams, $translate) {
$scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
};
@@ -18,26 +18,24 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
isUseEventServer: false
};
- $scope.check.isUseAuth = ($scope.loginData.isUseAuth ) ? true : false;
+ $scope.check.isUseAuth = ($scope.loginData.isUseAuth) ? true : false;
$scope.check.isUseEventServer = ($scope.loginData.isUseEventServer == true) ? true : false;
-
-
+
+
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
-
- function onResume()
- {
- ZMDataModel.zmLog ("Login screen resumed");
-
+
+ function onResume() {
+ ZMDataModel.zmLog("Login screen resumed");
+
}
-
- function onPause()
- {
- ZMDataModel.zmLog ("Login screen going to background, saving data");
- localforage.setItem ("settings-temp-data",$scope.loginData);
-
+
+ function onPause() {
+ ZMDataModel.zmLog("Login screen going to background, saving data");
+ localforage.setItem("settings-temp-data", $scope.loginData);
+
}
-
+
//----------------------------------------------------------------
// Alarm notification handling
@@ -60,43 +58,46 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
//----------------------------------------------------------------
// Specifies a linked profile to try if this profile fails
//----------------------------------------------------------------
-
- $scope.selectFallback = function ()
- {
+
+ $scope.selectFallback = function () {
var as = Object.keys(ZMDataModel.getServerGroups());
- if (as.length < 2)
- {
- $rootScope.zmPopup= SecuredPopups.show('alert',{
- title: $translate.instant('kError'),
- template: $translate.instant('kFallback2Configs')
- });
+ if (as.length < 2) {
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
+ title: $translate.instant('kError'),
+ template: $translate.instant('kFallback2Configs')
+ });
return;
-
+
}
- var ab = [{text:$translate.instant('kClear')}];
+ var ab = [{
+ text: $translate.instant('kClear')
+ }];
var ld = ZMDataModel.getLogin();
- as.forEach(function(item) { if (item != ld.serverName) ab.push({text:item});});
+ as.forEach(function (item) {
+ if (item != ld.serverName) ab.push({
+ text: item
+ });
+ });
var sheet = $ionicActionSheet.show({
buttons: ab,
titleText: $translate.instant('kSelectFallback'),
cancelText: $translate.instant('kButtonCancel'),
- cancel: function() {},
- buttonClicked: function (index)
- {
- console.log ("YOU WANT " + ab[index].text + index);
- if (index==0)
- $scope.loginData.fallbackConfiguration="";
+ cancel: function () {},
+ buttonClicked: function (index) {
+ //console.log ("YOU WANT " + ab[index].text + index);
+ if (index == 0)
+ $scope.loginData.fallbackConfiguration = "";
else
$scope.loginData.fallbackConfiguration = ab[index].text;
ZMDataModel.setLogin($scope.loginData);
return true;
}
});
-
-
-
+
+
+
};
-
+
//----------------------------------------------------------------
// This is called when the user changes profiles
//----------------------------------------------------------------
@@ -111,21 +112,20 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
// add cancel code..
},
buttonClicked: function (index) {
- //console.log ("YOU WANT " + serverbuttons[index].text + " INDEX " + index);
-
- if (serverbuttons[index].text == $translate.instant('kServerAdd')+"...")
- {
-
+ //console.log ("YOU WANT " + serverbuttons[index].text + " INDEX " + index);
+
+ if (serverbuttons[index].text == $translate.instant('kServerAdd') + "...") {
+
$scope.loginData = angular.copy(ZMDataModel.getDefaultLoginObject());
return true;
}
-
+
var zmServers = ZMDataModel.getServerGroups();
$scope.loginData = zmServers[serverbuttons[index].text];
-
- console.log ("NEW LOGIN OBJECT IS " + JSON.stringify($scope.loginData));
-
-
+
+ //console.log ("NEW LOGIN OBJECT IS " + JSON.stringify($scope.loginData));
+
+
$scope.check.isUseAuth = ($scope.loginData.isUseAuth) ? true : false;
$scope.check.isUseEventServer = ($scope.loginData.isUseEventServer == true) ? true : false;
@@ -142,20 +142,19 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
},
destructiveButtonClicked: function () {
-
-
- if (!$scope.loginData.serverName)
- {
+
+
+ if (!$scope.loginData.serverName) {
ZMDataModel.zmDebug("cannot delete empty entry");
return true;
-
-
+
+
}
var zmServers = ZMDataModel.getServerGroups();
//console.log ("YOU WANT TO DELETE " + $scope.loginData.serverName);
//console.log ("LENGTH OF SERVERS IS " + Object.keys(zmServers).length);
if (Object.keys(zmServers).length > 1) {
-
+
ZMDataModel.zmLog("Deleting " + $scope.loginData.serverName);
delete zmServers[$scope.loginData.serverName];
ZMDataModel.setServerGroups(zmServers);
@@ -166,14 +165,16 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
ZMDataModel.setLogin($scope.loginData);
availableServers = Object.keys(ZMDataModel.getServerGroups());
- serverbuttons = [{text:$translate.instant('kServerAdd')+"..."}];
+ serverbuttons = [{
+ text: $translate.instant('kServerAdd') + "..."
+ }];
for (var servIter = 0; servIter < availableServers.length; servIter++) {
serverbuttons.push({
text: availableServers[servIter]
});
//console.log("ADDING : " + availableServers[servIter]);
}
- console.log (">>>>>>>delete: server buttons " + JSON.stringify(serverbuttons));
+ //console.log (">>>>>>>delete: server buttons " + JSON.stringify(serverbuttons));
} else {
ZMDataModel.displayBanner('error', [$translate.instant('kBannerCannotDeleteNeedOne')]);
@@ -189,7 +190,7 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
//----------------------------------------------------------------
// This is when you tap on event server settings
//----------------------------------------------------------------
-
+
$scope.eventServerSettings = function () {
ZMDataModel.zmDebug("Saving settings before going to Event Server settings");
//console.log ( "My loginData saved " + JSON.stringify($scope.loginData));
@@ -198,7 +199,7 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
};
-
+
//-------------------------------------------------------------------------
// Lets make sure we set screen dim properly as we enter
@@ -212,79 +213,70 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
ZMDataModel.setAwake(false);
var ld = ZMDataModel.getLogin();
oldName = ld.serverName;
-
+
availableServers = Object.keys(ZMDataModel.getServerGroups());
- serverbuttons = [{text:$translate.instant('kServerAdd')+"..."}];
+ serverbuttons = [{
+ text: $translate.instant('kServerAdd') + "..."
+ }];
for (var servIter = 0; servIter < availableServers.length; servIter++) {
serverbuttons.push({
- text: availableServers[servIter]
- });
-
-
- console.log (">>>>>>>ionicview enter: server buttons " + JSON.stringify(serverbuttons));
+ text: availableServers[servIter]
+ });
+
+
+ //console.log (">>>>>>>ionicview enter: server buttons " + JSON.stringify(serverbuttons));
}
-
-
-
- ZMDataModel.zmDebug ("Does login need to hear the wizard? " + $stateParams.wizard);
-
- if ($stateParams.wizard == "true")
- {
- ZMDataModel.zmLog ("Creating new login entry for wizard");
+
+
+
+ ZMDataModel.zmDebug("Does login need to hear the wizard? " + $stateParams.wizard);
+
+ if ($stateParams.wizard == "true") {
+ ZMDataModel.zmLog("Creating new login entry for wizard");
$scope.loginData = angular.copy(ZMDataModel.getDefaultLoginObject());
$scope.loginData.serverName = $rootScope.wizard.serverName;
$scope.loginData.url = $rootScope.wizard.loginURL;
$scope.loginData.apiurl = $rootScope.wizard.apiURL;
$scope.loginData.streamingurl = $rootScope.wizard.streamingURL;
- if ($rootScope.wizard.useauth && $rootScope.wizard.usezmauth)
- {
+ if ($rootScope.wizard.useauth && $rootScope.wizard.usezmauth) {
$scope.loginData.username = $rootScope.wizard.zmuser;
$scope.loginData.password = $rootScope.wizard.zmpassword;
- }
- else
- {
+ } else {
$scope.loginData.isUseAuth = false;
}
-
- if ((/^https:\/\//i.test($scope.loginData.url)))
- {
+
+ if ((/^https:\/\//i.test($scope.loginData.url))) {
$scope.loginData.useSSL = true;
}
-
-
- }
-
- else
- {
+
+
+ } else {
var savedData;
- localforage.getItem("settings-temp-data").then (function(value) {
+ localforage.getItem("settings-temp-data").then(function (value) {
savedData = value;
//= zmStorageService.getObject ("settings-temp-data");
- if (! ZMDataModel.isEmpty(savedData))
- {
+ if (!ZMDataModel.isEmpty(savedData)) {
$scope.loginData = savedData;
- ZMDataModel.zmLog ("retrieved pre-stored loginData on past pause: " + JSON.stringify($scope.loginData));
+ ZMDataModel.zmLog("retrieved pre-stored loginData on past pause: " + JSON.stringify($scope.loginData));
localforage.removeItem("settings-temp-data");
//zmStorageService.setObject("settings-temp-data", {});
- }
- else
- {
- ZMDataModel.zmLog ("Not recovering login data as its empty");
+ } else {
+ ZMDataModel.zmLog("Not recovering login data as its empty");
}
});
}
-
-
+
+
});
-
-
+
+
$scope.$on('$ionicView.beforeLeave', function () {
//console.log("**VIEW ** LoginCtrl Entered");
-
-
-
+
+
+
});
-
+
//----------------------------------------------------------------
// We need to make sure that if the user changes a profile, that
// its saved, which involves re-auth. Not doing this will mess
@@ -295,33 +287,34 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
// So instead, if check if the profile name has changed - if it has
// we block state change and ask the user to save
//----------------------------------------------------------------
-
+
// credit: http://stackoverflow.com/questions/33385610/ionic-prevent-navigation-on-leave
- $scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams)
- {
+ $scope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
ZMDataModel.setAwake(false);
var ld = ZMDataModel.getLogin();
-
- if(ld.serverName != oldName )
- {
+
+ if (ld.serverName != oldName) {
event.preventDefault();
- $rootScope.zmPopup = SecuredPopups.show('alert',{
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
title: $translate.instant('kPleaseSave'),
- template: $translate.instant('kProfileChangeNotification', {oldName: oldName, newName:ld.serverName})
-
+ template: $translate.instant('kProfileChangeNotification', {
+ oldName: oldName,
+ newName: ld.serverName
+ })
+
});
-
+
}
});
-
- $rootScope.$on('$stateChangeSuccess', function(){
- $scope.ignoreDirty = false;
+
+ $rootScope.$on('$stateChangeSuccess', function () {
+ $scope.ignoreDirty = false;
});
-
+
// Make a noble attempt at deciphering
-
-
+
+
//--------------------------------------------------------------------------
// When PIN is enabled, this is called to specify a PIN
// FIXME: Get rid of cordovaPinDialog. It's really not needed
@@ -374,22 +367,19 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
if (/^https:\/\//i.test($scope.loginData.url)) {
$scope.loginData.useSSL = true;
+ } else {
+ $scope.loginData.useSSL = false;
}
- else
- {$scope.loginData.useSSL = false;}
-
- if ($scope.loginData.url.slice(-1)=='/')
- {
+
+ if ($scope.loginData.url.slice(-1) == '/') {
$scope.loginData.apiurl = $scope.loginData.url + "api";
$scope.loginData.streamingurl = $scope.loginData.url + "cgi-bin";
- }
- else
- {
+ } else {
$scope.loginData.apiurl = $scope.loginData.url + "/api";
$scope.loginData.streamingurl = $scope.loginData.url + "/cgi-bin";
}
-
-
+
+
};
//-------------------------------------------------------------------------------
// Adds http to url if not present
@@ -424,7 +414,7 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
function saveItems(showalert) {
- console.log ("*********** SAVE ITEMS CALLED ");
+ //console.log ("*********** SAVE ITEMS CALLED ");
//console.log('Saving login');
ZMDataModel.setFirstUse(false);
@@ -439,13 +429,13 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
$scope.loginData.apiurl = $scope.loginData.apiurl.replace(/\s/g, "");
$scope.loginData.streamingurl = $scope.loginData.streamingurl.replace(/\s/g, "");
$scope.loginData.eventServer = $scope.loginData.eventServer.replace(/\s/g, "");
-
+
$scope.loginData.username = $scope.loginData.username.trim();
-
- $scope.loginData.isUseAuth = ($scope.check.isUseAuth) ? true:false;
+
+ $scope.loginData.isUseAuth = ($scope.check.isUseAuth) ? true : false;
$scope.loginData.isUseEventServer = ($scope.check.isUseEventServer) ? true : false;
if ($scope.loginData.url.slice(-1) == '/') {
@@ -526,7 +516,7 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
platform: $rootScope.platformOS,
token: $rootScope.apnsToken,
state: "disabled"
- },1);
+ }, 1);
}
}
@@ -542,7 +532,7 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
platform: $rootScope.platformOS,
token: $rootScope.apnsToken,
state: "enabled"
- },1);
+ }, 1);
}
EventServer.sendMessage("control", {
type: 'filter',
@@ -552,12 +542,12 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
}
-
+
// lets logout
- ZMDataModel.zmDebug ("Logging out of current session...");
+ ZMDataModel.zmDebug("Logging out of current session...");
$rootScope.authSession = "undefined";
$http({
- method: 'POST',
+ method: 'POST',
//withCredentials: true,
url: $scope.loginData.url + '/index.php',
headers: {
@@ -578,10 +568,9 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
view: "login"
}
})
- .finally ( function (ans)
- {
-
- 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>&nbsp;"+$translate.instant('kAuthenticating')+"...</button>")
+ .finally(function (ans) {
+
+ 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>&nbsp;" + $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
@@ -590,25 +579,24 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
.then(function (data) {
// Now let's validate if the API works
-
+
// note that due to reachability, it might have switched to another server
-
- if ($scope.loginData.serverName != ZMDataModel.getLogin().serverName)
- {
- ZMDataModel.zmDebug (">>> Server information has changed, likely a fallback took over!");
+
+ if ($scope.loginData.serverName != ZMDataModel.getLogin().serverName) {
+ ZMDataModel.zmDebug(">>> Server information has changed, likely a fallback took over!");
$scope.loginData = ZMDataModel.getLogin();
apiurl = $scope.loginData.apiurl + '/host/getVersion.json';
portalurl = $scope.loginData.url + '/index.php';
}
-
+
// possible image digits changed between servers
ZMDataModel.getKeyConfigParams(0);
-
+
ZMDataModel.zmLog("Validating APIs at " + apiurl);
$http.get(apiurl)
.success(function (data) {
- var loginStatus = $translate.instant('kExploreEnjoy')+" "+$rootScope.appName+"!";
+ var loginStatus = $translate.instant('kExploreEnjoy') + " " + $rootScope.appName + "!";
EventServer.refresh();
@@ -626,22 +614,21 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
.success(function (data) {
ZMDataModel.zmDebug("Urk! cgi-path returned success, but it should not have come here");
loginStatus = $translate.instant('kLoginStatusNoCgi');
-
- ZMDataModel.zmDebug ("refreshing API version...");
+
+ ZMDataModel.zmDebug("refreshing API version...");
ZMDataModel.getAPIversion()
- .then (function (data) {
- var refresh = ZMDataModel.getMonitors(1);
- $rootScope.apiVersion = data;
- },
- function (error) {
- var refresh = ZMDataModel.getMonitors(1);
- $rootScope.apiVersion = "0.0.0";
- ZMDataModel.zmDebug ("Error, failed API version, setting to " +$rootScope.apiVersion);
- });
-
- if (showalert)
- {
- $rootScope.zmPopup = SecuredPopups.show('alert',{
+ .then(function (data) {
+ var refresh = ZMDataModel.getMonitors(1);
+ $rootScope.apiVersion = data;
+ },
+ function (error) {
+ var refresh = ZMDataModel.getMonitors(1);
+ $rootScope.apiVersion = "0.0.0";
+ ZMDataModel.zmDebug("Error, failed API version, setting to " + $rootScope.apiVersion);
+ });
+
+ if (showalert) {
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
title: $translate.instant('kLoginValidatedTitle'),
template: loginStatus
}).then(function (res) {
@@ -659,30 +646,29 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
if (status < 500) {
loginStatus = $translate.instant('kLoginStatusNoCgiAlt');
}
-
- if (showalert)
- {
- $rootScope.zmPopup = SecuredPopups.show('alert',{
+
+ if (showalert) {
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
title: $translate.instant('kLoginValidatedTitle'),
template: loginStatus
}).then(function (res) {
$ionicSideMenuDelegate.toggleLeft();
ZMDataModel.zmDebug("Force reloading monitors...");
-
+
});
}
- ZMDataModel.zmDebug ("refreshing API version...");
+ ZMDataModel.zmDebug("refreshing API version...");
ZMDataModel.getAPIversion()
- .then (function (data) {
- var refresh = ZMDataModel.getMonitors(1);
- $rootScope.apiVersion = data;
- },
- function (error) {
- var refresh = ZMDataModel.getMonitors(1);
- $rootScope.apiVersion = "0.0.0";
- ZMDataModel.zmDebug ("Error, failed API version, setting to " +$rootScope.apiVersion);
- });
+ .then(function (data) {
+ var refresh = ZMDataModel.getMonitors(1);
+ $rootScope.apiVersion = data;
+ },
+ function (error) {
+ var refresh = ZMDataModel.getMonitors(1);
+ $rootScope.apiVersion = "0.0.0";
+ ZMDataModel.zmDebug("Error, failed API version, setting to " + $rootScope.apiVersion);
+ });
});
});
@@ -693,8 +679,8 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
.error(function (error) {
ZMDataModel.displayBanner('error', [$translate.instant('kBannerAPICheckFailed'), $translate.instant('kBannerPleaseCheck')]);
ZMDataModel.zmLog("API login error " + JSON.stringify(error));
-
- $rootScope.zmPopup= SecuredPopups.show('alert',{
+
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
title: $translate.instant('kLoginValidAPIFailedTitle'),
template: $translate.instant('kBannerPleaseCheck')
});
@@ -703,9 +689,9 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
- });
+ });
}
-
+
// ----------------------------------------------
// Saves the current profile. Note that
// calling saveItems also updates the defaultServer
@@ -724,13 +710,15 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
} else {
saveItems(true);
availableServers = Object.keys(ZMDataModel.getServerGroups());
- serverbuttons = [{text:$translate.instant('kServerAdd')+"..."}];
+ serverbuttons = [{
+ text: $translate.instant('kServerAdd') + "..."
+ }];
for (var servIter = 0; servIter < availableServers.length; servIter++) {
serverbuttons.push({
text: availableServers[servIter]
});
}
- console.log (">>>>>>>ionicview save: server buttons " + JSON.stringify(serverbuttons));
+ //console.log (">>>>>>>ionicview save: server buttons " + JSON.stringify(serverbuttons));
}
diff --git a/www/js/MenuController.js b/www/js/MenuController.js
index d0dd56fa..9eca0051 100644
--- a/www/js/MenuController.js
+++ b/www/js/MenuController.js
@@ -7,10 +7,10 @@ $scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
};
-
-
-
-
+//----------------------------------------------------------------
+// This controller sits along with the main app to bring up
+// the language menu from the main menu
+//----------------------------------------------------------------
$scope.switchLang = function()
{
$scope.lang = ZMDataModel.getLanguages();
diff --git a/www/js/MonitorCtrl.js b/www/js/MonitorCtrl.js
index e56ae47d..33229b85 100644
--- a/www/js/MonitorCtrl.js
+++ b/www/js/MonitorCtrl.js
@@ -83,12 +83,11 @@ angular.module('zmApp.controllers')
//-----------------------------------------------------------------------
$scope.changeConfig = function (monitorName, monitorId, enabled, func) {
var checked = false;
-
- if (monitorName == 'All')
- {
+
+ if (monitorName == 'All') {
monitorName = $translate.instant('kAll');
}
-
+
//console.log("called with " + monitorId + ":" + enabled + ":" + func);
if (enabled == '1') checked = true;
@@ -98,9 +97,8 @@ angular.module('zmApp.controllers')
for (var i = 0; i < $scope.monitors.length; i++) {
monitorsIds[i] = $scope.monitors[i].Monitor.Id;
}
- }
- else {
- monitorsIds[0] = monitorId;
+ } else {
+ monitorsIds[0] = monitorId;
}
$scope.monFunctions = [
@@ -153,7 +151,7 @@ angular.module('zmApp.controllers')
{
text: $translate.instant('kButtonSave'),
onTap: function (e) {
- $scope.monfunc.mymonitorsIds.forEach( function(item, index) {
+ $scope.monfunc.mymonitorsIds.forEach(function (item, index) {
ZMDataModel.zmDebug("MonitorCtrl:changeConfig selection:" + $scope.monfunc.myenabled +
$scope.monfunc.myfunc);
var loginData = ZMDataModel.getLogin();
@@ -172,40 +170,40 @@ angular.module('zmApp.controllers')
});
var httpPromise = $http({
- url: apiMon,
- method: 'post',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Accept': '*/*',
- },
- transformRequest: function (obj) {
- var str = [];
- for (var p in obj)
- str.push(encodeURIComponent(p) + "=" +
- encodeURIComponent(obj[p]));
- var foo = str.join("&");
- // console.log("****RETURNING " + foo);
- ZMDataModel.zmDebug("MonitorCtrl: parmeters constructed: " + foo);
- return foo;
- },
- data: {
- 'Monitor[Function]': $scope.monfunc.myfunc,
- 'Monitor[Enabled]': isEnabled,
- }
-
- })
- .success(function () {
- ZMDataModel.zmDebug("MonitorCtrl: Not restarting ZM - Make sure you have the patch installed in MonitorsController.php or this won't work");
- })
- .error(function (data, status, headers, config) {
- ZMDataModel.zmDebug("MonitorCtrl: Error changing monitor " + JSON.stringify(data));
- $scope.monfunc.myfailedIds.push(item);
- });
+ url: apiMon,
+ method: 'post',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Accept': '*/*',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var foo = str.join("&");
+ // console.log("****RETURNING " + foo);
+ ZMDataModel.zmDebug("MonitorCtrl: parmeters constructed: " + foo);
+ return foo;
+ },
+ data: {
+ 'Monitor[Function]': $scope.monfunc.myfunc,
+ 'Monitor[Enabled]': isEnabled,
+ }
+
+ })
+ .success(function () {
+ ZMDataModel.zmDebug("MonitorCtrl: Not restarting ZM - Make sure you have the patch installed in MonitorsController.php or this won't work");
+ })
+ .error(function (data, status, headers, config) {
+ ZMDataModel.zmDebug("MonitorCtrl: Error changing monitor " + JSON.stringify(data));
+ $scope.monfunc.myfailedIds.push(item);
+ });
$scope.monfunc.mypromises.push(httpPromise);
});
- $q.all($scope.monfunc.mypromises).then(function(e) {
+ $q.all($scope.monfunc.mypromises).then(function (e) {
$ionicLoading.hide();
// if there's a failed ID, an error has occurred
if ($scope.monfunc.myfailedIds.length != 0) {
@@ -214,9 +212,8 @@ angular.module('zmApp.controllers')
noBackdrop: true,
duration: 3000,
});
- }
- else {
- // I am not restarting ZM after monitor change
+ } else {
+ // I am not restarting ZM after monitor change
/* ZMDataModel.zmDebug ("MonitorCtrl: Restarting ZM");
$ionicLoading.show({
template: "Successfully changed Monitor. Please wait, restarting ZoneMinder...",
@@ -521,4 +518,4 @@ angular.module('zmApp.controllers')
};
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js
index 13ded330..9d84e2a3 100644
--- a/www/js/MonitorModalCtrl.js
+++ b/www/js/MonitorModalCtrl.js
@@ -8,8 +8,8 @@
angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$rootScope', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$q', '$sce', 'carouselUtils', '$ionicPopup', 'SecuredPopups', '$translate', function ($scope, $rootScope, zm, ZMDataModel, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $q, $sce, carouselUtils, $ionicPopup, SecuredPopups, $translate) {
-
-
+
+
$scope.animationInProgress = false;
$scope.imageFit = true;
@@ -17,11 +17,11 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
var intervalModalHandle;
var nphTimer;
var ld = ZMDataModel.getLogin();
-
+
$rootScope.authSession = "undefined";
-
+
$ionicLoading.show({
- template: $translate.instant('kNegotiatingStreamAuth')+'...',
+ template: $translate.instant('kNegotiatingStreamAuth') + '...',
animation: 'fade-in',
showBackdrop: true,
duration: zm.loadingTimeout,
@@ -33,8 +33,8 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.currentStreamMode = 'single';
ZMDataModel.zmLog("Using stream mode " + $scope.currentStreamMode);
- ZMDataModel.zmDebug ("MonitorModalCtrl called from " + $ionicHistory.currentStateName());
-
+ ZMDataModel.zmDebug("MonitorModalCtrl called from " + $ionicHistory.currentStateName());
+
$rootScope.validMonitorId = $scope.monitors[0].Monitor.Id;
ZMDataModel.getAuthKey($rootScope.validMonitorId, $scope.monitors[0].Monitor.connKey)
.then(function (success) {
@@ -50,10 +50,10 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
//$rootScope.authSession="";
ZMDataModel.zmLog("Modal: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession);
});
-
-
-
- $interval.cancel(intervalModalHandle);
+
+
+
+ $interval.cancel(intervalModalHandle);
intervalModalHandle = $interval(function () {
loadModalNotifications();
@@ -61,12 +61,12 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
}.bind(this), 5000);
- $timeout.cancel(nphTimer);
- nphTimer = $timeout(function () {
- $scope.currentStreamMode = 'jpeg';
- ZMDataModel.zmLog("Switching playback via nphzms");
- }, zm.nphSwitchTimer);
-
+ $timeout.cancel(nphTimer);
+ nphTimer = $timeout(function () {
+ $scope.currentStreamMode = 'jpeg';
+ ZMDataModel.zmLog("Switching playback via nphzms");
+ }, zm.nphSwitchTimer);
+
// This is the PTZ menu
$scope.ptzRadialMenuOptions = {
@@ -111,7 +111,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
empty: true,
onclick: function () {
- // console.log('About');
+ // console.log('About');
}
},
@@ -182,86 +182,87 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
//-------------------------------------------------------------
// On re-auth, we need a new zms
//-------------------------------------------------------------
-
- $rootScope.$on("auth-success", function () {
-
- ZMDataModel.zmDebug("MonitorModalCtrl: Re-login detected, resetting everything & re-generating connkey");
- ZMDataModel.stopNetwork("MonitorModal-auth success");
- $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
-
-
+
+ $rootScope.$on("auth-success", function () {
+
+ ZMDataModel.zmDebug("MonitorModalCtrl: Re-login detected, resetting everything & re-generating connkey");
+ ZMDataModel.stopNetwork("MonitorModal-auth success");
+ $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+
+
});
-
- $scope.cast = function(mid, mon)
- {
-
- console.log ("PASSED WITH " + JSON.stringify(mon));
- //ConnectSDK.discoveryManager.startDiscovery();
-
- console.log ("Stopping");
- ConnectSDK.discoveryManager.stopDiscovery();
-
- console.log ("Starting");
- ConnectSDK.discoveryManager.startDiscovery();
- console.log ("picking");
- ConnectSDK.discoveryManager.pickDevice()
- .success(function (device) {
- //device.disconnect();
- function sendVideo (mid,mon) {
+
+ $scope.cast = function (mid, mon) {
+
+ //console.log ("PASSED WITH " + JSON.stringify(mon));
+ //ConnectSDK.discoveryManager.startDiscovery();
+
+ //console.log ("Stopping");
+ ConnectSDK.discoveryManager.stopDiscovery();
+
+ //console.log ("Starting");
+ ConnectSDK.discoveryManager.startDiscovery();
+ //console.log ("picking");
+ ConnectSDK.discoveryManager.pickDevice()
+ .success(function (device) {
+ //device.disconnect();
+ function sendVideo(mid, mon) {
//device.getMediaPlayer().playMedia("http://media.w3.org/2010/05/sintel/trailer.mp4", "video/mp4");
-
- // var url = "http://www.connectsdk.com/files/9613/9656/8539/test_image.jpg";
-
- //var url = mon.Monitor.streamingURL+"/nph-zms?mode=jpeg&monitor="+mid+$rootScope.authSession+"&rand="+$rootScope.modalRand;
-
- var ld = ZMDataModel.getLogin();
- var url = mon.Monitor.streamingURL+"/nph-zms?mode=jpeg&monitor="+mid+"&user="+ld.username+"&pass="+ld.password+"&rand="+$rootScope.modalRand;
-
- console.log ("URL: " + url);
- var iconUrl = "http://www.connectsdk.com/files/9613/9656/8539/test_image.jpg";
- var mimeType = "image/jpeg";
-
- device.getMediaPlayer().displayImage(url, mimeType, {
- title: "Monitor: "+mid,
- description: "Monitor feed",
- }).success(function (launchSession, mediaControl) {
- console.log("Image launch successful");
- }).error(function (err) {
- console.log("error: " + err.message);
- });
+
+ // var url = "http://www.connectsdk.com/files/9613/9656/8539/test_image.jpg";
+
+ //var url = mon.Monitor.streamingURL+"/nph-zms?mode=jpeg&monitor="+mid+$rootScope.authSession+"&rand="+$rootScope.modalRand;
+
+ var ld = ZMDataModel.getLogin();
+ var url = mon.Monitor.streamingURL + "/nph-zms?mode=jpeg&monitor=" + mid + "&user=" + ld.username + "&pass=" + ld.password + "&rand=" + $rootScope.modalRand;
+
+ //console.log ("URL: " + url);
+ var iconUrl = "http://www.connectsdk.com/files/9613/9656/8539/test_image.jpg";
+ var mimeType = "image/jpeg";
+
+ device.getMediaPlayer().displayImage(url, mimeType, {
+ title: "Monitor: " + mid,
+ description: "Monitor feed",
+ }).success(function (launchSession, mediaControl) {
+ //console.log("Image launch successful");
+ }).error(function (err) {
+ //console.log("error: " + err.message);
+ });
}
if (device.isReady()) { // already connected
- console.log (">>> device ready sending video");
- sendVideo(mid,mon);
+ // console.log (">>> device ready sending video");
+ sendVideo(mid, mon);
} else {
- device.on("ready", function() {sendVideo(mid,mon);});
- console.log (">>> device not ready connecting");
+ device.on("ready", function () {
+ sendVideo(mid, mon);
+ });
+ //console.log (">>> device not ready connecting");
device.connect();
}
- })
- .error (
+ })
+ .error(
function (error) {
- console.log ("ERROR");
- });
+ // console.log ("ERROR");
+ });
};
-
+
//-------------------------------------------------------------
// PTZ enable/disable
//-------------------------------------------------------------
-
-
- $scope.togglePTZ = function () {
+
+
+ $scope.togglePTZ = function () {
//console.log("PTZ");
if ($scope.isControllable == '1') {
//console.log ("iscontrollable is true");
$scope.showPTZ = !$scope.showPTZ;
-
-
+
+
} else {
$ionicLoading.show({
template: $translate.instant('kPTZnotConfigured'),
@@ -271,9 +272,9 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
}
};
-
-
+
+
//-------------------------------------------------------------
// Pause and resume handlers
//-------------------------------------------------------------
@@ -295,11 +296,11 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$interval.cancel(intervalModalHandle);
var ld = ZMDataModel.getLogin();
-
- intervalModalHandle = $interval(function () {
- loadModalNotifications();
- }.bind(this),5000);
-
+
+ intervalModalHandle = $interval(function () {
+ loadModalNotifications();
+ }.bind(this), 5000);
+
$rootScope.modalRand = Math.floor((Math.random() * 100000) + 1);
}
@@ -311,14 +312,13 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
// Queries the 1.30 API for recording state of current monitor
//-------------------------------------------------------------
function loadModalNotifications() {
-
- if (ZMDataModel.versionCompare($rootScope.apiVersion,"1.30")==-1)
- {
-
+
+ if (ZMDataModel.versionCompare($rootScope.apiVersion, "1.30") == -1) {
+
return;
}
- var status = [$translate.instant('kMonIdle'),
+ var status = [$translate.instant('kMonIdle'),
$translate.instant('kMonPreAlarm'),
$translate.instant('kMonAlarmed'),
$translate.instant('kMonAlert'),
@@ -326,41 +326,38 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
];
//console.log ("Inside Modal timer...");
var apiurl = ZMDataModel.getLogin().apiurl;
- var alarmurl = apiurl+"/monitors/alarm/id:"+$scope.monitorId+"/command:status.json";
- ZMDataModel.zmLog ("Invoking " + alarmurl);
-
-
+ var alarmurl = apiurl + "/monitors/alarm/id:" + $scope.monitorId + "/command:status.json";
+ ZMDataModel.zmLog("Invoking " + alarmurl);
+
+
$http.get(alarmurl)
- .then (function (data) {
- // ZMDataModel.zmDebug ("Success in monitor alarmed status " + JSON.stringify(data));
-
- $scope.monStatus = status[parseInt(data.data.status)];
-
- },
+ .then(function (data) {
+ // ZMDataModel.zmDebug ("Success in monitor alarmed status " + JSON.stringify(data));
+
+ $scope.monStatus = status[parseInt(data.data.status)];
+
+ },
function (error) {
-
-
- $scope.monStatus = "";
- ZMDataModel.zmDebug ("Error in monitor alarmed status ");
- });
-
+
+
+ $scope.monStatus = "";
+ ZMDataModel.zmDebug("Error in monitor alarmed status ");
+ });
+
}
-
+
//-------------------------------------------------------------
// Enable/Disable preset list
//-------------------------------------------------------------
$scope.togglePresets = function () {
$scope.presetOn = !$scope.presetOn;
-
- if ($scope.presetOn)
- {
+
+ if ($scope.presetOn) {
$scope.controlToggle = "hide buttons";
- }
- else
- {
+ } else {
$scope.controlToggle = "show buttons";
}
//console.log("Changing preset to " + $scope.presetOn);
@@ -392,12 +389,12 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
// ZMDataModel.isBackground());
return ZMDataModel.isBackground();
};
-
-
-
-
-
-
+
+
+
+
+
+
//-------------------------------------------------------------
// Send PTZ command to ZM
// Note: PTZ fails on desktop, don't bother about it
@@ -452,7 +449,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
//console.log("PTZDATA is " + JSON.stringify(ptzData));
$ionicLoading.hide();
$ionicLoading.show({
- template: $translate.instant('kPleaseWait')+"...",
+ template: $translate.instant('kPleaseWait') + "...",
noBackdrop: true,
duration: zm.loadingTimeout,
});
@@ -460,7 +457,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
var loginData = ZMDataModel.getLogin();
$ionicLoading.hide();
$ionicLoading.show({
- template: $translate.instant('kSendingPTZ')+"...",
+ template: $translate.instant('kSendingPTZ') + "...",
noBackdrop: true,
duration: zm.loadingTimeout,
});
@@ -483,14 +480,14 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
//console.log("****RETURNING " + foo);
return foo;
},
-
+
data: ptzData
});
req.success(function (resp) {
$ionicLoading.hide();
-
+
});
req.error(function (resp) {
@@ -500,9 +497,9 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
});
}
-
-
+
+
$scope.getZoomLevel = function () {
//console.log("ON RELEASE");
var zl = $ionicScrollDelegate.$getByHandle("imgscroll").getScrollPosition();
@@ -514,7 +511,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
moveToMonitor(m, d);
};
-
+
$scope.onSwipe = function (m, d) {
var ld = ZMDataModel.getLogin();
if (!ld.canSwipeMonitors) return;
@@ -630,7 +627,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$ionicLoading.hide();
-
+
}
@@ -664,111 +661,104 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
//-------------------------------------------------------------
// Turns on or off an alarm forcibly (mode true = on, false = off)
//-------------------------------------------------------------
- $scope.enableAlarm = function(mid,mode)
- {
-
+ $scope.enableAlarm = function (mid, mode) {
+
if (mode) // trigger alarm
{
- $rootScope.zmPopup = SecuredPopups.show('show',{
- title: 'Confirm',
- template: $translate.instant('kForceAlarmConfirm')+$scope.monitorName+"?",
- buttons: [
- {
- text: $translate.instant('kButtonYes'),
- onTap: function(e)
- {
- enableAlarm(mid, mode);
- }
+ $rootScope.zmPopup = SecuredPopups.show('show', {
+ title: 'Confirm',
+ template: $translate.instant('kForceAlarmConfirm') + $scope.monitorName + "?",
+ buttons: [
+ {
+ text: $translate.instant('kButtonYes'),
+ onTap: function (e) {
+ enableAlarm(mid, mode);
+ }
},
- {
- text: $translate.instant('kButtonNo'),
- onTap: function (e)
- {
- return;
- }
+ {
+ text: $translate.instant('kButtonNo'),
+ onTap: function (e) {
+ return;
+ }
}
]
-
- });
- }
- else
- enableAlarm(mid,mode);
-
- function enableAlarm(mid,mode)
- {
+
+ });
+ } else
+ enableAlarm(mid, mode);
+
+ function enableAlarm(mid, mode) {
var apiurl = ZMDataModel.getLogin().apiurl;
- var c = mode? "on":"off";
- var alarmurl = apiurl+"/monitors/alarm/id:"+mid+"/command:"+c+".json";
- ZMDataModel.zmLog ("Invoking " + alarmurl);
-
- var status = mode? $translate.instant('kForcingAlarm'): $translate.instant('kCancellingAlarm');
+ var c = mode ? "on" : "off";
+ var alarmurl = apiurl + "/monitors/alarm/id:" + mid + "/command:" + c + ".json";
+ ZMDataModel.zmLog("Invoking " + alarmurl);
+
+ var status = mode ? $translate.instant('kForcingAlarm') : $translate.instant('kCancellingAlarm');
$ionicLoading.show({
- template: status,
- noBackdrop: true,
- duration: zm.largeHttpTimeout,
- });
-
+ template: status,
+ noBackdrop: true,
+ duration: zm.largeHttpTimeout,
+ });
+
$http.get(alarmurl)
- .then (function (data) {
- $ionicLoading.show({
+ .then(function (data) {
+ $ionicLoading.show({
template: $translate.instant('kSuccess'),
noBackdrop: true,
duration: 2000,
});
- },
- function (error) {
-
- $ionicLoading.show({
+ },
+ function (error) {
+
+ $ionicLoading.show({
template: $translate.instant('kAlarmAPIError'),
noBackdrop: true,
duration: 3000,
});
- ZMDataModel.zmDebug ("Error in enableAlarm " + JSON.stringify(error));
- });
+ ZMDataModel.zmDebug("Error in enableAlarm " + JSON.stringify(error));
+ });
}
-
-
-
+
+
+
};
-
-
+
+
//-----------------------------------------------------------------------
// color for monitor state
//-----------------------------------------------------------------------
-
- $scope.stateColor = function()
- {
- var status = [$translate.instant('kMonIdle'),
+
+ $scope.stateColor = function () {
+ var status = [$translate.instant('kMonIdle'),
$translate.instant('kMonPreAlarm'),
$translate.instant('kMonAlarmed'),
$translate.instant('kMonAlert'),
$translate.instant('kMonRecord')
];
//console.log ("***MONSTATUS**"+$scope.monStatus+"**");
- var color="";
- switch ($scope.monStatus)
- {
+ var color = "";
+ switch ($scope.monStatus) {
case "":
- color="background-color:none";
+ color = "background-color:none";
break;
case status[0]:
- color="background-color:#4B77BE";
+ color = "background-color:#4B77BE";
break;
case status[1]:
- color="background-color:#e67e22";
+ color = "background-color:#e67e22";
break;
- case status[2]:
- color="background-color:#D91E18";
+ case status[2]:
+ color = "background-color:#D91E18";
break;
case status[3]:
- color="background-color:#e67e22";
+ color = "background-color:#e67e22";
break;
case status[4]:
- color="background-color:#26A65B";
+ color = "background-color:#26A65B";
break;
}
-
- return "padding-left:4px;padding-right:4px;"+color;
+
+ return "padding-left:4px;padding-right:4px;" + color;
};
@@ -778,7 +768,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.saveImageToPhone = function (mid) {
$ionicLoading.show({
- template: $translate.instant('kSavingSnapshot')+'...',
+ template: $translate.instant('kSavingSnapshot') + '...',
noBackdrop: true,
duration: zm.httpTimeout
});
@@ -824,7 +814,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
canvas.toBlob(function (blob) {
saveAs(blob, fname);
SaveSuccess();
-
+
});
}
};
@@ -854,42 +844,41 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.scaleImage = function () {
$scope.imageFit = !$scope.imageFit;
- // console.log("Switching image style to " + $scope.imageFit);
+ // console.log("Switching image style to " + $scope.imageFit);
};
$scope.$on('$ionicView.enter', function () {
-
-
-
+
+
+
});
$scope.$on('$ionicView.leave', function () {
- // console.log("**MODAL: Stopping modal timer");
+ // console.log("**MODAL: Stopping modal timer");
$scope.isModalActive = false;
$interval.cancel(intervalModalHandle);
});
-
-
+
+
$scope.$on('$ionicView.beforeLeave', function () {
-
- ZMDataModel.zmLog ("Nullifying the streams...");
-
-
+
+ ZMDataModel.zmLog("Nullifying the streams...");
+
+
var element = document.getElementById("singlemonitor");
- if (element)
- {
+ if (element) {
ZMDataModel.zmDebug("Nullifying " + element.src);
- element.src="";
+ element.src = "";
}
-
-
-
+
+
+
});
$scope.$on('$ionicView.unloaded', function () {
$scope.isModalActive = false;
-
+
$interval.cancel(intervalModalHandle);
});
@@ -898,11 +887,11 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.isModalActive = false;
//console.log("**MODAL REMOVED: Stopping modal timer");
$interval.cancel(intervalModalHandle);
-
- ZMDataModel.zmDebug ("Modal removed - killing connkey");
- controlStream(17,"",$scope.connKey,-1);
-
-
+
+ ZMDataModel.zmDebug("Modal removed - killing connkey");
+ controlStream(17, "", $scope.connKey, -1);
+
+
// Execute action
});
@@ -913,128 +902,123 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
// anyway
//-------------------------------------------------------------
-
+
function controlStream(cmd, disp, connkey, ndx) {
- // console.log("Command value " + cmd);
+ // console.log("Command value " + cmd);
- if (disp) {
- $ionicLoading.hide();
- $ionicLoading.show({
- template: $translate.instant('kPleaseWait')+'...',
- noBackdrop: true,
- duration: zm.loadingTimeout,
- });
- }
- var loginData = ZMDataModel.getLogin();
-
- /*
- var CMD_NONE = 0;
- var CMD_PAUSE = 1;
- var CMD_PLAY = 2;
- var CMD_STOP = 3;
- var CMD_FASTFWD = 4;
- var CMD_SLOWFWD = 5;
- var CMD_SLOWREV = 6;
- var CMD_FASTREV = 7;
- var CMD_ZOOMIN = 8;
- var CMD_ZOOMOUT = 9;
- var CMD_PAN = 10;
- var CMD_SCALE = 11;
- var CMD_PREV = 12;
- var CMD_NEXT = 13;
- var CMD_SEEK = 14;
- var CMD_QUIT = 17;
- var CMD_QUERY = 99;
- */
-
- var myauthtoken = $rootScope.authSession.replace("&auth=","");
+ if (disp) {
+ $ionicLoading.hide();
+ $ionicLoading.show({
+ template: $translate.instant('kPleaseWait') + '...',
+ noBackdrop: true,
+ duration: zm.loadingTimeout,
+ });
+ }
+ var loginData = ZMDataModel.getLogin();
+
+ /*
+ var CMD_NONE = 0;
+ var CMD_PAUSE = 1;
+ var CMD_PLAY = 2;
+ var CMD_STOP = 3;
+ var CMD_FASTFWD = 4;
+ var CMD_SLOWFWD = 5;
+ var CMD_SLOWREV = 6;
+ var CMD_FASTREV = 7;
+ var CMD_ZOOMIN = 8;
+ var CMD_ZOOMOUT = 9;
+ var CMD_PAN = 10;
+ var CMD_SCALE = 11;
+ var CMD_PREV = 12;
+ var CMD_NEXT = 13;
+ var CMD_SEEK = 14;
+ var CMD_QUIT = 17;
+ var CMD_QUERY = 99;
+ */
+
+ var myauthtoken = $rootScope.authSession.replace("&auth=", "");
//&auth=
- var req = $http({
- method: 'POST',
- /*timeout: 15000,*/
- url: loginData.url + '/index.php',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- //'Accept': '*/*',
- },
- transformRequest: function (obj) {
- var str = [];
- for (var p in obj)
- str.push(encodeURIComponent(p) + "=" +
- encodeURIComponent(obj[p]));
- var foo = str.join("&");
- //console.log("****RETURNING " + foo);
- return foo;
- },
+ var req = $http({
+ method: 'POST',
+ /*timeout: 15000,*/
+ url: loginData.url + '/index.php',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ //'Accept': '*/*',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var foo = str.join("&");
+ //console.log("****RETURNING " + foo);
+ return foo;
+ },
- data: {
- view: "request",
- request: "stream",
- connkey: connkey,
- command: cmd,
- auth: myauthtoken,
-
- }
- });
- req.success(function (resp) {
+ data: {
+ view: "request",
+ request: "stream",
+ connkey: connkey,
+ command: cmd,
+ auth: myauthtoken,
+
+ }
+ });
+ req.success(function (resp) {
+
+ if (resp.result == "Ok" && ndx != -1) {
+ var ld = ZMDataModel.getLogin();
+ var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json";
+ //console.log ("API " + apiurl);
+ $http.get(apiurl)
+ .success(function (data) {
+ if ($scope.MontageMonitors[ndx].eventUrlTime != data.event.Event.StartTime) {
+
+ var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id + "-timeline"));
+ element.removeClass('animated slideInRight');
+ element.addClass('animated slideOutRight');
+ $timeout(function () {
+ element.removeClass('animated slideOutRight');
+ element.addClass('animated slideInRight');
+ $scope.MontageMonitors[ndx].eventUrlTime = data.event.Event.StartTime;
+ }, 300);
- if (resp.result=="Ok" && ndx != -1)
- {
- var ld = ZMDataModel.getLogin();
- var apiurl= ld.apiurl + "/events/"+resp.status.event+".json";
- //console.log ("API " + apiurl);
- $http.get (apiurl)
- .success (function (data)
- {
- if ($scope.MontageMonitors[ndx].eventUrlTime!=data.event.Event.StartTime)
- {
-
- var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id+"-timeline"));
- element.removeClass ('animated slideInRight');
- element.addClass('animated slideOutRight');
- $timeout (function() {
- element.removeClass ('animated slideOutRight');
- element.addClass('animated slideInRight');
- $scope.MontageMonitors[ndx].eventUrlTime=data.event.Event.StartTime;
- },300);
-
}
-
+
})
- .error (function (data)
- {
- $scope.MontageMonitors[ndx].eventUrlTime="-";
+ .error(function (data) {
+ $scope.MontageMonitors[ndx].eventUrlTime = "-";
});
-
- }
- });
+ }
- req.error(function (resp) {
- //console.log("ERROR: " + JSON.stringify(resp));
- ZMDataModel.zmLog("Error sending event command " + JSON.stringify(resp), "error");
- });
- }
+ });
+
+ req.error(function (resp) {
+ //console.log("ERROR: " + JSON.stringify(resp));
+ ZMDataModel.zmLog("Error sending event command " + JSON.stringify(resp), "error");
+ });
+ }
//-------------------------------------------------------------
// Zoom in and out via +- for desktops
//-------------------------------------------------------------
- $scope.zoomImage = function (val)
- {
+ $scope.zoomImage = function (val) {
var zl = parseInt($ionicScrollDelegate.$getByHandle("imgscroll").getScrollPosition().zoom);
- if (zl == 1 && val == -1)
- {
- ZMDataModel.zmDebug ("Already zoomed out max");
+ if (zl == 1 && val == -1) {
+ ZMDataModel.zmDebug("Already zoomed out max");
return;
}
-
-
- zl+=val;
- ZMDataModel.zmDebug ("Zoom level is " + zl); $ionicScrollDelegate.$getByHandle("imgscroll").zoomTo(zl,true);
-
+
+
+ zl += val;
+ ZMDataModel.zmDebug("Zoom level is " + zl);
+ $ionicScrollDelegate.$getByHandle("imgscroll").zoomTo(zl, true);
+
};
-
+
//-------------------------------------------------------------
// Retrieves PTZ state for each monitor
@@ -1043,206 +1027,210 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
// $scope.isControllable
// $scope.controlid
//
- function configurePTZ(mid)
- {
+ function configurePTZ(mid) {
$scope.presetAndControl = $translate.instant('kMore');
- $scope.ptzWakeCommand = "";
+ $scope.ptzWakeCommand = "";
$scope.ptzSleepCommand = "";
$scope.ptzResetCommand = "";
$scope.ptzMoveCommand = "";
$scope.ptzStopCommand = "";
-
+
$scope.zoomInCommand = "";
$scope.zoomOutCommand = "";
$scope.zoomStopCommand = "zoomStop";
$scope.canZoom = false;
-
+
$scope.presetOn = true;
$scope.controlToggle = "hide buttons";
-
- ZMDataModel.zmDebug ("configurePTZ: called with mid="+mid);
+
+ ZMDataModel.zmDebug("configurePTZ: called with mid=" + mid);
var ld = ZMDataModel.getLogin();
- var url = ld.apiurl+"/monitors/"+mid+".json";
- $http.get (url)
- .success (function (data)
- {
- $scope.isControllable = data.monitor.Monitor.Controllable;
-
- // *** Only for testing - comment out //
- //$scope.isControllable = '1';
- // for testing only
- // $scope.isControllable = 1;
- $scope.controlid = data.monitor.Monitor.ControlId;
- if ($scope.isControllable=='1' )
- {
-
-
- var apiurl = ZMDataModel.getLogin().apiurl;
- var myurl = apiurl + "/controls/" + $scope.controlid + ".json";
- ZMDataModel.zmDebug("configurePTZ : getting controllable data " + myurl);
+ var url = ld.apiurl + "/monitors/" + mid + ".json";
+ $http.get(url)
+ .success(function (data) {
+ $scope.isControllable = data.monitor.Monitor.Controllable;
+
+ // *** Only for testing - comment out //
+ //$scope.isControllable = '1';
+ // for testing only
+ // $scope.isControllable = 1;
+ $scope.controlid = data.monitor.Monitor.ControlId;
+ if ($scope.isControllable == '1') {
+
+
+ var apiurl = ZMDataModel.getLogin().apiurl;
+ var myurl = apiurl + "/controls/" + $scope.controlid + ".json";
+ ZMDataModel.zmDebug("configurePTZ : getting controllable data " + myurl);
+
+ $http.get(myurl)
+ .success(function (data) {
+
+ // *** Only for testing - comment out - start//
+ /*data.Control.Control.CanSleep = '1';
+ data.Control.Control.CanWake = '1';
+ data.Control.Control.CanReset = '1';
+ data.Control.Control.CanZoom = '1';
+ data.control.Control.HasPresets = '1';
+ data.control.Control.HasHomePreset = '1';*/
+ // *** Only for testing - comment out - end //
+
+
+
+ $scope.ptzMoveCommand = "move"; // start with as move;
+ $scope.ptzStopCommand = "";
+
+ if (data.control.Control.CanZoom == '1') {
+ $scope.canZoom = true;
+ if (data.control.Control.CanZoomCon == '1') {
+ $scope.zoomInCommand = "zoomConTele";
+ $scope.zoomOutCommand = "zoomConWide";
+
+ } else if (data.control.Control.CanZoomRel == '1') {
+ $scope.zoomInCommand = "zoomRelTele";
+ $scope.zoomOutCommand = "zoomRelWide";
+ } else if (data.control.Control.CanZoomAbs == '1') {
+ $scope.zoomInCommand = "zoomRelAbs";
+ $scope.zoomOutCommand = "zoomRelAbs";
+ }
+ }
- $http.get(myurl)
- .success(function (data) {
-
- // *** Only for testing - comment out - start//
- /*data.Control.Control.CanSleep = '1';
- data.Control.Control.CanWake = '1';
- data.Control.Control.CanReset = '1';
- data.Control.Control.CanZoom = '1';
- data.control.Control.HasPresets = '1';
- data.control.Control.HasHomePreset = '1';*/
- // *** Only for testing - comment out - end //
-
-
-
- $scope.ptzMoveCommand = "move"; // start with as move;
- $scope.ptzStopCommand = "";
-
- if (data.control.Control.CanZoom=='1')
- {
- $scope.canZoom = true;
- if (data.control.Control.CanZoomCon == '1')
- {
- $scope.zoomInCommand = "zoomConTele";
- $scope.zoomOutCommand = "zoomConWide";
-
- }
- else if (data.control.Control.CanZoomRel == '1')
- {
- $scope.zoomInCommand = "zoomRelTele";
- $scope.zoomOutCommand = "zoomRelWide";
- }
-
- else if (data.control.Control.CanZoomAbs == '1')
- {
- $scope.zoomInCommand = "zoomRelAbs";
- $scope.zoomOutCommand = "zoomRelAbs";
- }
- }
-
- ZMDataModel.zmDebug("configurePTZ: control data returned " + JSON.stringify(data));
-
- if (data.control.Control.CanMoveRel == '1')
- {
-
- $scope.ptzMoveCommand = "moveRel";
- $scope.ptzStopCommand = "moveStop";
- }
-
- // Prefer con over rel if both enabled
- // I've tested con
-
- if (data.control.Control.CanMoveCon == '1')
- {
-
- $scope.ptzMoveCommand = "moveCon";
- $scope.ptzStopCommand = "moveStop";
- }
-
-
-
- // presets
- ZMDataModel.zmDebug ("ConfigurePTZ Preset value is " +data.control.Control.HasPresets);
- $scope.ptzPresets = [];
-
- if (data.control.Control.HasPresets == '1')
- {
- //$scope.presetAndControl = $translate.instant('kPresets');
-
- $scope.ptzPresetCount = parseInt(data.control.Control.NumPresets);
-
- ZMDataModel.zmDebug ("ConfigurePTZ Number of presets is " + $scope.ptzPresetCount);
-
-
- for (var p=0; p<$scope.ptzPresetCount; p++)
- {
- $scope.ptzPresets.push ({name:(p+1).toString(), icon:'', cmd:"presetGoto"+(p+1).toString(), style:'button-royal'});
-
- }
-
- if (data.control.Control.HasHomePreset == '1')
- {
- $scope.ptzPresets.unshift({name:'', icon:"ion-ios-home", cmd:'presetHome' , style:'button-royal'});
-
- }
-
-
-
- }
- /*else
- {
- $scope.presetAndControl = $translate.instant('kMore');
- }*/
- // lets add these to the end
- // strictly speaking, they aren't really presets, but meh for now
-
- // no need to darken these buttons if presets are not there
- var buttonAccent = "button-dark";
- if ($scope.ptzPresets.length == 0)
- {
- buttonAccent = "";
- }
-
- if (data.control.Control.CanWake == '1')
- {
+ ZMDataModel.zmDebug("configurePTZ: control data returned " + JSON.stringify(data));
- $scope.ptzPresets.push({name:'W', icon:"ion-eye", cmd:'wake', style:'button-royal '+buttonAccent});
+ if (data.control.Control.CanMoveRel == '1') {
- }
+ $scope.ptzMoveCommand = "moveRel";
+ $scope.ptzStopCommand = "moveStop";
+ }
+
+ // Prefer con over rel if both enabled
+ // I've tested con
+
+ if (data.control.Control.CanMoveCon == '1') {
+
+ $scope.ptzMoveCommand = "moveCon";
+ $scope.ptzStopCommand = "moveStop";
+ }
+
+
+
+ // presets
+ ZMDataModel.zmDebug("ConfigurePTZ Preset value is " + data.control.Control.HasPresets);
+ $scope.ptzPresets = [];
+
+ if (data.control.Control.HasPresets == '1') {
+ //$scope.presetAndControl = $translate.instant('kPresets');
+
+ $scope.ptzPresetCount = parseInt(data.control.Control.NumPresets);
+
+ ZMDataModel.zmDebug("ConfigurePTZ Number of presets is " + $scope.ptzPresetCount);
+
+
+ for (var p = 0; p < $scope.ptzPresetCount; p++) {
+ $scope.ptzPresets.push({
+ name: (p + 1).toString(),
+ icon: '',
+ cmd: "presetGoto" + (p + 1).toString(),
+ style: 'button-royal'
+ });
+
+ }
+
+ if (data.control.Control.HasHomePreset == '1') {
+ $scope.ptzPresets.unshift({
+ name: '',
+ icon: "ion-ios-home",
+ cmd: 'presetHome',
+ style: 'button-royal'
+ });
+
+ }
+
+
+
+ }
+ /*else
+ {
+ $scope.presetAndControl = $translate.instant('kMore');
+ }*/
+ // lets add these to the end
+ // strictly speaking, they aren't really presets, but meh for now
+
+ // no need to darken these buttons if presets are not there
+ var buttonAccent = "button-dark";
+ if ($scope.ptzPresets.length == 0) {
+ buttonAccent = "";
+ }
+
+ if (data.control.Control.CanWake == '1') {
+
+ $scope.ptzPresets.push({
+ name: 'W',
+ icon: "ion-eye",
+ cmd: 'wake',
+ style: 'button-royal ' + buttonAccent
+ });
+
+ }
+
+ if (data.control.Control.CanSleep == '1') {
+ $scope.ptzPresets.push({
+ name: 'S',
+ icon: "ion-eye-disabled",
+ cmd: 'sleep',
+ style: 'button-royal ' + buttonAccent
+ });
+
+ }
+
+ if (data.control.Control.CanReset == '1') {
+ $scope.ptzPresets.push({
+ name: 'R',
+ icon: "ion-ios-loop-strong",
+ cmd: 'reset',
+ style: 'button-royal ' + buttonAccent
+ });
+
+ }
+
+
+ ZMDataModel.zmLog("ConfigurePTZ Modal: ControlDB reports PTZ command to be " + $scope.ptzMoveCommand);
+ })
+ .error(function (data) {
+ // console.log("** Error retrieving move PTZ command");
+ ZMDataModel.zmLog("ConfigurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error");
+ });
+
+ } else {
+ ZMDataModel.zmLog("configurePTZ " + mid + " is not PTZ controllable");
+ }
+ })
+ .error(function (data) {
+ // console.log("** Error retrieving move PTZ command");
+ ZMDataModel.zmLog("configurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error");
+ });
- if (data.control.Control.CanSleep == '1')
- {
- $scope.ptzPresets.push({name:'S', icon:"ion-eye-disabled", cmd:'sleep', style:'button-royal '+buttonAccent});
- }
- if (data.control.Control.CanReset == '1')
- {
- $scope.ptzPresets.push({name:'R', icon:"ion-ios-loop-strong", cmd:'reset', style:'button-royal '+buttonAccent});
-
- }
-
-
- ZMDataModel.zmLog("ConfigurePTZ Modal: ControlDB reports PTZ command to be " + $scope.ptzMoveCommand);
- })
- .error(function (data) {
- // console.log("** Error retrieving move PTZ command");
- ZMDataModel.zmLog("ConfigurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error");
- });
-
- }
- else
- {
- ZMDataModel.zmLog ("configurePTZ " + mid+" is not PTZ controllable");
- }
- })
- .error(function (data) {
- // console.log("** Error retrieving move PTZ command");
- ZMDataModel.zmLog("configurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error");
- });
-
-
-
}
-
-
+
+
$scope.$on('modal.shown', function () {
-
+
$scope.monStatus = "";
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
-
+
var ld = ZMDataModel.getLogin();
//currentEvent = $scope.currentEvent;
- $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- console.log ("************* GENERATED CONNKEY " + $scope.connKey);
+ $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ //console.log ("************* GENERATED CONNKEY " + $scope.connKey);
$scope.currentFrame = 1;
$scope.monStatus = "";
-
+
configurePTZ($scope.monitorId);
});
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js
index 595f61f1..73de328b 100644
--- a/www/js/MontageCtrl.js
+++ b/www/js/MontageCtrl.js
@@ -4,7 +4,7 @@
/* global cordova,StatusBar,angular,console,ionic,Packery, Draggabilly, imagesLoaded, ConnectSDK */
-angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '$rootScope', 'ZMDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$ionicPopup', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', 'zm', '$ionicPopover', '$controller', 'imageLoadingDataShare', '$window', '$localstorage', '$translate', function ($scope, $rootScope, ZMDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $ionicPopup, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, zm, $ionicPopover, $controller, imageLoadingDataShare, $window, $localstorage, $translate) {
+angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '$rootScope', 'ZMDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$ionicPopup', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', 'zm', '$ionicPopover', '$controller', 'imageLoadingDataShare', '$window', '$localstorage', '$translate', function ($scope, $rootScope, ZMDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $ionicPopup, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, zm, $ionicPopover, $controller, imageLoadingDataShare, $window, $localstorage, $translate) {
//---------------------------------------------------------------------
// Controller main
@@ -12,8 +12,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
var intervalHandleMontage; // image re-load handler
var intervalHandleAlarmStatus; // status of each alarm state
-
-
+
+
var gridcontainer;
var pckry, draggie;
var draggies;
@@ -22,40 +22,34 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
var sizeInProgress;
var modalIntervalHandle;
var ld;
-
-
- // --------------------------------------------------------
+
+
+ // --------------------------------------------------------
// Handling of back button in case modal is open should
// close the modal
// --------------------------------------------------------
-
-
+
+
$ionicPlatform.registerBackButtonAction(function (e) {
- e.preventDefault();
- if ($scope.modal !=undefined && $scope.modal.isShown())
- {
- // switch off awake, as liveview is finished
- ZMDataModel.zmDebug("Modal is open, closing it");
- ZMDataModel.setAwake(false);
- $scope.isModalActive = false;
- cleanupOnClose();
- }
- else
- {
- ZMDataModel.zmDebug("Modal is closed, so toggling or exiting");
- if (!$ionicSideMenuDelegate.isOpenLeft())
- {
- $ionicSideMenuDelegate.toggleLeft();
-
- }
- else
- {
- navigator.app.exitApp();
- }
-
+ e.preventDefault();
+ if ($scope.modal != undefined && $scope.modal.isShown()) {
+ // switch off awake, as liveview is finished
+ ZMDataModel.zmDebug("Modal is open, closing it");
+ ZMDataModel.setAwake(false);
+ $scope.isModalActive = false;
+ cleanupOnClose();
+ } else {
+ ZMDataModel.zmDebug("Modal is closed, so toggling or exiting");
+ if (!$ionicSideMenuDelegate.isOpenLeft()) {
+ $ionicSideMenuDelegate.toggleLeft();
+
+ } else {
+ navigator.app.exitApp();
}
-
- }, 1000);
+
+ }
+
+ }, 1000);
/*$scope.toggleHide = function(mon)
{
@@ -69,362 +63,343 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
};*/
-
-
-// called by afterEnter to load Packery
-function initPackery()
-{
-
-
+
+
+ // called by afterEnter to load Packery
+ function initPackery() {
+
+
$ionicLoading.show({
- template: $translate.instant('kArrangingImages'),
- noBackdrop: true,
- duration: zm.loadingTimeout
- });
-
+ template: $translate.instant('kArrangingImages'),
+ noBackdrop: true,
+ duration: zm.loadingTimeout
+ });
+
var progressCalled = false;
draggies = [];
var layouttype = true;
var ld = ZMDataModel.getLogin();
-
-
+
+
var positionsStr = ld.packeryPositions;
- var positions={};
-
- if (positionsStr == '')
- {
- ZMDataModel.zmLog ("Did NOT find a packery layout");
- layouttype = true;
- }
- else
- {
-
- console.log ("POSITION STR IS " + positionsStr);
+ var positions = {};
+
+ if (positionsStr == '') {
+ ZMDataModel.zmLog("Did NOT find a packery layout");
+ layouttype = true;
+ } else {
+
+ //console.log ("POSITION STR IS " + positionsStr);
positions = JSON.parse(positionsStr);
- ZMDataModel.zmLog ("found a packery layout");
+ ZMDataModel.zmLog("found a packery layout");
layouttype = false;
}
-
-
- var cnt=0;
- $scope.MontageMonitors.forEach(function(elem)
- {
- if ((elem.Monitor.Enabled!='0') && (elem.Monitor.Function!='None') )
+
+
+ var cnt = 0;
+ $scope.MontageMonitors.forEach(function (elem) {
+ if ((elem.Monitor.Enabled != '0') && (elem.Monitor.Function != 'None'))
cnt++;
});
-
- ZMDataModel.zmLog ("Monitors that are active and not DOM hidden: " + cnt + " while grid has " + positions.length);
-
- if (cnt > ZMDataModel.getLogin().maxMontage )
- {
- cnt = ZMDataModel.getLogin().maxMontage;
- ZMDataModel.zmLog ("restricting monitor count to " + cnt + " due to max-montage setting");
- }
-
- if (cnt!= positions.length)
- {
-
- ZMDataModel.zmLog ("Whoops!! Monitors have changed. I'm resetting layouts, sorry!");
- layouttype = true;
- positions = {};
- }
-
- var elem = angular.element(document.getElementById("mygrid"));
-
- //console.log ("**** mygrid is " + JSON.stringify(elem));
-
- imagesLoaded(elem).on('progress', function(instance, img) {
-
- progressCalled = true;
-
- // if (layouttype) $timeout (function(){layout(pckry);},100);
+
+ ZMDataModel.zmLog("Monitors that are active and not DOM hidden: " + cnt + " while grid has " + positions.length);
+
+ if (cnt > ZMDataModel.getLogin().maxMontage) {
+ cnt = ZMDataModel.getLogin().maxMontage;
+ ZMDataModel.zmLog("restricting monitor count to " + cnt + " due to max-montage setting");
+ }
+
+ if (cnt != positions.length) {
+
+ ZMDataModel.zmLog("Whoops!! Monitors have changed. I'm resetting layouts, sorry!");
+ layouttype = true;
+ positions = {};
+ }
+
+ var elem = angular.element(document.getElementById("mygrid"));
+
+ //console.log ("**** mygrid is " + JSON.stringify(elem));
+
+ imagesLoaded(elem).on('progress', function (instance, img) {
+
+ progressCalled = true;
+
+ // if (layouttype) $timeout (function(){layout(pckry);},100);
});
-
- imagesLoaded(elem).on('always', function() {
- //console.log ("******** ALL IMAGES LOADED");
- ZMDataModel.zmDebug ("All images loaded");
- $scope.allImagesLoaded = true;
-
- $ionicLoading.hide();
-
- pckry = new Packery('.grid',
- {
- itemSelector: '.grid-item',
- percentPosition: true,
- columnWidth: '.grid-sizer',
- gutter:0,
- initLayout:layouttype
-
- });
- if (!progressCalled)
- {
- ZMDataModel.zmLog ("*** BUG PROGRESS WAS NOT CALLED");
- pckry.reloadItems();
-
- }
-
- $timeout (function() {
-
- pckry.getItemElements().forEach(function (itemElem) {
- draggie = new Draggabilly(itemElem);
- pckry.bindDraggabillyEvents(draggie);
- draggies.push(draggie);
- draggie.disable();
- draggie.unbindHandles();
- });
-
- pckry.on( 'dragItemPositioned', itemDragged );
-
-
-
- if (!isEmpty(positions))
- {
- ZMDataModel.zmLog ("Arranging as per packery grid");
-
- for (var i =0; i< $scope.MontageMonitors.length; i++)
- {
- for (var j=0; j < positions.length; j++)
- {
- if ($scope.MontageMonitors[i].Monitor.Id == positions[j].attr)
- {
- $scope.MontageMonitors[i].Monitor.gridScale = positions[j].size;
- $scope.MontageMonitors[i].Monitor.listDisplay = positions[j].display;
- ZMDataModel.zmDebug ("Setting monitor ID: " + $scope.MontageMonitors[i].Monitor.Id + " to size: " +positions[j].size + " and display:" + positions[j].display);
- }
- //console.log ("Index:"+positions[j].attr+ " with size: " + positions[j].size);
+
+ imagesLoaded(elem).on('always', function () {
+ //console.log ("******** ALL IMAGES LOADED");
+ ZMDataModel.zmDebug("All images loaded");
+ $scope.allImagesLoaded = true;
+
+ $ionicLoading.hide();
+
+ pckry = new Packery('.grid', {
+ itemSelector: '.grid-item',
+ percentPosition: true,
+ columnWidth: '.grid-sizer',
+ gutter: 0,
+ initLayout: layouttype
+
+ });
+ if (!progressCalled) {
+ ZMDataModel.zmLog("*** BUG PROGRESS WAS NOT CALLED");
+ pckry.reloadItems();
+
+ }
+
+ $timeout(function () {
+
+ pckry.getItemElements().forEach(function (itemElem) {
+ draggie = new Draggabilly(itemElem);
+ pckry.bindDraggabillyEvents(draggie);
+ draggies.push(draggie);
+ draggie.disable();
+ draggie.unbindHandles();
+ });
+
+ pckry.on('dragItemPositioned', itemDragged);
+
+
+
+ if (!isEmpty(positions)) {
+ ZMDataModel.zmLog("Arranging as per packery grid");
+
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
+ for (var j = 0; j < positions.length; j++) {
+ if ($scope.MontageMonitors[i].Monitor.Id == positions[j].attr) {
+ $scope.MontageMonitors[i].Monitor.gridScale = positions[j].size;
+ $scope.MontageMonitors[i].Monitor.listDisplay = positions[j].display;
+ ZMDataModel.zmDebug("Setting monitor ID: " + $scope.MontageMonitors[i].Monitor.Id + " to size: " + positions[j].size + " and display:" + positions[j].display);
}
+ //console.log ("Index:"+positions[j].attr+ " with size: " + positions[j].size);
}
+ }
+
+
+ ZMDataModel.zmDebug("All images loaded, doing image layout");
+ $timeout(function () {
+ pckry.initShiftLayout(positions, 'data-item-id');
+ }, 0);
+ }
+ $timeout(function () {
+ ZMDataModel.zmLog("Force calling resize");
+ pckry.shiftLayout();
+ }, zm.packeryTimer); // don't ask
- ZMDataModel.zmDebug ("All images loaded, doing image layout");
- $timeout (function() {pckry.initShiftLayout(positions, 'data-item-id');},0);
- }
- $timeout(function(){ZMDataModel.zmLog ("Force calling resize"); pckry.shiftLayout();},zm.packeryTimer);// don't ask
-
-
- },zm.packeryTimer);
-
+ }, zm.packeryTimer);
+
});
-
- function itemDragged(item)
- {
- ZMDataModel.zmDebug ("drag complete");
-
- pckry.getItemElements().forEach(function (itemElem) {
-
- console.log (itemElem.attributes['data-item-id'].value+" size "+itemElem.attributes['data-item-size'].value );
- });
-
+
+ function itemDragged(item) {
+ ZMDataModel.zmDebug("drag complete");
+
+ //pckry.getItemElements().forEach(function (itemElem) {
+
+ //console.log (itemElem.attributes['data-item-id'].value+" size "+itemElem.attributes['data-item-size'].value );
+ // });
+
var positions = pckry.getShiftPositions('data-item-id');
- //console.log ("POSITIONS MAP " + JSON.stringify(positions));
- var ld = ZMDataModel.getLogin();
- ld.packeryPositions = JSON.stringify(positions);
- ZMDataModel.setLogin(ld);
+ //console.log ("POSITIONS MAP " + JSON.stringify(positions));
+ var ld = ZMDataModel.getLogin();
+ ld.packeryPositions = JSON.stringify(positions);
+ ZMDataModel.setLogin(ld);
}
-
-
+
+
}
-
- function isEmpty( obj )
- {
- for ( var prop in obj ) {
- return false;
- }
- return true;
+
+ function isEmpty(obj) {
+ for (var prop in obj) {
+ return false;
+ }
+ return true;
}
-
+
//-----------------------------------------------------------------------
// color for monitor state in montage
//-----------------------------------------------------------------------
-
- $scope.stateColor = function()
- {
- console.log ("***MONSTATUS**"+$scope.monStatus+"**");
- var attr="";
- switch ($scope.monStatus)
- {
+
+ $scope.stateColor = function () {
+ //console.log ("***MONSTATUS**"+$scope.monStatus+"**");
+ var attr = "";
+ switch ($scope.monStatus) {
case "":
- attr="color:rgba(0, 0, 0, 0)";
+ attr = "color:rgba(0, 0, 0, 0)";
break;
case "idle":
- attr="color:rgba(0, 0, 0, 0)";
+ attr = "color:rgba(0, 0, 0, 0)";
break;
case "pre-alarm":
- attr="color:#e67e22";
+ attr = "color:#e67e22";
break;
case "alarmed":
- attr="color:#D91E18";
+ attr = "color:#D91E18";
break;
case "alert":
- attr="color:#e67e22";
+ attr = "color:#e67e22";
break;
case "record":
- attr="color:#26A65B";
+ attr = "color:#26A65B";
break;
}
-
+
return attr;
};
//-----------------------------------------------------------------------
// cycle through all displayed monitors and check alarm status
//-----------------------------------------------------------------------
-
- function loadAlarmStatus()
- {
-
- if (ZMDataModel.versionCompare($rootScope.apiVersion,"1.30")==-1)
- {
-
+
+ function loadAlarmStatus() {
+
+ if (ZMDataModel.versionCompare($rootScope.apiVersion, "1.30") == -1) {
+
return;
}
-
- for (var i=0; i < $scope.MontageMonitors.length; i++)
- {
- if (($scope.MontageMonitors[i].Monitor.Function == 'None') ||
+
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
+ if (($scope.MontageMonitors[i].Monitor.Function == 'None') ||
($scope.MontageMonitors[i].Monitor.Enabled == '0') ||
- ($scope.MontageMonitors[i].Monitor.listDisplay == 'noshow'))
- {
+ ($scope.MontageMonitors[i].Monitor.listDisplay == 'noshow')) {
continue;
}
getAlarmStatus($scope.MontageMonitors[i]);
-
+
}
-
+
}
-
- //-----------------------------------------------------------------------
+
+ //-----------------------------------------------------------------------
// get alarm status over HTTP for a single monitor
//-----------------------------------------------------------------------
- function getAlarmStatus(monitor)
- {
+ function getAlarmStatus(monitor) {
var apiurl = ZMDataModel.getLogin().apiurl;
//console.log ("ALARM CALLED WITH " +JSON.stringify(monitor));
-
- var alarmurl = apiurl+"/monitors/alarm/id:"+monitor.Monitor.Id+"/command:status.json";
- // console.log("Alarm Check: Invoking " + alarmurl);
-
-
+
+ var alarmurl = apiurl + "/monitors/alarm/id:" + monitor.Monitor.Id + "/command:status.json";
+ // console.log("Alarm Check: Invoking " + alarmurl);
+
+
$http.get(alarmurl)
- .then (function (data) {
- // ZMDataModel.zmDebug ("Success in monitor alarmed status " + JSON.stringify(data));
-
- var sid = parseInt(data.data.status);
- switch (sid) {
- case 0: // idle
- monitor.Monitor.alarmState = 'color:rgba(0,0,0,0);';
- break;
- case 1:// pre alarm
- monitor.Monitor.alarmState = 'color:#e67e22;';
- break;
- case 2: // alarm
- monitor.Monitor.alarmState = 'color:#D91E18;';
- break;
- case 3: // alert
- monitor.Monitor.alarmState = 'color:#e67e22;';
- break;
- case 4:
- monitor.Monitor.alarmState = 'color:#26A65B;';
- break;
-
- }
-
- },
+ .then(function (data) {
+ // ZMDataModel.zmDebug ("Success in monitor alarmed status " + JSON.stringify(data));
+
+ var sid = parseInt(data.data.status);
+ switch (sid) {
+ case 0: // idle
+ monitor.Monitor.alarmState = 'color:rgba(0,0,0,0);';
+ break;
+ case 1: // pre alarm
+ monitor.Monitor.alarmState = 'color:#e67e22;';
+ break;
+ case 2: // alarm
+ monitor.Monitor.alarmState = 'color:#D91E18;';
+ break;
+ case 3: // alert
+ monitor.Monitor.alarmState = 'color:#e67e22;';
+ break;
+ case 4:
+ monitor.Monitor.alarmState = 'color:#26A65B;';
+ break;
+
+ }
+
+ },
function (error) {
-
-
- monitor.Monitor.alarmState = 'color:rgba(0,0,0,0);';
- ZMDataModel.zmDebug ("Error in monitor alarmed status ");
- });
+
+
+ monitor.Monitor.alarmState = 'color:rgba(0,0,0,0);';
+ ZMDataModel.zmDebug("Error in monitor alarmed status ");
+ });
}
-
-
- //-----------------------------------------------------------------------
+
+
+ //-----------------------------------------------------------------------
// re-compute rand so snapshot in montage reloads
//-----------------------------------------------------------------------
-
+
function loadNotifications() {
-
- if (!$scope.allImagesLoaded)
- {
- ZMDataModel.zmDebug ("skipping image refresh, packery is still loading");
+
+ if (!$scope.allImagesLoaded) {
+ ZMDataModel.zmDebug("skipping image refresh, packery is still loading");
return;
}
-
+
$rootScope.rand = Math.floor((Math.random() * 100000) + 1);
//console.log ("Inside Montage timer...");
}
- $scope.cancelReorder = function()
- {
- $scope.modal.remove();
+ $scope.cancelReorder = function () {
+ $scope.modal.remove();
};
-
- $scope.saveReorder = function()
- {
- ZMDataModel.zmDebug ("Saving monitor hide/unhide and sizes");
-
-
-
-
+
+ $scope.saveReorder = function () {
+ ZMDataModel.zmDebug("Saving monitor hide/unhide and sizes");
+
+
+
+
$scope.MontageMonitors = $scope.copyMontage;
$scope.modal.remove();
- $timeout( function() {pckry.reloadItems();},400);
- $timeout( function() {
-
+ $timeout(function () {
+ pckry.reloadItems();
+ }, 400);
+ $timeout(function () {
+
draggies.forEach(function (drag) {
drag.destroy();
});
-
+
draggies = [];
-
- pckry.once( 'layoutComplete', function() {
- console.log('Saving packery order now, layout rendered');
- $timeout(function() {var positions = pckry.getShiftPositions('data-item-id');
- ZMDataModel.zmDebug ("POSITIONS MAP " + JSON.stringify(positions));
- var ld = ZMDataModel.getLogin();
- ld.packeryPositions = JSON.stringify(positions);
- ZMDataModel.setLogin(ld);});
+
+ pckry.once('layoutComplete', function () {
+ //console.log('Saving packery order now, layout rendered');
+ $timeout(function () {
+ var positions = pckry.getShiftPositions('data-item-id');
+ ZMDataModel.zmDebug("POSITIONS MAP " + JSON.stringify(positions));
+ var ld = ZMDataModel.getLogin();
+ ld.packeryPositions = JSON.stringify(positions);
+ ZMDataModel.setLogin(ld);
+ });
});
-
+
pckry.getItemElements().forEach(function (itemElem) {
- draggie = new Draggabilly(itemElem);
- pckry.bindDraggabillyEvents(draggie);
- draggies.push(draggie);
- draggie.disable();
- });
+ draggie = new Draggabilly(itemElem);
+ pckry.bindDraggabillyEvents(draggie);
+ draggies.push(draggie);
+ draggie.disable();
+ });
pckry.layout();
-
- },800);
-
- $ionicScrollDelegate.$getByHandle("montage-delegate").scrollTop();
-
+
+ }, 800);
+
+ $ionicScrollDelegate.$getByHandle("montage-delegate").scrollTop();
+
};
-
- $scope.toggleDelete = function (i)
- {
-
+
+ $scope.toggleDelete = function (i) {
+
if ($scope.copyMontage[i].Monitor.listDisplay == 'show')
$scope.copyMontage[i].Monitor.listDisplay = 'noshow';
else
$scope.copyMontage[i].Monitor.listDisplay = 'show';
-
- ZMDataModel.zmDebug ("index " + i + " is now " + $scope.copyMontage[i].Monitor.listDisplay);
+
+ ZMDataModel.zmDebug("index " + i + " is now " + $scope.copyMontage[i].Monitor.listDisplay);
};
-
- $scope.hideUnhide = function()
- {
- if ($scope.isDragabillyOn)
- {
- dragToggle();
+
+ $scope.hideUnhide = function () {
+ if ($scope.isDragabillyOn) {
+ dragToggle();
}
- $scope.copyMontage = angular.copy ($scope.MontageMonitors);
+ $scope.copyMontage = angular.copy($scope.MontageMonitors);
$ionicModal.fromTemplateUrl('templates/reorder-modal.html', {
scope: $scope,
animation: 'slide-in-up'
@@ -434,17 +409,17 @@ function initPackery()
$scope.modal.show();
});
};
-
-
-
-/*
- $scope.closeReorderModal = function () {
-
- $scope.modal.remove();
- };
- */
-
+
+
+ /*
+ $scope.closeReorderModal = function () {
+
+ $scope.modal.remove();
+
+ };
+ */
+
//----------------------------------------------------------------
// Alarm emit handling
//----------------------------------------------------------------
@@ -454,91 +429,94 @@ function initPackery()
return;
//console.log ("***EVENT TRAP***");
var alarmMonitors = args.message;
- for (var i=0; i< alarmMonitors.length; i++)
- {
+ for (var i = 0; i < alarmMonitors.length; i++) {
//console.log ("**** TRAPPED EVENT: "+alarmMonitors[i]);
-
- for (var j=0; j<$scope.MontageMonitors.length; j++)
- {
- if ($scope.MontageMonitors[j].Monitor.Id == alarmMonitors[i])
- {
- ZMDataModel.zmDebug ("Enabling alarm for Monitor:"+$scope.monitors[j].Monitor.Id );
- $scope.MontageMonitors[j].Monitor.isAlarmed=true;
+
+ for (var j = 0; j < $scope.MontageMonitors.length; j++) {
+ if ($scope.MontageMonitors[j].Monitor.Id == alarmMonitors[i]) {
+ ZMDataModel.zmDebug("Enabling alarm for Monitor:" + $scope.monitors[j].Monitor.Id);
+ $scope.MontageMonitors[j].Monitor.isAlarmed = true;
scheduleRemoveFlash(j);
}
}
-
+
}
-
-
+
+
});
-
- function scheduleRemoveFlash(id)
- {
- ZMDataModel.zmDebug ("Scheduled a "+zm.alarmFlashTimer+"ms timer for dis-alarming monitor ID:"+$scope.MontageMonitors[id].Monitor.Id);
- $timeout( function() {
+
+ function scheduleRemoveFlash(id) {
+ ZMDataModel.zmDebug("Scheduled a " + zm.alarmFlashTimer + "ms timer for dis-alarming monitor ID:" + $scope.MontageMonitors[id].Monitor.Id);
+ $timeout(function () {
$scope.MontageMonitors[id].Monitor.isAlarmed = false;
- ZMDataModel.zmDebug ("dis-alarming monitor ID:"+$scope.MontageMonitors[id].Monitor.Id);
- },zm.alarmFlashTimer);
+ ZMDataModel.zmDebug("dis-alarming monitor ID:" + $scope.MontageMonitors[id].Monitor.Id);
+ }, zm.alarmFlashTimer);
}
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
-
- $scope.handleAlarmsWhileMinimized = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
-
- $scope.minimal = !$scope.minimal;
+
+ $scope.handleAlarmsWhileMinimized = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+
+ $scope.minimal = !$scope.minimal;
ZMDataModel.zmDebug("MontageCtrl: switch minimal is " + $scope.minimal);
ionic.Platform.fullScreen($scope.minimal, !$scope.minimal);
- console.log ("alarms:Cancelling timer");
+ //console.log ("alarms:Cancelling timer");
$interval.cancel(intervalHandleMontage);
$interval.cancel(intervalHandleAlarmStatus);
-
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
-
-
+
+
//-------------------------------------------------------------
// this is checked to make sure we are not pulling images
// when app is in background. This is a problem with Android,
// for example
//-------------------------------------------------------------
- $scope.isBackground = function()
- {
+ $scope.isBackground = function () {
//console.log ("Is background called from Montage and returned " +
//ZMDataModel.isBackground());
return ZMDataModel.isBackground();
};
-
+
//---------------------------------------------------------------------
// Triggered when you enter/exit full screen
//---------------------------------------------------------------------
$scope.switchMinimal = function () {
$scope.minimal = !$scope.minimal;
ZMDataModel.zmDebug("MontageCtrl: switch minimal is " + $scope.minimal);
- // console.log("Hide Statusbar");
+ // console.log("Hide Statusbar");
ionic.Platform.fullScreen($scope.minimal, !$scope.minimal);
- console.log ("minimal switch:Cancelling timer");
+ //console.log ("minimal switch:Cancelling timer");
$interval.cancel(intervalHandleMontage); //we will renew on reload
$interval.cancel(intervalHandleAlarmStatus);
// We are reloading this view, so we don't want entry animations
@@ -559,92 +537,83 @@ function initPackery()
$scope.showPTZ = !$scope.showPTZ;
};
-
-
- $scope.toggleSelectItem = function(ndx)
- {
-
- if ($scope.MontageMonitors[ndx].Monitor.selectStyle !== "undefined" && $scope.MontageMonitors[ndx].Monitor.selectStyle=="dragborder-selected")
- {
- $scope.MontageMonitors[ndx].Monitor.selectStyle="";
- }
- else
- {
- $scope.MontageMonitors[ndx].Monitor.selectStyle="dragborder-selected";
- }
- console.log ("Switched value to " + $scope.MontageMonitors[ndx].Monitor.selectStyle);
+
+
+ $scope.toggleSelectItem = function (ndx) {
+
+ if ($scope.MontageMonitors[ndx].Monitor.selectStyle !== "undefined" && $scope.MontageMonitors[ndx].Monitor.selectStyle == "dragborder-selected") {
+ $scope.MontageMonitors[ndx].Monitor.selectStyle = "";
+ } else {
+ $scope.MontageMonitors[ndx].Monitor.selectStyle = "dragborder-selected";
+ }
+ //console.log ("Switched value to " + $scope.MontageMonitors[ndx].Monitor.selectStyle);
};
//---------------------------------------------------------------------
// Called when you enable/disable dragging
//---------------------------------------------------------------------
-
- $scope.dragToggle = function()
- {
+
+ $scope.dragToggle = function () {
dragToggle();
-
-
+
+
};
-
- function dragToggle()
- {
+
+ function dragToggle() {
var i;
$scope.isDragabillyOn = !$scope.isDragabillyOn;
-
- $ionicSideMenuDelegate.canDragContent($scope.isDragabillyOn? false: true);
-
+
+ $ionicSideMenuDelegate.canDragContent($scope.isDragabillyOn ? false : true);
+
//$timeout(function(){pckry.reloadItems();},10);
- ZMDataModel.zmDebug ("setting dragabilly to " + $scope.isDragabillyOn);
- if ($scope.isDragabillyOn)
- {
+ ZMDataModel.zmDebug("setting dragabilly to " + $scope.isDragabillyOn);
+ if ($scope.isDragabillyOn) {
$scope.showSizeButtons = true;
-
- $scope.dragBorder="dragborder";
- ZMDataModel.zmDebug ("Enabling drag for " + draggies.length + " items");
- for (i=0; i < draggies.length; i++)
- {
+
+ $scope.dragBorder = "dragborder";
+ ZMDataModel.zmDebug("Enabling drag for " + draggies.length + " items");
+ for (i = 0; i < draggies.length; i++) {
draggies[i].enable();
draggies[i].bindHandles();
}
-
- // reflow and reload as some may be hidden
+
+ // reflow and reload as some may be hidden
// $timeout(function(){pckry.reloadItems();$timeout(function(){pckry.layout();},300);},100);
- }
- else
- {
- $scope.dragBorder="";
- ZMDataModel.zmDebug ("Disabling drag for " + draggies.length + " items");
- for ( i=0; i < draggies.length; i++)
- {
+ } else {
+ $scope.dragBorder = "";
+ ZMDataModel.zmDebug("Disabling drag for " + draggies.length + " items");
+ for (i = 0; i < draggies.length; i++) {
draggies[i].disable();
draggies[i].unbindHandles();
}
- for (i=0; i < $scope.MontageMonitors.length; i++)
- {
- $scope.MontageMonitors[i].Monitor.selectStyle="";
+ for (i = 0; i < $scope.MontageMonitors.length; i++) {
+ $scope.MontageMonitors[i].Monitor.selectStyle = "";
}
// reflow and reload as some may be hidden
- $timeout(function(){$timeout(function(){ var positions = pckry.getShiftPositions('data-item-id');
- console.log ("POSITIONS MAP " + JSON.stringify(positions));
- var ld = ZMDataModel.getLogin();
- ld.packeryPositions = JSON.stringify(positions);
- ZMDataModel.setLogin(ld);},300);},100);
-
+ $timeout(function () {
+ $timeout(function () {
+ var positions = pckry.getShiftPositions('data-item-id');
+ //console.log ("POSITIONS MAP " + JSON.stringify(positions));
+ var ld = ZMDataModel.getLogin();
+ ld.packeryPositions = JSON.stringify(positions);
+ ZMDataModel.setLogin(ld);
+ }, 300);
+ }, 100);
+
}
}
-
-
+
+
//---------------------------------------------------------------------
// main monitor modal open - if drag is not on, this is called on touch
//---------------------------------------------------------------------
-
- $scope.openModal = function (mid, controllable, controlid, connKey, monitor)
- {
- openModal (mid, controllable, controlid, connKey, monitor);
+
+ $scope.openModal = function (mid, controllable, controlid, connKey, monitor) {
+ openModal(mid, controllable, controlid, connKey, monitor);
};
-
- function openModal(mid, controllable, controlid, connKey, monitor) {
+
+ function openModal(mid, controllable, controlid, connKey, monitor) {
ZMDataModel.zmDebug("MontageCtrl: Open Monitor Modal with monitor Id=" + mid + " and Controllable:" + controllable + " with control ID:" + controlid);
// $scope.isModalActive = true;
// Note: no need to setAwake(true) as its already awake
@@ -652,7 +621,7 @@ function initPackery()
ZMDataModel.zmLog("Cancelling montage timer, opening Modal");
// ZMDataModel.zmLog("Starting Modal timer");
- console.log ("openModal:Cancelling timer");
+ //console.log ("openModal:Cancelling timer");
$interval.cancel(intervalHandleMontage);
$interval.cancel(intervalHandleAlarmStatus);
@@ -668,24 +637,24 @@ function initPackery()
$scope.ptzMoveCommand = "";
$scope.ptzStopCommand = "";
-
+
$scope.zoomInCommand = "";
$scope.zoomOutCommand = "";
$scope.zoomStopCommand = "zoomStop";
$scope.canZoom = false;
-
+
$scope.presetOn = false;
-
+
$scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- $scope.isControllable = controllable;
+ $scope.isControllable = controllable;
$scope.refMonitor = monitor;
-
+
// This is a modal to show the monitor footage
// We need to switch to always awake if set so the feed doesn't get interrupted
ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
-
+
// This is a modal to show the monitor footage
$ionicModal.fromTemplateUrl('templates/monitors-modal.html', {
@@ -701,10 +670,10 @@ function initPackery()
noBackdrop: true,
duration: zm.loadingTimeout
});
-
-
+
+
// we don't really need this as we have stopped the timer
- // $scope.isModalActive = true;
+ // $scope.isModalActive = true;
//$timeout (function() {pckry.shiftLayout();},zm.packeryTimer);
$scope.modal.show();
@@ -717,10 +686,12 @@ function initPackery()
//
//---------------------------------------------------------------------
- function cleanupOnClose()
- {
+ function cleanupOnClose() {
$scope.modal.remove();
- $timeout (function() {ZMDataModel.zmLog("MontageCtrl:Stopping network pull...");if (ZMDataModel.isForceNetworkStop()) ZMDataModel.stopNetwork();},50);
+ $timeout(function () {
+ ZMDataModel.zmLog("MontageCtrl:Stopping network pull...");
+ if (ZMDataModel.isForceNetworkStop()) ZMDataModel.stopNetwork();
+ }, 50);
$rootScope.rand = Math.floor((Math.random() * 100000) + 1);
$scope.isModalActive = false;
@@ -730,34 +701,34 @@ function initPackery()
// console.log ("closeModal: Cancelling timer");
$interval.cancel(intervalHandleMontage);
$interval.cancel(intervalHandleAlarmStatus);
-
+
intervalHandleMontage = $interval(function () {
loadNotifications();
// console.log ("Refreshing Image...");
}.bind(this), ld.refreshSec * 1000);
-
+
intervalHandleAlarmStatus = $interval(function () {
loadAlarmStatus();
// console.log ("Refreshing Image...");
}.bind(this), 5000);
-
- // $timeout (function() {pckry.shiftLayout();},zm.packeryTimer);
-
-
+
+ // $timeout (function() {pckry.shiftLayout();},zm.packeryTimer);
+
+
}
-
+
$scope.closeModal = function () {
ZMDataModel.zmDebug("MontageCtrl: Close & Destroy Monitor Modal");
cleanupOnClose();
// $scope.isModalActive = false;
// Note: no need to setAwake(false) as needs to be awake
// in montage view
-
-
-
+
+
+
};
-
+
//---------------------------------------------------------------------
@@ -778,8 +749,8 @@ function initPackery()
function onResume() {
-
-
+
+
}
$scope.openMenu = function () {
@@ -791,240 +762,236 @@ function initPackery()
};
$scope.$on('$destroy', function () {
-
+
});
$scope.$on('$ionicView.loaded', function () {
- // console.log("**VIEW ** Montage Ctrl Loaded");
+ // console.log("**VIEW ** Montage Ctrl Loaded");
});
-
+
$scope.$on('$ionicView.leave', function () {
- // console.log("**VIEW ** Montage Ctrl Left, force removing modal");
+ // console.log("**VIEW ** Montage Ctrl Left, force removing modal");
if ($scope.modal) $scope.modal.remove();
});
-
-
-
+
+
+
function orientationChanged() {
- ZMDataModel.zmDebug("Detected orientation change, redoing packery resize");
- $timeout(function () {
- pckry.onresize();
+ ZMDataModel.zmDebug("Detected orientation change, redoing packery resize");
+ $timeout(function () {
+ pckry.onresize();
+ });
+ }
+
+ $scope.toggleSizeButtons = function () {
+
+ $scope.showSizeButtons = !$scope.showSizeButtons;
+ ZMDataModel.zmDebug("toggling size buttons:" + $scope.showSizeButtons);
+ };
+
+ // minimal has to be beforeEnter or header won't hide
+ $scope.$on('$ionicView.beforeEnter', function () {
+ $scope.minimal = $stateParams.minimal;
+ //console.log ("**************** MINIMAL ENTER " + $scope.minimal);
+ $scope.zmMarginTop = $scope.minimal ? 0 : 15;
+
+
+
+
});
-}
-
-$scope.toggleSizeButtons = function()
-{
-
- $scope.showSizeButtons = !$scope.showSizeButtons;
- ZMDataModel.zmDebug ("toggling size buttons:"+$scope.showSizeButtons);
-};
-
-// minimal has to be beforeEnter or header won't hide
-$scope.$on ('$ionicView.beforeEnter', function() {
- $scope.minimal = $stateParams.minimal;
- //console.log ("**************** MINIMAL ENTER " + $scope.minimal);
- $scope.zmMarginTop = $scope.minimal ? 0 : 15;
-
-
-
-
-});
-
-$scope.$on('$ionicView.afterEnter', function () {
- ZMDataModel.zmDebug("Setting image mode to snapshot, will change to image when packery is all done");
- $scope.allImagesLoaded = false;
- $scope.isDragabillyOn = false;
- $scope.allImagesLoaded = false;
- $scope.gridScale = "grid-item-50";
- $scope.LoginData = ZMDataModel.getLogin();
- $scope.monLimit = $scope.LoginData.maxMontage;
- $scope.showSizeButtons = false;
-
- $scope.monitors = message;
- $scope.MontageMonitors = angular.copy(message);
- $scope.sliderChanging = false;
- loginData = ZMDataModel.getLogin();
+ $scope.$on('$ionicView.afterEnter', function () {
+ ZMDataModel.zmDebug("Setting image mode to snapshot, will change to image when packery is all done");
+ $scope.allImagesLoaded = false;
+ $scope.isDragabillyOn = false;
+ $scope.allImagesLoaded = false;
+ $scope.gridScale = "grid-item-50";
+ $scope.LoginData = ZMDataModel.getLogin();
+ $scope.monLimit = $scope.LoginData.maxMontage;
+ $scope.showSizeButtons = false;
- $scope.isRefresh = $stateParams.isRefresh;
- sizeInProgress = false;
- $scope.imageStyle = true;
- intervalHandleMontage = "";
- $scope.isModalActive = false;
- $scope.isReorder = false;
- $ionicSideMenuDelegate.canDragContent($scope.minimal ? true : true);
-
-
- //$scope.areImagesLoading = true;
+ $scope.monitors = message;
+ $scope.MontageMonitors = angular.copy(message);
+ $scope.sliderChanging = false;
+ loginData = ZMDataModel.getLogin();
+
+ $scope.isRefresh = $stateParams.isRefresh;
+ sizeInProgress = false;
+ $scope.imageStyle = true;
+ intervalHandleMontage = "";
+ $scope.isModalActive = false;
+ $scope.isReorder = false;
+
+ $ionicSideMenuDelegate.canDragContent($scope.minimal ? true : true);
+
+
+ //$scope.areImagesLoading = true;
var ld = ZMDataModel.getLogin();
//console.log("Setting Awake to " + ZMDataModel.getKeepAwake());
ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
$interval.cancel(intervalHandleMontage);
$interval.cancel(intervalHandleAlarmStatus);
-
+
intervalHandleMontage = $interval(function () {
loadNotifications();
// console.log ("Refreshing Image...");
}.bind(this), ld.refreshSec * 1000);
-
+
intervalHandleAlarmStatus = $interval(function () {
loadAlarmStatus();
// console.log ("Refreshing Image...");
}.bind(this), 5000);
-
+
loadNotifications();
- if ($scope.MontageMonitors.length == 0) {
- $rootScope.zmPopup = $ionicPopup.alert({
- title: $translate.instant('kNoMonitors'),
- template: $translate.instant('kCheckCredentials')
- });
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
- $state.go("login", {
- "wizard": false
- });
- return;
- }
+ if ($scope.MontageMonitors.length == 0) {
+ $rootScope.zmPopup = $ionicPopup.alert({
+ title: $translate.instant('kNoMonitors'),
+ template: $translate.instant('kCheckCredentials')
+ });
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("login", {
+ "wizard": false
+ });
+ return;
+ }
- ld = ZMDataModel.getLogin();
+ ld = ZMDataModel.getLogin();
- $rootScope.authSession = "undefined";
- $ionicLoading.show({
- template: $translate.instant('kNegotiatingStreamAuth'),
- animation: 'fade-in',
- showBackdrop: true,
- duration: zm.loadingTimeout,
- maxWidth: 300,
- showDelay: 0
- });
+ $rootScope.authSession = "undefined";
+ $ionicLoading.show({
+ template: $translate.instant('kNegotiatingStreamAuth'),
+ animation: 'fade-in',
+ showBackdrop: true,
+ duration: zm.loadingTimeout,
+ maxWidth: 300,
+ showDelay: 0
+ });
- ZMDataModel.zmLog("Inside Montage Ctrl:We found " + $scope.monitors.length + " monitors");
+ ZMDataModel.zmLog("Inside Montage Ctrl:We found " + $scope.monitors.length + " monitors");
- // set them all at 50% for packery
- for (var i = 0; i < $scope.MontageMonitors.length; i++) {
- $scope.MontageMonitors[i].Monitor.gridScale = "50";
- $scope.MontageMonitors[i].Monitor.selectStyle = "";
- $scope.MontageMonitors[i].Monitor.alarmState='color:rgba(0,0,0,0);';
+ // set them all at 50% for packery
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
+ $scope.MontageMonitors[i].Monitor.gridScale = "50";
+ $scope.MontageMonitors[i].Monitor.selectStyle = "";
+ $scope.MontageMonitors[i].Monitor.alarmState = 'color:rgba(0,0,0,0);';
- }
+ }
- $rootScope.validMonitorId = $scope.monitors[0].Monitor.Id;
- ZMDataModel.getAuthKey($rootScope.validMonitorId, (Math.floor((Math.random() * 999999) + 1)).toString())
- .then(function (success) {
- $ionicLoading.hide();
- //console.log(success);
- $rootScope.authSession = success;
- ZMDataModel.zmLog("Stream authentication construction: " +
- $rootScope.authSession);
+ $rootScope.validMonitorId = $scope.monitors[0].Monitor.Id;
+ ZMDataModel.getAuthKey($rootScope.validMonitorId, (Math.floor((Math.random() * 999999) + 1)).toString())
+ .then(function (success) {
+ $ionicLoading.hide();
+ //console.log(success);
+ $rootScope.authSession = success;
+ ZMDataModel.zmLog("Stream authentication construction: " +
+ $rootScope.authSession);
- },
- function (error) {
+ },
+ function (error) {
- $ionicLoading.hide();
- ZMDataModel.zmDebug("MontageCtrl: Error in authkey retrieval " + error);
- //$rootScope.authSession="";
- ZMDataModel.zmLog("MontageCtrl: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession);
- });
+ $ionicLoading.hide();
+ ZMDataModel.zmDebug("MontageCtrl: Error in authkey retrieval " + error);
+ //$rootScope.authSession="";
+ ZMDataModel.zmLog("MontageCtrl: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession);
+ });
- console.log("**VIEW ** Montage Ctrl AFTER ENTER");
+ //console.log("**VIEW ** Montage Ctrl AFTER ENTER");
window.addEventListener("resize", orientationChanged, false);
- $timeout ( function () {initPackery(); },zm.packeryTimer);
+ $timeout(function () {
+ initPackery();
+ }, zm.packeryTimer);
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
-
-
-
-});
-
+
+
+
+ });
+
$scope.$on('$ionicView.beforeLeave', function () {
- // console.log("**VIEW ** Montage Ctrl Left, force removing modal");
-
- console.log ("beforeLeave:Cancelling timer");
+ // console.log("**VIEW ** Montage Ctrl Left, force removing modal");
+
+ //console.log ("beforeLeave:Cancelling timer");
$interval.cancel(intervalHandleMontage);
$interval.cancel(intervalHandleAlarmStatus);
pckry.destroy();
- window.removeEventListener("resize", orientationChanged, false);
-
-
+ window.removeEventListener("resize", orientationChanged, false);
+
+
// make sure this is applied in scope digest to stop network pull
// thats why we are doing it beforeLeave
-
- if (ZMDataModel.isForceNetworkStop())
- {
- ZMDataModel.zmLog ("MontageCtrl:Stopping network pull...");
+
+ if (ZMDataModel.isForceNetworkStop()) {
+ ZMDataModel.zmLog("MontageCtrl:Stopping network pull...");
ZMDataModel.stopNetwork();
-
+
}
-
+
});
-
-
-
+
+
+
$scope.$on('$ionicView.unloaded', function () {
-
+
});
-
- $scope.resetSizes = function()
- {
+
+ $scope.resetSizes = function () {
var somethingReset = false;
- for (var i=0; i< $scope.MontageMonitors.length; i++)
- {
- if ($scope.isDragabillyOn)
- {
- if ($scope.MontageMonitors[i].Monitor.selectStyle=="dragborder-selected")
- {
- $scope.MontageMonitors[i].Monitor.gridScale="50";
- somethingReset = true;
- }
- }
- else
- {
- $scope.MontageMonitors[i].Monitor.gridScale="50";
- // somethingReset = true;
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
+ if ($scope.isDragabillyOn) {
+ if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected") {
+ $scope.MontageMonitors[i].Monitor.gridScale = "50";
+ somethingReset = true;
+ }
+ } else {
+ $scope.MontageMonitors[i].Monitor.gridScale = "50";
+ // somethingReset = true;
}
}
if (!somethingReset && $scope.isDragabillyOn) // nothing was selected
{
- for (i=0; i< $scope.MontageMonitors.length; i++){$scope.MontageMonitors[i].Monitor.gridScale="50";}
+ for (i = 0; i < $scope.MontageMonitors.length; i++) {
+ $scope.MontageMonitors[i].Monitor.gridScale = "50";
+ }
}
-
- $timeout (function()
- {
- pckry.reloadItems();
-
- pckry.once( 'layoutComplete', function() {
- console.log ("Layout complete");
- var positions = pckry.getShiftPositions('data-item-id');
- console.log ("POSITIONS MAP " + JSON.stringify(positions));
- var ld = ZMDataModel.getLogin();
- ld.packeryPositions = JSON.stringify(positions);
- ZMDataModel.setLogin(ld);
- // $scope.slider.monsize = 2;
- });
- //layout(pckry);
- $timeout (function(){pckry.layout();},zm.packeryTimer); // force here - no shiftlayout
-
-
- },100);
-
+
+ $timeout(function () {
+ pckry.reloadItems();
+
+ pckry.once('layoutComplete', function () {
+ //console.log ("Layout complete");
+ var positions = pckry.getShiftPositions('data-item-id');
+ //console.log ("POSITIONS MAP " + JSON.stringify(positions));
+ var ld = ZMDataModel.getLogin();
+ ld.packeryPositions = JSON.stringify(positions);
+ ZMDataModel.setLogin(ld);
+ // $scope.slider.monsize = 2;
+ });
+ //layout(pckry);
+ $timeout(function () {
+ pckry.layout();
+ }, zm.packeryTimer); // force here - no shiftlayout
+
+
+ }, 100);
+
};
-
-
- function layout(pckry)
- {
+
+
+ function layout(pckry) {
pckry.shiftLayout();
}
@@ -1036,95 +1003,89 @@ $scope.$on('$ionicView.afterEnter', function () {
//---------------------------------------------------------
$scope.sliderChanged = function (dirn) {
-
- if ($scope.sliderChanging)
- {
- // console.log ("too fast my friend");
+
+ if ($scope.sliderChanging) {
+ // console.log ("too fast my friend");
//$scope.slider.monsize = oldSliderVal;
- // return;
+ // return;
}
-
+
$scope.sliderChanging = true;
-
- var somethingReset = false;
-
- // this only changes items that are selected
- for (var i=0; i< $scope.MontageMonitors.length; i++)
- {
-
- var curVal = parseInt($scope.MontageMonitors[i].Monitor.gridScale);
- curVal = curVal + (10 * dirn);
- if (curVal < 10) curVal=10;
- if (curVal >100) curVal = 100;
- //console.log ("For Index: " + i + " From: " + $scope.MontageMonitors[i].Monitor.gridScale + " To: " + curVal);
-
- if ($scope.isDragabillyOn)
- {
+
+ var somethingReset = false;
+
+ // this only changes items that are selected
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
+
+ var curVal = parseInt($scope.MontageMonitors[i].Monitor.gridScale);
+ curVal = curVal + (10 * dirn);
+ if (curVal < 10) curVal = 10;
+ if (curVal > 100) curVal = 100;
+ //console.log ("For Index: " + i + " From: " + $scope.MontageMonitors[i].Monitor.gridScale + " To: " + curVal);
+
+ if ($scope.isDragabillyOn) {
// only do this for selected monitors
- if ($scope.MontageMonitors[i].Monitor.selectStyle=="dragborder-selected")
- {
-
- $scope.MontageMonitors[i].Monitor.gridScale= curVal;
+ if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected") {
+
+ $scope.MontageMonitors[i].Monitor.gridScale = curVal;
somethingReset = true;
}
- }
- else
- {
- $scope.MontageMonitors[i].Monitor.gridScale= curVal;
- //somethingReset = true;
-
- }
-
- }
-
- // this changes all items if none were selected
- if (!somethingReset && $scope.isDragabillyOn) // nothing was selected
- {
- for (i=0; i< $scope.MontageMonitors.length; i++)
- {
- var cv = parseInt($scope.MontageMonitors[i].Monitor.gridScale);
- cv = cv + (10 * dirn);
- if (cv < 10) cv=10;
- if (cv >100) cv = 100;
- $scope.MontageMonitors[i].Monitor.gridScale= cv;
- }
+ } else {
+ $scope.MontageMonitors[i].Monitor.gridScale = curVal;
+ //somethingReset = true;
+
}
-
-
- //pckry.reloadItems();
-
- pckry.once( 'layoutComplete', function() {
- $timeout(function () {
- var positions = pckry.getShiftPositions('data-item-id');
- console.log ("POSITIONS MAP " + JSON.stringify(positions));
- var ld = ZMDataModel.getLogin();
- ld.packeryPositions = JSON.stringify(positions);
- ZMDataModel.setLogin(ld);
- $ionicLoading.hide();
- $scope.sliderChanging = false;
- },zm.packeryTimer);
- });
-
-
-
- if (!somethingReset)
- {
- console.log (">>>SOMETHING NOT RESET");
- $timeout(function() {pckry.layout();},zm.packeryTimer);
- }
- else
- {
-
- console.log (">>>SOMETHING RESET");
- $timeout(function() {layout(pckry);},zm.packeryTimer);
- }
-
-
-
-
+
+ }
+
+ // this changes all items if none were selected
+ if (!somethingReset && $scope.isDragabillyOn) // nothing was selected
+ {
+ for (i = 0; i < $scope.MontageMonitors.length; i++) {
+ var cv = parseInt($scope.MontageMonitors[i].Monitor.gridScale);
+ cv = cv + (10 * dirn);
+ if (cv < 10) cv = 10;
+ if (cv > 100) cv = 100;
+ $scope.MontageMonitors[i].Monitor.gridScale = cv;
+ }
+ }
+
+
+ //pckry.reloadItems();
+
+ pckry.once('layoutComplete', function () {
+ $timeout(function () {
+ var positions = pckry.getShiftPositions('data-item-id');
+ //console.log ("POSITIONS MAP " + JSON.stringify(positions));
+ var ld = ZMDataModel.getLogin();
+ ld.packeryPositions = JSON.stringify(positions);
+ ZMDataModel.setLogin(ld);
+ $ionicLoading.hide();
+ $scope.sliderChanging = false;
+ }, zm.packeryTimer);
+ });
+
+
+
+ if (!somethingReset) {
+ //console.log (">>>SOMETHING NOT RESET");
+ $timeout(function () {
+ pckry.layout();
+ }, zm.packeryTimer);
+ } else {
+
+ //console.log (">>>SOMETHING RESET");
+ $timeout(function () {
+ layout(pckry);
+ }, zm.packeryTimer);
+ }
+
+
+
+
};
-
-
+
+
$scope.$on('$ionicView.afterEnter', function () {
// This rand is really used to reload the monitor image in img-src so it is not cached
@@ -1141,7 +1102,7 @@ $scope.$on('$ionicView.afterEnter', function () {
$scope.doRefresh = function () {
- // console.log("***Pull to Refresh, recomputing Rand");
+ // console.log("***Pull to Refresh, recomputing Rand");
ZMDataModel.zmLog("Reloading view for montage view, recomputing rand");
$rootScope.rand = Math.floor((Math.random() * 100000) + 1);
$scope.monitors = [];
@@ -1156,4 +1117,4 @@ $scope.$on('$ionicView.afterEnter', function () {
};
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/MontageHistoryCtrl.js b/www/js/MontageHistoryCtrl.js
index ad5d6af1..71a37c63 100644
--- a/www/js/MontageHistoryCtrl.js
+++ b/www/js/MontageHistoryCtrl.js
@@ -9,12 +9,12 @@
angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$scope', '$rootScope', 'ZMDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$ionicPopup', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', 'zm', '$ionicPopover', '$controller', 'imageLoadingDataShare', '$window', '$translate', function ($scope, $rootScope, ZMDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $ionicPopup, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, zm, $ionicPopover, $controller, imageLoadingDataShare, $window, $translate) {
- //--------------------------------------
+ //--------------------------------------
// formats events dates in a nice way
//---------------------------------------
$scope.prettifyDate = function (str) {
- return moment(str).format('MMM Do, YYYY '+ZMDataModel.getTimeFormat());
+ return moment(str).format('MMM Do, YYYY ' + ZMDataModel.getTimeFormat());
};
function prettifyDate(str) {
@@ -28,451 +28,410 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
$scope.prettify = function (str) {
- return moment(str).format(ZMDataModel.getTimeFormat()+' on MMMM Do YYYY');
+ return moment(str).format(ZMDataModel.getTimeFormat() + ' on MMMM Do YYYY');
};
-
-
-
- //--------------------------------------
+
+
+
+ //--------------------------------------
// pause/unpause nph-zms
//---------------------------------------
- $scope.togglePause = function (mid)
- {
+ $scope.togglePause = function (mid) {
//console.log ("TOGGLE PAUSE " + mid);
var m = -1;
- for (var i=0; i < $scope.MontageMonitors.length; i++)
- {
-
- if ($scope.MontageMonitors[i].Monitor.Id == mid)
- {
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
+
+ if ($scope.MontageMonitors[i].Monitor.Id == mid) {
m = i;
break;
}
}
- if (m != -1)
- {
+ if (m != -1) {
$scope.MontageMonitors[m].Monitor.isPaused = !$scope.MontageMonitors[m].Monitor.isPaused;
-
- var cmd = $scope.MontageMonitors[m].Monitor.isPaused? 1:2;
-
- ZMDataModel.zmDebug ("Sending CMD:"+cmd+" for monitor "+$scope.MontageMonitors[m].Monitor.Name);
- controlEventStream(cmd,"",$scope.MontageMonitors[m].Monitor.connKey,-1);
+
+ var cmd = $scope.MontageMonitors[m].Monitor.isPaused ? 1 : 2;
+
+ ZMDataModel.zmDebug("Sending CMD:" + cmd + " for monitor " + $scope.MontageMonitors[m].Monitor.Name);
+ controlEventStream(cmd, "", $scope.MontageMonitors[m].Monitor.connKey, -1);
}
};
-
-
-
+
+
+
//--------------------------------------
// Called when ion-footer collapses
// note that on init it is also called
//---------------------------------------
-
- $scope.footerExpand = function()
- {
- // console.log ("**************** EXPAND CALLED ***************");
+
+ $scope.footerExpand = function () {
+ // console.log ("**************** EXPAND CALLED ***************");
$ionicSideMenuDelegate.canDragContent(false);
};
-
- $scope.footerCollapse = function()
- {
-
-
+
+ $scope.footerCollapse = function () {
+
+
footerCollapse();
-
-
+
+
};
-
-
+
+
/* Note this is also called when the view is first loaded */
- function footerCollapse()
- {
- // console.log ("**************** COLLAPSE CALLED ***************");
- if (readyToRun == false)
- {
- ZMDataModel.zmDebug ("fake call to footerCollapse - ignoring");
+ function footerCollapse() {
+ // console.log ("**************** COLLAPSE CALLED ***************");
+ if (readyToRun == false) {
+ ZMDataModel.zmDebug("fake call to footerCollapse - ignoring");
return;
}
-
+
$ionicSideMenuDelegate.canDragContent(true);
-
- ZMDataModel.stopNetwork("MontageHistory-footerCollapse");
+
+ ZMDataModel.stopNetwork("MontageHistory-footerCollapse");
var ld = ZMDataModel.getLogin();
-
- $scope.sliderVal.realRate = $scope.sliderVal.rate *100;
+
+ $scope.sliderVal.realRate = $scope.sliderVal.rate * 100;
//ZMDataModel.zmDebug ("Playback rate is:" + $scope.sliderVal.realRate);
-
+
var TimeObjectFrom = moment($scope.datetimeValueFrom.value).format("YYYY-MM-DD HH:mm");
var TimeObjectTo = moment($scope.datetimeValueTo.value).format('YYYY-MM-DD HH:mm');
-
- // console.log ("TIME START: " + TimeObjectFrom + " " + TimeObjectTo);
+
+ // console.log ("TIME START: " + TimeObjectFrom + " " + TimeObjectTo);
//console.log ("TIME START: " + TimeObjectFrom + " " + TimeObjectTo);
-
-
- var apiurl;
-
+
+
+ var apiurl;
+
// release all active streams
- for (var i=0; i< $scope.MontageMonitors.length; i++)
- {
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
// generate new connKeys if timeline changes
- if ($scope.MontageMonitors[i].Monitor.eventUrl !='img/noevent.png')
- {
- ZMDataModel.zmLog ("footerCollapse: Calling kill with " + $scope.MontageMonitors[i].Monitor.connKey + " because url is " +$scope.MontageMonitors[i].Monitor.eventUrl ) ;
+ if ($scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png') {
+ ZMDataModel.zmLog("footerCollapse: Calling kill with " + $scope.MontageMonitors[i].Monitor.connKey + " because url is " + $scope.MontageMonitors[i].Monitor.eventUrl);
var tmpCK = angular.copy($scope.MontageMonitors[i].Monitor.connKey);
- timedControlEventStream(2500,17,"",tmpCK,-1);
- $scope.MontageMonitors[i].Monitor.eventUrl = "img/noevent.png";
- $scope.MontageMonitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ timedControlEventStream(2500, 17, "", tmpCK, -1);
+ $scope.MontageMonitors[i].Monitor.eventUrl = "img/noevent.png";
+ $scope.MontageMonitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
//console.log ("Generating connkey: " +$scope.MontageMonitors[i].Monitor.connKey);
- }
-
- else
- {
+ } else {
//console.log ("footerCollapse: Skipped kill: connkey:"+$scope.MontageMonitors[i].Monitor.connKey + " function " + $scope.MontageMonitors[i].Monitor.Function + " listDisplay " + $scope.MontageMonitors[i].Monitor.lisDisplay + " enabled " + $scope.MontageMonitors[i].Monitor.Enabled + " eventURL " + $scope.MontageMonitors[i].Monitor.eventUrl);
}
-
-
-
-
+
+
+
+
}
- // grab events that start on or before the time and end on or after the time
- // this should only bring up events that span that time
- apiurl= ld.apiurl + "/events/index/StartTime >=:"+TimeObjectFrom+"/EndTime <=:"+TimeObjectTo+".json";
-
- ZMDataModel.zmLog ("Event timeline API is " + apiurl);
-
- $http.get(apiurl)
- .success( function(data) {
-
+ // grab events that start on or before the time and end on or after the time
+ // this should only bring up events that span that time
+ apiurl = ld.apiurl + "/events/index/StartTime >=:" + TimeObjectFrom + "/EndTime <=:" + TimeObjectTo + ".json";
+
+ ZMDataModel.zmLog("Event timeline API is " + apiurl);
+
+ $http.get(apiurl)
+ .success(function (data) {
+
var ld = ZMDataModel.getLogin();
- ZMDataModel.zmDebug ("Got "+data.events.length+"new history events...");
+ ZMDataModel.zmDebug("Got " + data.events.length + "new history events...");
var eid, mid, stime;
- for (i=0; i<data.events.length; i++)
- {
+ for (i = 0; i < data.events.length; i++) {
mid = data.events[i].Event.MonitorId;
eid = data.events[i].Event.Id;
stime = data.events[i].Event.StartTime;
-
- // only take the first one for each monitor
- for (var j=0; j < $scope.MontageMonitors.length; j++)
- {
- // that's the earliest match and play gapless from there
- if ($scope.MontageMonitors[j].Monitor.Id == mid)
- {
-
- if ($scope.MontageMonitors[j].Monitor.eventUrl == 'img/noevent.png')
- {
-
- // console.log ("Old value of event url " + $scope.MontageMonitors[j].eventUrl);
- //console.log ("ldurl is " + ld.streamingurl);
- $scope.MontageMonitors[j].Monitor.eventUrl=ld.streamingurl+"/nph-zms?source=event&mode=jpeg&event="+eid+"&frame=1&replay=gapless&rate="+$scope.sliderVal.realRate+"&connkey="+$scope.MontageMonitors[j].Monitor.connKey+"&scale="+ld.montageHistoryQuality+"&rand="+$rootScope.rand;
- //console.log ("Setting event URL to " +$scope.MontageMonitors[j].Monitor.eventUrl);
-
- // console.log ("SWITCHING TO " + $scope.MontageMonitors[j].eventUrl);
-
-
- $scope.MontageMonitors[j].Monitor.eventUrlTime = stime;
- }
- }
+
+ // only take the first one for each monitor
+ for (var j = 0; j < $scope.MontageMonitors.length; j++) {
+ // that's the earliest match and play gapless from there
+ if ($scope.MontageMonitors[j].Monitor.Id == mid) {
+
+ if ($scope.MontageMonitors[j].Monitor.eventUrl == 'img/noevent.png') {
+
+ // console.log ("Old value of event url " + $scope.MontageMonitors[j].eventUrl);
+ //console.log ("ldurl is " + ld.streamingurl);
+ $scope.MontageMonitors[j].Monitor.eventUrl = ld.streamingurl + "/nph-zms?source=event&mode=jpeg&event=" + eid + "&frame=1&replay=gapless&rate=" + $scope.sliderVal.realRate + "&connkey=" + $scope.MontageMonitors[j].Monitor.connKey + "&scale=" + ld.montageHistoryQuality + "&rand=" + $rootScope.rand;
+ //console.log ("Setting event URL to " +$scope.MontageMonitors[j].Monitor.eventUrl);
+
+ // console.log ("SWITCHING TO " + $scope.MontageMonitors[j].eventUrl);
+
+
+ $scope.MontageMonitors[j].Monitor.eventUrlTime = stime;
+ }
+ }
}
}
-
+
// make sure we do our best to get that duration for all monitors
// in the above call, is possible some did not make the cut in the first page
-
- ZMDataModel.zmLog ("Making sure all monitors have a fair chance...");
- for (i=0; i<$scope.MontageMonitors.length; i++)
- {
- if ($scope.MontageMonitors[i].Monitor.eventUrl=='img/noevent.png')
- {
+ ZMDataModel.zmLog("Making sure all monitors have a fair chance...");
+ for (i = 0; i < $scope.MontageMonitors.length; i++) {
+ if ($scope.MontageMonitors[i].Monitor.eventUrl == 'img/noevent.png') {
- var indivGrab = ld.apiurl + "/events/index/MonitorId:"+$scope.MontageMonitors[i].Monitor.Id+"/StartTime >=:"+TimeObjectFrom+"/EndTime <=:"+TimeObjectTo+".json";
- ZMDataModel.zmDebug("Monitor " + $scope.MontageMonitors[i].Monitor.Id+":"+$scope.MontageMonitors[i].Monitor.Name + " does not have events, trying "+indivGrab);
+ var indivGrab = ld.apiurl + "/events/index/MonitorId:" + $scope.MontageMonitors[i].Monitor.Id + "/StartTime >=:" + TimeObjectFrom + "/EndTime <=:" + TimeObjectTo + ".json";
- getExpandedEvents(i,indivGrab);
+ ZMDataModel.zmDebug("Monitor " + $scope.MontageMonitors[i].Monitor.Id + ":" + $scope.MontageMonitors[i].Monitor.Name + " does not have events, trying " + indivGrab);
+
+ getExpandedEvents(i, indivGrab);
- }
}
-
-
-
-
+ }
+
+
+
+
})
- .error (function (data) {
- ZMDataModel.zmDebug ("history ERROR:"+ JSON.stringify(data));
-
+ .error(function (data) {
+ ZMDataModel.zmDebug("history ERROR:" + JSON.stringify(data));
+
});
-
-
- function getExpandedEvents(i,indivGrab)
- {
+
+
+ function getExpandedEvents(i, indivGrab) {
var ld = ZMDataModel.getLogin();
- // console.log ("EXPANDED EVENT " + i + " " + indivGrab);
+ // console.log ("EXPANDED EVENT " + i + " " + indivGrab);
$http.get(indivGrab)
- .success(function(data)
- {
- // console.log ("EXPANDED DATA FOR MONITOR " + i + JSON.stringify(data));
- if (data.events.length > 0 )
- {
-
- if (!ZMDataModel.isBackground())
- {
-
- $scope.MontageMonitors[i].Monitor.eventUrl=ld.streamingurl+"/nph-zms?source=event&mode=jpeg&event="+data.events[0].Event.Id+"&frame=1&replay=gapless&rate="+$scope.sliderVal.realRate+"&connkey="+$scope.MontageMonitors[i].Monitor.connKey+"&scale="+ld.montageHistoryQuality+"&rand="+$rootScope.rand;
-
-
-
- //console.log ("SWITCHING TO " + $scope.MontageMonitors[i].eventUrl);
-
- $scope.MontageMonitors[i].Monitor.eventUrlTime = data.events[0].Event.StartTime;
-
- ZMDataModel.zmLog ("Found expanded event "+data.events[0].Event.Id+" for monitor " + $scope.MontageMonitors[i].Monitor.Id);
- }
- else
- {
- // $scope.MontageMonitors[i].eventUrl="img/noevent.png";
- // $scope.MontageMonitors[i].eventUrlTime = "";
- // ZMDataModel.zmLog ("Setting img src to null as data received in background");
+ .success(function (data) {
+ // console.log ("EXPANDED DATA FOR MONITOR " + i + JSON.stringify(data));
+ if (data.events.length > 0) {
+
+ if (!ZMDataModel.isBackground()) {
+
+ $scope.MontageMonitors[i].Monitor.eventUrl = ld.streamingurl + "/nph-zms?source=event&mode=jpeg&event=" + data.events[0].Event.Id + "&frame=1&replay=gapless&rate=" + $scope.sliderVal.realRate + "&connkey=" + $scope.MontageMonitors[i].Monitor.connKey + "&scale=" + ld.montageHistoryQuality + "&rand=" + $rootScope.rand;
+
+
+
+ //console.log ("SWITCHING TO " + $scope.MontageMonitors[i].eventUrl);
+
+ $scope.MontageMonitors[i].Monitor.eventUrlTime = data.events[0].Event.StartTime;
+
+ ZMDataModel.zmLog("Found expanded event " + data.events[0].Event.Id + " for monitor " + $scope.MontageMonitors[i].Monitor.Id);
+ } else {
+ // $scope.MontageMonitors[i].eventUrl="img/noevent.png";
+ // $scope.MontageMonitors[i].eventUrlTime = "";
+ // ZMDataModel.zmLog ("Setting img src to null as data received in background");
+ }
}
- }
-
- })
- .error (function(data)
- {
- });
+
+ })
+ .error(function (data) {});
}
}
-
+
//---------------------------------------------------------
// This is periodically called to get the current playing
// event by zms. I use this to display a timestamp
// Its a 2 step process - get event Id then go a Event
// API call to get time stamp. Sucks
//---------------------------------------------------------
-
- function checkAllEvents()
- {
-
+
+ function checkAllEvents() {
+
//console.log ("Events are checked....");
-
- for (var i=0; i<$scope.MontageMonitors.length; i++)
- {
+
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
// don't check for monitors that are not shown
// because nph connkey won't exist and the response
// will fail
- if ($scope.MontageMonitors[i].Monitor.eventUrl !="" && $scope.MontageMonitors[i].Monitor.eventUrl !='img/noevent.png' && $scope.MontageMonitors[i].Monitor.connKey !='' &&
- $scope.MontageMonitors[i].Monitor.Function !='None' &&
- $scope.MontageMonitors[i].Monitor.listDisplay!='noshow' &&
- $scope.MontageMonitors[i].Monitor.Enabled !='0')
- {
- ZMDataModel.zmDebug ("Checking event status for " + $scope.MontageMonitors[i].Monitor.Name + ":"+$scope.MontageMonitors[i].Monitor.eventUrl+":"+$scope.MontageMonitors[i].Monitor.Function+":"+$scope.MontageMonitors[i].Monitor.listDisplay);
- controlEventStream('99','',$scope.MontageMonitors[i].Monitor.connKey, i);
-
+ if ($scope.MontageMonitors[i].Monitor.eventUrl != "" && $scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png' && $scope.MontageMonitors[i].Monitor.connKey != '' &&
+ $scope.MontageMonitors[i].Monitor.Function != 'None' &&
+ $scope.MontageMonitors[i].Monitor.listDisplay != 'noshow' &&
+ $scope.MontageMonitors[i].Monitor.Enabled != '0') {
+ ZMDataModel.zmDebug("Checking event status for " + $scope.MontageMonitors[i].Monitor.Name + ":" + $scope.MontageMonitors[i].Monitor.eventUrl + ":" + $scope.MontageMonitors[i].Monitor.Function + ":" + $scope.MontageMonitors[i].Monitor.listDisplay);
+ controlEventStream('99', '', $scope.MontageMonitors[i].Monitor.connKey, i);
+
}
}
}
-
-
- $scope.dateChanged = function()
- {
- // window.stop();
- // console.log (">>>>>>>>>>>>>>>>>>>>>>>>>>>>> BAD BAD");
+
+
+ $scope.dateChanged = function () {
+ // window.stop();
+ // console.log (">>>>>>>>>>>>>>>>>>>>>>>>>>>>> BAD BAD");
footerCollapse();
};
-
+
//--------------------------------------------------------------
// Used to control zms for a connkey. If ndx is not -1,
// then it also calls an event API for the returned eid
// and stores its time in the montage monitors array
//--------------------------------------------------------------
- $scope.controlEventStream = function (cmd,disp,connkey,ndx)
- {
- controlEventStream(cmd,disp,connkey,ndx);
+ $scope.controlEventStream = function (cmd, disp, connkey, ndx) {
+ controlEventStream(cmd, disp, connkey, ndx);
};
-
- function timedControlEventStream (mTime, cmd, disp, connkey, ndx)
- {
+
+ function timedControlEventStream(mTime, cmd, disp, connkey, ndx) {
var mMtime = mTime || 2000;
- ZMDataModel.zmDebug ("Deferring control " + cmd + " by " + mMtime);
- $timeout ( function()
- {
- subControlStream(cmd,connkey);
-
- },mMtime);
+ ZMDataModel.zmDebug("Deferring control " + cmd + " by " + mMtime);
+ $timeout(function () {
+ subControlStream(cmd, connkey);
+
+ }, mMtime);
}
-
- function subControlStream(cmd,connkey)
- {
+
+ function subControlStream(cmd, connkey) {
var loginData = ZMDataModel.getLogin();
- var myauthtoken = $rootScope.authSession.replace("&auth=","");
+ var myauthtoken = $rootScope.authSession.replace("&auth=", "");
//&auth=
- var req = $http({
- method: 'POST',
- /*timeout: 15000,*/
- url: loginData.url + '/index.php',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- //'Accept': '*/*',
- },
- transformRequest: function (obj) {
- var str = [];
- for (var p in obj)
- str.push(encodeURIComponent(p) + "=" +
- encodeURIComponent(obj[p]));
- var foo = str.join("&");
- //console.log("****SUB RETURNING " + foo);
- return foo;
- },
-
- data: {
- view: "request",
- request: "stream",
- connkey: connkey,
- command: cmd,
- auth: myauthtoken,
- // user: loginData.username,
- // pass: loginData.password
- }
- });
-
- req.success (function (resp) {
- ZMDataModel.zmDebug ("subControl success:"+JSON.stringify(resp));
- });
-
-
- req.error (function (resp) {
- ZMDataModel.zmDebug ("subControl error:"+JSON.stringify(resp));
- });
+ var req = $http({
+ method: 'POST',
+ /*timeout: 15000,*/
+ url: loginData.url + '/index.php',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ //'Accept': '*/*',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var foo = str.join("&");
+ //console.log("****SUB RETURNING " + foo);
+ return foo;
+ },
+
+ data: {
+ view: "request",
+ request: "stream",
+ connkey: connkey,
+ command: cmd,
+ auth: myauthtoken,
+ // user: loginData.username,
+ // pass: loginData.password
+ }
+ });
+
+ req.success(function (resp) {
+ ZMDataModel.zmDebug("subControl success:" + JSON.stringify(resp));
+ });
+
+
+ req.error(function (resp) {
+ ZMDataModel.zmDebug("subControl error:" + JSON.stringify(resp));
+ });
}
-
-
+
+
function controlEventStream(cmd, disp, connkey, ndx) {
- // console.log("Command value " + cmd);
-
- if (disp) {
- $ionicLoading.hide();
- $ionicLoading.show({
- template: $translate.instant('kPleaseWait')+"...",
- noBackdrop: true,
- duration: zm.loadingTimeout,
- });
- }
- var loginData = ZMDataModel.getLogin();
-
- /*
- var CMD_NONE = 0;
- var CMD_PAUSE = 1;
- var CMD_PLAY = 2;
- var CMD_STOP = 3;
- var CMD_FASTFWD = 4;
- var CMD_SLOWFWD = 5;
- var CMD_SLOWREV = 6;
- var CMD_FASTREV = 7;
- var CMD_ZOOMIN = 8;
- var CMD_ZOOMOUT = 9;
- var CMD_PAN = 10;
- var CMD_SCALE = 11;
- var CMD_PREV = 12;
- var CMD_NEXT = 13;
- var CMD_SEEK = 14;
- var CMD_QUERY = 99;
- */
-
-
-
- // You need to POST commands to control zms
- // Note that I am url encoding the parameters into the URL
- // If I leave it as JSON, it gets converted to OPTONS due
- // to CORS behaviour and ZM/Apache don't seem to handle it
-
- //console.log("POST: " + loginData.url + '/index.php');
-
- //console.log ("AUTH IS " + $rootScope.authSession);
-
- var myauthtoken = $rootScope.authSession.replace("&auth=","");
- //&auth=
- var req = $http({
- method: 'POST',
- /*timeout: 15000,*/
- url: loginData.url + '/index.php',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- //'Accept': '*/*',
- },
- transformRequest: function (obj) {
- var str = [];
- for (var p in obj)
- str.push(encodeURIComponent(p) + "=" +
- encodeURIComponent(obj[p]));
- var foo = str.join("&");
- // console.log("****RETURNING " + foo);
- return foo;
- },
-
- data: {
- view: "request",
- request: "stream",
- connkey: connkey,
- command: cmd,
- auth: myauthtoken,
- // user: loginData.username,
- // pass: loginData.password
- }
+ // console.log("Command value " + cmd);
+
+ if (disp) {
+ $ionicLoading.hide();
+ $ionicLoading.show({
+ template: $translate.instant('kPleaseWait') + "...",
+ noBackdrop: true,
+ duration: zm.loadingTimeout,
});
- req.success(function (resp) {
-
- // console.log("SUCCESS FOR: " + JSON.stringify(resp));
-
- if (resp.result=="Ok" && ndx != -1)
- {
- var ld = ZMDataModel.getLogin();
- var apiurl= ld.apiurl + "/events/"+resp.status.event+".json";
- //console.log ("API " + apiurl);
- $http.get (apiurl)
- .success (function (data)
- {
+ }
+ var loginData = ZMDataModel.getLogin();
+
+ /*
+ var CMD_NONE = 0;
+ var CMD_PAUSE = 1;
+ var CMD_PLAY = 2;
+ var CMD_STOP = 3;
+ var CMD_FASTFWD = 4;
+ var CMD_SLOWFWD = 5;
+ var CMD_SLOWREV = 6;
+ var CMD_FASTREV = 7;
+ var CMD_ZOOMIN = 8;
+ var CMD_ZOOMOUT = 9;
+ var CMD_PAN = 10;
+ var CMD_SCALE = 11;
+ var CMD_PREV = 12;
+ var CMD_NEXT = 13;
+ var CMD_SEEK = 14;
+ var CMD_QUERY = 99;
+ */
+
+
+
+ // You need to POST commands to control zms
+ // Note that I am url encoding the parameters into the URL
+ // If I leave it as JSON, it gets converted to OPTONS due
+ // to CORS behaviour and ZM/Apache don't seem to handle it
+
+ //console.log("POST: " + loginData.url + '/index.php');
+
+ //console.log ("AUTH IS " + $rootScope.authSession);
+
+ var myauthtoken = $rootScope.authSession.replace("&auth=", "");
+ //&auth=
+ var req = $http({
+ method: 'POST',
+ /*timeout: 15000,*/
+ url: loginData.url + '/index.php',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ //'Accept': '*/*',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var foo = str.join("&");
+ // console.log("****RETURNING " + foo);
+ return foo;
+ },
+
+ data: {
+ view: "request",
+ request: "stream",
+ connkey: connkey,
+ command: cmd,
+ auth: myauthtoken,
+ // user: loginData.username,
+ // pass: loginData.password
+ }
+ });
+ req.success(function (resp) {
+
+ // console.log("SUCCESS FOR: " + JSON.stringify(resp));
+
+ if (resp.result == "Ok" && ndx != -1) {
+ var ld = ZMDataModel.getLogin();
+ var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json";
+ //console.log ("API " + apiurl);
+ $http.get(apiurl)
+ .success(function (data) {
var currentEventTime = moment(data.event.Event.StartTime);
var maxTime = moment($scope.datetimeValueTo.value);
//ZMDataModel.zmDebug ("Monitor: " + $scope.MontageMonitors[ndx].Monitor.Id + " max time="+maxTime + "("+$scope.datetimeValueTo.value+")"+ " current="+currentEventTime + "("+data.event.Event.StartTime+")");
- if ($scope.MontageMonitors[ndx].Monitor.eventUrlTime!=data.event.Event.StartTime && currentEventTime.diff(maxTime) <= 0 )
- {
-
+ if ($scope.MontageMonitors[ndx].Monitor.eventUrlTime != data.event.Event.StartTime && currentEventTime.diff(maxTime) <= 0) {
+
var ld = ZMDataModel.getLogin();
- var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id+"-timeline"));
- element.removeClass ('animated flipInX');
- element.addClass('animated flipOutX');
- $timeout (function() {
- element.removeClass ('animated flipOutX');
- element.addClass('animated flipInX');
- $scope.MontageMonitors[ndx].Monitor.eventUrlTime=data.event.Event.StartTime;
-
- $scope.MontageMonitors[ndx].Monitor.eventUrl=ld.streamingurl+"/nph-zms?source=event&mode=jpeg&event="+data.event.Event.Id+"&frame=1&replay=gapless&rate="+$scope.sliderVal.realRate+"&connkey="+$scope.MontageMonitors[ndx].Monitor.connKey+"&scale="+ld.montageHistoryQuality+"&rand="+$rootScope.rand;
- },700);
-
- }
- else if ( currentEventTime.diff(maxTime)>0)
- {
- ZMDataModel.zmDebug (">>>>>>>>Monitor " + $scope.MontageMonitors[ndx].Monitor.Id + " event time of " + data.event.Event.StartTime + " exceeds " + $scope.datetimeValueTo.value +" stopping...");
- subControlStream(17,connkey);
-
-
+ var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id + "-timeline"));
+ element.removeClass('animated flipInX');
+ element.addClass('animated flipOutX');
+ $timeout(function () {
+ element.removeClass('animated flipOutX');
+ element.addClass('animated flipInX');
+ $scope.MontageMonitors[ndx].Monitor.eventUrlTime = data.event.Event.StartTime;
+
+ $scope.MontageMonitors[ndx].Monitor.eventUrl = ld.streamingurl + "/nph-zms?source=event&mode=jpeg&event=" + data.event.Event.Id + "&frame=1&replay=gapless&rate=" + $scope.sliderVal.realRate + "&connkey=" + $scope.MontageMonitors[ndx].Monitor.connKey + "&scale=" + ld.montageHistoryQuality + "&rand=" + $rootScope.rand;
+ }, 700);
+
+ } else if (currentEventTime.diff(maxTime) > 0) {
+ ZMDataModel.zmDebug(">>>>>>>>Monitor " + $scope.MontageMonitors[ndx].Monitor.Id + " event time of " + data.event.Event.StartTime + " exceeds " + $scope.datetimeValueTo.value + " stopping...");
+ subControlStream(17, connkey);
+
+
}
-
+
})
- .error (function (data)
- {
- $scope.MontageMonitors[ndx].Monitor.eventUrlTime="-";
+ .error(function (data) {
+ $scope.MontageMonitors[ndx].Monitor.eventUrlTime = "-";
});
-
- }
- });
- req.error(function (resp) {
- //console.log("ERROR: " + JSON.stringify(resp));
- ZMDataModel.zmLog("Error sending event command " + JSON.stringify(resp), "error");
- });
- }
+ }
+ });
+
+ req.error(function (resp) {
+ //console.log("ERROR: " + JSON.stringify(resp));
+ ZMDataModel.zmLog("Error sending event command " + JSON.stringify(resp), "error");
+ });
+ }
//---------------------------------------------------------------------
// Controller main
@@ -480,104 +439,107 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
-
- $scope.timeFormat = "yyyy-MM-dd "+ZMDataModel.getTimeFormat();
+
+ $scope.timeFormat = "yyyy-MM-dd " + ZMDataModel.getTimeFormat();
$scope.displayDateTimeSliders = true;
$scope.showtimers = true;
$scope.loginData = ZMDataModel.getLogin();
-
-
+
+
var curYear = new Date().getFullYear();
-
+
var readyToRun = false;
var i;
-
+
$scope.sliderVal = {
-
- rate:1,
- realRate:100,
- hideNoEvents:false,
- enableGapless:true,
- exactMatch:false,
- showTimeline:true
-
+
+ rate: 1,
+ realRate: 100,
+ hideNoEvents: false,
+ enableGapless: true,
+ exactMatch: false,
+ showTimeline: true
+
};
-
-
-
+
+
+
// default = start of day
var timeto = moment();
var timefrom = moment().startOf('day');
-
+
$scope.sliderVal.rate = 1;
- $scope.sliderVal.realRate = $scope.sliderVal.rate *100;
-
-
-
+ $scope.sliderVal.realRate = $scope.sliderVal.rate * 100;
+
+
+
//var tdatetimeValueFrom = new Date();
//tdatetimeValueFrom.setDate(tdatetimeValueFrom.getDate()-1);
-
- $scope.datetimeValueFrom = {value:""};
- $scope.datetimeValueTo = {value:""};
-
- $scope.datetimeValueFrom.value = timefrom.toDate();
- $scope.datetimeValueTo.value = timeto.toDate();
-
- $rootScope.eventQueryInterval="";
-
-
- var commonCss =
- {
-
- background: {
- "background-color": "silver"
- },
- before: {
- "background-color": "purple"
- },
- default: {
- "background-color": "white"
- }, // default value: 1px
- after: {
- "background-color": "green"
- }, // zone after default value
- pointer: {
- "background-color": "red"
- }, // circle pointer
- range: {
- "background-color": "red"
- } // use it if double value
- };
-
-
- $scope.slider_modal_options_rate = {
- from: 1,
- to: 10,
- realtime: true,
- step: 1,
- className: "mySliderClass",
- //modelLabels:function(val) {return "";},
- smooth: false,
- css: commonCss,
- dimension:'X'
-
- };
-
-
-
+
+ $scope.datetimeValueFrom = {
+ value: ""
+ };
+ $scope.datetimeValueTo = {
+ value: ""
+ };
+
+ $scope.datetimeValueFrom.value = timefrom.toDate();
+ $scope.datetimeValueTo.value = timeto.toDate();
+
+ $rootScope.eventQueryInterval = "";
+
+
+ var commonCss = {
+
+ background: {
+ "background-color": "silver"
+ },
+ before: {
+ "background-color": "purple"
+ },
+ default: {
+ "background-color": "white"
+ }, // default value: 1px
+ after: {
+ "background-color": "green"
+ }, // zone after default value
+ pointer: {
+ "background-color": "red"
+ }, // circle pointer
+ range: {
+ "background-color": "red"
+ } // use it if double value
+ };
+
+
+ $scope.slider_modal_options_rate = {
+ from: 1,
+ to: 10,
+ realtime: true,
+ step: 1,
+ className: "mySliderClass",
+ //modelLabels:function(val) {return "";},
+ smooth: false,
+ css: commonCss,
+ dimension: 'X'
+
+ };
+
+
+
var isLongPressActive = false;
$scope.isReorder = false;
var intervalHandleMontage; // will hold image resize timer on long press
var montageIndex = 0; // will hold monitor ID to scale in timer
-
+
var gridcontainer;
$scope.monitorSize = []; // array with montage sizes per monitor
$scope.scaleDirection = []; // 1 = increase -1 = decrease
$scope.slider = {};
-
+
//console.log ("************ HISTORY " + ZMDataModel.getMontageSize());
$scope.slider.monsize = ZMDataModel.getMontageSize();
$scope.revMonSize = 11 - parseInt($scope.slider.monsize);
@@ -595,86 +557,78 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
var montageOrder = []; // This array will keep the ordering in montage view
var hiddenOrder = []; // 1 = hide, 0 = don't hide
-
+
var tempMonitors = message;
- if (tempMonitors.length == 0)
- {
- $rootScope.zmPopup= $ionicPopup.alert({
- title: $translate.instant('kNoMonitors'),
- template:$translate.instant('kPleaseCheckCredentials')
+ if (tempMonitors.length == 0) {
+ $rootScope.zmPopup = $ionicPopup.alert({
+ title: $translate.instant('kNoMonitors'),
+ template: $translate.instant('kPleaseCheckCredentials')
});
$ionicHistory.nextViewOptions({
- disableBack: true
+ disableBack: true
});
$state.go("login");
return;
}
-
- // console.log ("TEMP MONITORS IS " + JSON.stringify(tempMonitors));
+
+ // console.log ("TEMP MONITORS IS " + JSON.stringify(tempMonitors));
var tempResponse = ZMDataModel.applyMontageMonitorPrefs(message, 0);
$scope.monitors = tempResponse[0];
montageOrder = tempResponse[1];
hiddenOrder = tempResponse[2];
-
+
ZMDataModel.zmLog("Inside MontageHistoryCtrl:We found " + $scope.monitors.length + " monitors");
- $scope.MontageMonitors = ZMDataModel.applyMontageMonitorPrefs (message, 1)[0];
-
+ $scope.MontageMonitors = ZMDataModel.applyMontageMonitorPrefs(message, 1)[0];
+
var loginData = ZMDataModel.getLogin();
-
+
$scope.packMontage = loginData.packMontage;
-
-
+
+
// init monitors
ZMDataModel.zmDebug(">>Initializing connkeys and images...");
- for ( i=0; i< $scope.MontageMonitors.length; i++)
- {
- //$scope.MontageMonitors[i].Monitor.connKey='';
-
-
-
- $scope.MontageMonitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- $scope.MontageMonitors[i].Monitor.eventUrl ='img/noevent.png';
- $scope.MontageMonitors[i].Monitor.eventUrlTime="";
- $scope.MontageMonitors[i].Monitor.isPaused=false;
-
-
- }
+ for (i = 0; i < $scope.MontageMonitors.length; i++) {
+ //$scope.MontageMonitors[i].Monitor.connKey='';
+
+
+
+ $scope.MontageMonitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ $scope.MontageMonitors[i].Monitor.eventUrl = 'img/noevent.png';
+ $scope.MontageMonitors[i].Monitor.eventUrlTime = "";
+ $scope.MontageMonitors[i].Monitor.isPaused = false;
+
+
+ }
readyToRun = true;
-
-
-
+
+
+
// --------------------------------------------------------
// Handling of back button in case modal is open should
// close the modal
// --------------------------------------------------------
-
+
$ionicPlatform.registerBackButtonAction(function (e) {
- e.preventDefault();
- if ($scope.modal && $scope.modal.isShown())
- {
- // switch off awake, as liveview is finished
- ZMDataModel.zmDebug("Modal is open, closing it");
- ZMDataModel.setAwake(false);
- $scope.modal.remove();
- $scope.isModalActive = false;
- }
- else
- {
- ZMDataModel.zmDebug("Modal is closed, so toggling or exiting");
- if (!$ionicSideMenuDelegate.isOpenLeft())
- {
- $ionicSideMenuDelegate.toggleLeft();
-
- }
- else
- {
- navigator.app.exitApp();
- }
-
+ e.preventDefault();
+ if ($scope.modal && $scope.modal.isShown()) {
+ // switch off awake, as liveview is finished
+ ZMDataModel.zmDebug("Modal is open, closing it");
+ ZMDataModel.setAwake(false);
+ $scope.modal.remove();
+ $scope.isModalActive = false;
+ } else {
+ ZMDataModel.zmDebug("Modal is closed, so toggling or exiting");
+ if (!$ionicSideMenuDelegate.isOpenLeft()) {
+ $ionicSideMenuDelegate.toggleLeft();
+
+ } else {
+ navigator.app.exitApp();
}
-
- }, zm.eventHistoryTimer);
+
+ }
+
+ }, zm.eventHistoryTimer);
@@ -688,22 +642,22 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
var timestamp = new Date().getUTCMilliseconds();
$scope.minimal = $stateParams.minimal;
- $scope.zmMarginTop = $scope.minimal ? 0:15;
+ $scope.zmMarginTop = $scope.minimal ? 0 : 15;
//console.log ("********* MARGIN IS " + $scope.zmMarginTop);
-
+
$scope.isRefresh = $stateParams.isRefresh;
var sizeInProgress = false;
$scope.imageStyle = true;
$ionicSideMenuDelegate.canDragContent(true);
-
+
// Do we have a saved montage array size? No?
- // if (window.localStorage.getItem("montageArraySize") == undefined) {
+ // if (window.localStorage.getItem("montageArraySize") == undefined) {
if (loginData.montageArraySize == '0') {
- for ( i = 0; i < $scope.monitors.length; i++) {
+ for (i = 0; i < $scope.monitors.length; i++) {
$scope.monitorSize.push(ZMDataModel.getMontageSize());
$scope.scaleDirection.push(1);
}
@@ -728,13 +682,12 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
$scope.LoginData = ZMDataModel.getLogin();
$scope.monLimit = $scope.LoginData.maxMontage;
-
- if ($rootScope.platformOS!='ios')
- {
- ZMDataModel.zmLog ("Limiting montage to 5, thanks to Chrome's stupid connection limit");
+
+ if ($rootScope.platformOS != 'ios') {
+ ZMDataModel.zmLog("Limiting montage to 5, thanks to Chrome's stupid connection limit");
$scope.monLimit = 5;
}
-
+
//console.log("********* Inside MontageHistoryCtrl, MAX LIMIT=" + $scope.monLimit);
@@ -750,7 +703,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
var ld = ZMDataModel.getLogin();
-
+
//console.log ("MONITORS " + JSON.stringify($scope.monitors));
$rootScope.validMonitorId = $scope.monitors[0].Monitor.Id;
ZMDataModel.getAuthKey($rootScope.validMonitorId)
@@ -801,10 +754,9 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
$scope.modal.remove();
};
-
-
- $scope.isBackground = function()
- {
+
+
+ $scope.isBackground = function () {
return ZMDataModel.isBackground();
};
@@ -812,44 +764,51 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
-
- $scope.handleAlarmsWhileMinimized = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
-
- $scope.minimal = !$scope.minimal;
+
+ $scope.handleAlarmsWhileMinimized = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+
+ $scope.minimal = !$scope.minimal;
ZMDataModel.zmDebug("MontageHistoryCtrl: switch minimal is " + $scope.minimal);
ionic.Platform.fullScreen($scope.minimal, !$scope.minimal);
$interval.cancel(intervalHandle);
$interval.cancel($rootScope.eventQueryInterval);
-
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
-
-
+
+
//-------------------------------------------------------------
// this is checked to make sure we are not pulling images
// when app is in background. This is a problem with Android,
// for example
//-------------------------------------------------------------
- $scope.isBackground = function()
- {
+ $scope.isBackground = function () {
//console.log ("Is background called from Montage and returned " +
//ZMDataModel.isBackground());
return ZMDataModel.isBackground();
@@ -873,7 +832,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
$scope.reloadReorder = function () {
var refresh = ZMDataModel.getMonitors(1);
-
+
refresh.then(function (data) {
$scope.monitors = data;
$scope.MontageMonitors = data;
@@ -884,7 +843,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
montageOrder[i] = i;
hiddenOrder[i] = 0;
}
-
+
loginData.montageOrder = montageOrder.toString();
loginData.montageHiddenOrder = hiddenOrder.toString();
ZMDataModel.setLogin(loginData);
@@ -900,7 +859,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
loginData.montageHiddenOrder = hiddenOrder.toString();
ZMDataModel.setLogin(loginData);
//window.localStorage.setItem("montageOrder", montageOrder.toString());
- // window.localStorage.setItem("montageHiddenOrder",
+ // window.localStorage.setItem("montageHiddenOrder",
// hiddenOrder.toString());
//console.log("Saved " + montageOrder.toString());
ZMDataModel.zmLog("User press OK. Saved Monitor Order as: " +
@@ -913,7 +872,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
// user tapped cancel
var i, myhiddenorder;
if (loginData.montageOrder == '') {
- //if (window.localStorage.getItem("montageOrder") == undefined) {
+ //if (window.localStorage.getItem("montageOrder") == undefined) {
for (i = 0; i < $scope.MontageMonitors.length; i++) {
montageOrder[i] = i;
hiddenOrder[i] = 0;
@@ -924,7 +883,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
{
var myorder = loginData.montageOrder;
- if (loginData.montageHiddenOrder=='') {
+ if (loginData.montageHiddenOrder == '') {
for (i = 0; i < $scope.MontageMonitors.length; i++) {
hiddenOrder[i] = 0;
}
@@ -1082,7 +1041,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
};
$scope.callback = function () {
- // console.log("dragging");
+ // console.log("dragging");
};
@@ -1095,21 +1054,20 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
};
-
+
//---------------------------------------------------------------------
// changes order of montage display
//---------------------------------------------------------------------
-
- $scope.toggleMontageDisplayOrder = function()
- {
+
+ $scope.toggleMontageDisplayOrder = function () {
$scope.packMontage = !$scope.packMontage;
loginData.packMontage = $scope.packMontage;
ZMDataModel.setLogin(loginData);
//console.log ("Switching orientation");
};
-
+
//---------------------------------------------------------------------
// In Android, the app runs full steam while in background mode
// while in iOS it gets suspended unless you ask for specific resources
@@ -1121,7 +1079,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
ZMDataModel.zmDebug("MontageHistoryCtrl: onpause called");
$interval.cancel($rootScope.eventQueryInterval);
$interval.cancel(intervalHandle);
-
+
// $interval.cancel(modalIntervalHandle);
// FIXME: Do I need to setAwake(false) here?
@@ -1129,28 +1087,28 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
function onResume() {
-
+
// FIXME: Do we need to resume timers? when you resume, you go to portal and then here
- /*
- if (!$scope.isModalActive) {
- var ld = ZMDataModel.getLogin();
-
-
- ZMDataModel.zmDebug("MontageHistoryCtrl: onresume called");
- ZMDataModel.zmLog("Restarting eventQuery timer on resume");
-
- console.log ("************** TIMER STARTED INSIDE RESUME ***************");
-
- //$rootScope.rand = Math.floor((Math.random() * 100000) + 1);
- $interval.cancel($rootScope.eventQueryInterval);
- $rootScope.eventQueryInterval = $interval(function () {
- checkAllEvents();
- // console.log ("Refreshing Image...");
- }.bind(this),zm.eventHistoryTimer);
- } else // modal is active
- {
- // $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1);
- }*/
+ /*
+ if (!$scope.isModalActive) {
+ var ld = ZMDataModel.getLogin();
+
+
+ ZMDataModel.zmDebug("MontageHistoryCtrl: onresume called");
+ ZMDataModel.zmLog("Restarting eventQuery timer on resume");
+
+ console.log ("************** TIMER STARTED INSIDE RESUME ***************");
+
+ //$rootScope.rand = Math.floor((Math.random() * 100000) + 1);
+ $interval.cancel($rootScope.eventQueryInterval);
+ $rootScope.eventQueryInterval = $interval(function () {
+ checkAllEvents();
+ // console.log ("Refreshing Image...");
+ }.bind(this),zm.eventHistoryTimer);
+ } else // modal is active
+ {
+ // $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1);
+ }*/
@@ -1166,12 +1124,12 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
};
$scope.$on('$destroy', function () {
- ZMDataModel.zmDebug("Cancelling eventQueryInterval");
+ ZMDataModel.zmDebug("Cancelling eventQueryInterval");
$interval.cancel($rootScope.eventQueryInterval);
-
-
-
-
+
+
+
+
});
@@ -1184,46 +1142,45 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
var ld = ZMDataModel.getLogin();
//console.log("Setting Awake to " + ZMDataModel.getKeepAwake());
ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
-
+
$interval.cancel($rootScope.eventQueryInterval);
//console.log ("****************** TIMER STARTED INSIDE ENTER");
$rootScope.eventQueryInterval = $interval(function () {
checkAllEvents();
// console.log ("Refreshing Image...");
- }.bind(this), zm.eventHistoryTimer);
-
-
-
+ }.bind(this), zm.eventHistoryTimer);
+
+
+
+
-
});
-
+
/*$scope.$on ('$ionicView.unloaded', function() {
console.log ("******** HISTORY UNLOADED KILLING WINDOW ************");
window.stop();
});*/
-
- $scope.$on('$ionicView.beforeEnter', function () {
-
- // ZMDataModel.zmLog ("Before Enter History: initing connkeys");
-
-
-
-
-
- });
-
+
+ $scope.$on('$ionicView.beforeEnter', function () {
+
+ // ZMDataModel.zmLog ("Before Enter History: initing connkeys");
+
+
+
+
+
+ });
+
$scope.$on('$ionicView.beforeLeave', function () {
//console.log("**VIEW ** Event History Ctrl Left, force removing modal");
if ($scope.modal) $scope.modal.remove();
-
-
- ZMDataModel.zmLog ("BeforeLeave: Nullifying the streams...");
-
- for (i=0; i< $scope.MontageMonitors.length; i++)
- {
- var element = document.getElementById("img-"+i);
+
+
+ ZMDataModel.zmLog("BeforeLeave: Nullifying the streams...");
+
+ for (i = 0; i < $scope.MontageMonitors.length; i++) {
+ var element = document.getElementById("img-" + i);
/*if (element)
{
ZMDataModel.zmDebug("BeforeLeave: Nullifying " + element.src);
@@ -1233,42 +1190,40 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
//$scope.$apply(nullify(element));
//element.src="";
}*/
-
+
}
-
-
-
+
+
+
ZMDataModel.zmLog("Cancelling event query timer");
$interval.cancel($rootScope.eventQueryInterval);
-
- ZMDataModel.zmLog ("MontageHistory:Stopping network pull...");
+
+ ZMDataModel.zmLog("MontageHistory:Stopping network pull...");
// make sure this is applied in scope digest to stop network pull
// thats why we are doing it beforeLeave
-
- for ( i=0; i<$scope.MontageMonitors.length; i++)
- {
- if ($scope.MontageMonitors[i].Monitor.connKey !='' &&
- $scope.MontageMonitors[i].Monitor.eventUrl !='img/noevent.png' &&
- $scope.MontageMonitors[i].Monitor.Function !='None' &&
- $scope.MontageMonitors[i].Monitor.lisDisplay!='noshow' &&
- $scope.MontageMonitors[i].Monitor.Enabled !='0')
- {
- ZMDataModel.zmLog ("Before leave: Calling kill with " + $scope.MontageMonitors[i].Monitor.connKey);
+
+ for (i = 0; i < $scope.MontageMonitors.length; i++) {
+ if ($scope.MontageMonitors[i].Monitor.connKey != '' &&
+ $scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png' &&
+ $scope.MontageMonitors[i].Monitor.Function != 'None' &&
+ $scope.MontageMonitors[i].Monitor.lisDisplay != 'noshow' &&
+ $scope.MontageMonitors[i].Monitor.Enabled != '0') {
+ ZMDataModel.zmLog("Before leave: Calling kill with " + $scope.MontageMonitors[i].Monitor.connKey);
var tmpCK = angular.copy($scope.MontageMonitors[i].Monitor.connKey);
- timedControlEventStream(2500,17,"",tmpCK,-1);
+ timedControlEventStream(2500, 17, "", tmpCK, -1);
}
- }
-
- ZMDataModel.zmLog ("Forcing a window.stop() here");
+ }
+
+ ZMDataModel.zmLog("Forcing a window.stop() here");
ZMDataModel.stopNetwork("MontageHistory-beforeLeave");
-
-
-
-
+
+
+
+
});
$scope.$on('$ionicView.unloaded', function () {
-
+
});
//---------------------------------------------------------
@@ -1283,7 +1238,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
//console.log('Size has changed');
ZMDataModel.setMontageSize(val);
//console.log("ZMData Montage is " + ZMDataModel.getMontageSize() +
- // " and slider montage is " + $scope.slider.monsize);
+ // " and slider montage is " + $scope.slider.monsize);
// Now go ahead and reset sizes of entire monitor array
var monsizestring = "";
var i;
@@ -1301,10 +1256,10 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
//window.localStorage.setItem("montageArraySize", monsizestring);
sizeInProgress = false;
}
-
-
-
+
+
+
$scope.$on('$ionicView.afterEnter', function () {
// This rand is really used to reload the monitor image in img-src so it is not cached
diff --git a/www/js/NewsCtrl.js b/www/js/NewsCtrl.js
index b914b32a..294f0a98 100644
--- a/www/js/NewsCtrl.js
+++ b/www/js/NewsCtrl.js
@@ -2,28 +2,32 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console,moment*/
-angular.module('zmApp.controllers').controller('zmApp.NewsCtrl', ['$scope', '$rootScope', '$ionicModal', 'ZMDataModel','$ionicSideMenuDelegate', '$ionicHistory', '$state', '$http', 'zm', function ($scope, $rootScope, $ionicModal, ZMDataModel,$ionicSideMenuDelegate, $ionicHistory, $state, $http, zm) {
-$scope.openMenu = function () {
- $ionicSideMenuDelegate.toggleLeft();
- };
+angular.module('zmApp.controllers').controller('zmApp.NewsCtrl', ['$scope', '$rootScope', '$ionicModal', 'ZMDataModel', '$ionicSideMenuDelegate', '$ionicHistory', '$state', '$http', 'zm', function ($scope, $rootScope, $ionicModal, ZMDataModel, $ionicSideMenuDelegate, $ionicHistory, $state, $http, zm) {
+ $scope.openMenu = function () {
+ $ionicSideMenuDelegate.toggleLeft();
+ };
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
};
- //-------------------------------------------------------------------------
+ //-------------------------------------------------------------------------
// Lets make sure we set screen dim properly as we enter
// The problem is we enter other states before we leave previous states
// from a callback perspective in ionic, so we really can't predictably
@@ -31,14 +35,13 @@ $scope.openMenu = function () {
// state, that effectively overwrites current view power management needs
//------------------------------------------------------------------------
$scope.$on('$ionicView.enter', function () {
- // console.log("**VIEW ** News Ctrl Entered");
+ // console.log("**VIEW ** News Ctrl Entered");
ZMDataModel.setAwake(false);
-
-
+
+
});
-
- $scope.isUnread = function(itemdate)
- {
+
+ $scope.isUnread = function (itemdate) {
var lastDate = ZMDataModel.getLatestBlogPostChecked();
//get("latestBlogPostChecked");
if (!lastDate) return true;
@@ -46,61 +49,56 @@ $scope.openMenu = function () {
var mItemDate = moment(itemdate);
//var unread = mItemDate.diff(mLastDate) >0) ? true:false;
//console.log (unread);
- return (mItemDate.diff(mLastDate) >0) ? true:false;
-
-
+ return (mItemDate.diff(mLastDate) > 0) ? true : false;
+
+
};
-
- $scope.loadPost = function (item, itemdate)
- {
+
+ $scope.loadPost = function (item, itemdate) {
var lastDate =
- ZMDataModel.getLatestBlogPostChecked(); //zmStorageService.get("latestBlogPostChecked");
-
-
- if (!lastDate)
- {
- ZMDataModel.zmDebug ("First time checking blog posts, I see");
+ ZMDataModel.getLatestBlogPostChecked(); //zmStorageService.get("latestBlogPostChecked");
+
+
+ if (!lastDate) {
+ ZMDataModel.zmDebug("First time checking blog posts, I see");
ZMDataModel.setLatestBlogPostChecked(itemdate);
//zmStorageService.set("latestBlogPostChecked", itemdate);
- }
-
- else
- {
- ZMDataModel.zmDebug ("last post checked is " + lastDate);
- ZMDataModel.zmDebug ("current post dated is " + itemdate);
-
+ } else {
+ ZMDataModel.zmDebug("last post checked is " + lastDate);
+ ZMDataModel.zmDebug("current post dated is " + itemdate);
+
var mLastDate = moment(lastDate);
var mItemDate = moment(itemdate);
- if (mItemDate.diff(mLastDate) >0)
- {
- ZMDataModel.zmDebug ("Updating lastDate to this post");
-
- ZMDataModel.setLatestBlogPostChecked(itemdate); //zmStorageService.set("latestBlogPostChecked", itemdate);
-
- if (itemdate == $scope.newsItems[0].date)
- {
+ if (mItemDate.diff(mLastDate) > 0) {
+ ZMDataModel.zmDebug("Updating lastDate to this post");
+
+ ZMDataModel.setLatestBlogPostChecked(itemdate); //zmStorageService.set("latestBlogPostChecked", itemdate);
+
+ if (itemdate == $scope.newsItems[0].date) {
// we are reading the latest post
- $rootScope.newBlogPost="";
+ $rootScope.newBlogPost = "";
}
}
-
+
}
- window.open(item, '_blank', 'location=yes');
+ window.open(item, '_blank', 'location=yes');
return false;
};
-
- $scope.newsItems=[];
-
- $http.get (zm.blogUrl)
- .success (function(data)
- {
+
+ $scope.newsItems = [];
+
+ $http.get(zm.blogUrl)
+ .success(function (data) {
//console.log ("Here2");
- // console.log (JSON.stringify(data));
- for (var i=0; i<data.length; i++)
- {
- $scope.newsItems.push({title:data[i].title, url:data[i].url, date:data[i].date});
+ // console.log (JSON.stringify(data));
+ for (var i = 0; i < data.length; i++) {
+ $scope.newsItems.push({
+ title: data[i].title,
+ url: data[i].url,
+ date: data[i].date
+ });
}
-
+
});
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/PortalLoginCtrl.js b/www/js/PortalLoginCtrl.js
index da122d0c..c8e92be6 100644
--- a/www/js/PortalLoginCtrl.js
+++ b/www/js/PortalLoginCtrl.js
@@ -3,12 +3,11 @@
/*This is for the loop closure I am using in line 143 */
/* jslint browser: true*/
/* global vis,cordova,StatusBar,angular,console,moment */
-angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionicPlatform', '$scope', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', 'zmAutoLogin', '$ionicHistory', '$cordovaTouchID', 'EventServer', '$translate',function ($ionicPlatform, $scope, zm, ZMDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, zmAutoLogin, $ionicHistory, $cordovaTouchID, EventServer, $translate) {
+angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionicPlatform', '$scope', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', 'zmAutoLogin', '$ionicHistory', '$cordovaTouchID', 'EventServer', '$translate', function ($ionicPlatform, $scope, zm, ZMDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, zmAutoLogin, $ionicHistory, $cordovaTouchID, EventServer, $translate) {
$scope.$on('$ionicView.enter',
- function ()
- {
+ function () {
ZMDataModel.zmDebug("Inside Portal login Enter handler");
loginData = ZMDataModel.getLogin();
@@ -16,7 +15,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
$ionicHistory.nextViewOptions({
disableBack: true
});
-
+
$scope.pindata = {};
if ($ionicSideMenuDelegate.isOpen()) {
@@ -29,8 +28,8 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
if (ZMDataModel.isLoggedIn()) {
ZMDataModel.zmLog("User credentials are provided");
-
-
+
+
// You can login either via touch ID or typing in your code
if ($ionicPlatform.is('ios') && loginData.usePin) {
@@ -50,8 +49,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
}, function (error) {
ZMDataModel.zmLog("TouchID not supported");
});
- }
- else // touch was not used
+ } else // touch was not used
{
ZMDataModel.zmLog("not checking for touchID");
}
@@ -61,38 +59,32 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
$scope.pinPrompt = true;
// dont call unlock, let the user type in code
- }
- else // no PIN Code so go directly to auth
+ } else // no PIN Code so go directly to auth
{
-
+
unlock(true);
}
- }
- else // login creds are not present
+ } else // login creds are not present
{
ZMDataModel.zmDebug("PortalLogin: Not logged in, so going to login");
- if (ZMDataModel.isFirstUse())
- {
- ZMDataModel.zmDebug ("First use, showing warm and fuzzy...");
+ if (ZMDataModel.isFirstUse()) {
+ ZMDataModel.zmDebug("First use, showing warm and fuzzy...");
$ionicHistory.nextViewOptions({
disableAnimate: true,
disableBack: true
});
$state.go('first-use');
- }
- else
- {
- if (!$rootScope.userCancelledAuth)
- {
- $ionicHistory.nextViewOptions({
- disableAnimate: true,
+ } else {
+ if (!$rootScope.userCancelledAuth) {
+ $ionicHistory.nextViewOptions({
+ disableAnimate: true,
disableBack: true
- });
- $state.go("login" ,{"wizard": false});
- }
- else
- {
+ });
+ $state.go("login", {
+ "wizard": false
+ });
+ } else {
// do this only once - rest for next time
$rootScope.userCancelledAuth = false;
}
@@ -118,70 +110,72 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
// call with false meaning check for pin
unlock(false);
};
-
-
+
+
//------------------------------------------------------------------------
// Aaron Lager hack - can't figure out why he gets a 401 after
// successful login and then it works after resaving
//------------------------------------------------------------------------
- function tryLoggingSecondTimeHack()
- {
+ function tryLoggingSecondTimeHack() {
var d = $q.defer();
-
- 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>&nbsp;"+$translate.instant('kAuthenticating')+"...</button>")
- .then(function (data) // success
+
+ 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>&nbsp;" + $translate.instant('kAuthenticating') + "...</button>")
+ .then(function (data) // success
{
- ZMDataModel.zmDebug ("2nd auth login worked");
+ ZMDataModel.zmDebug("2nd auth login worked");
ZMDataModel.getAPIversion()
- .then (function (data) {
- ZMDataModel.getKeyConfigParams(1);
- ZMDataModel.zmLog("2nd auth:Got API version: " + data);
- $rootScope.apiVersion = data;
- var ld = ZMDataModel.getLogin();
- if (ZMDataModel.versionCompare(data,zm.minAppVersion)==-1 && data !="0.0.0")
- {
+ .then(function (data) {
+ ZMDataModel.getKeyConfigParams(1);
+ ZMDataModel.zmLog("2nd auth:Got API version: " + data);
+ $rootScope.apiVersion = data;
+ var ld = ZMDataModel.getLogin();
+ if (ZMDataModel.versionCompare(data, zm.minAppVersion) == -1 && data != "0.0.0") {
+
+ $state.go('lowversion', {
+ "ver": data
+ });
+ }
- $state.go('lowversion', {"ver":data});
- }
+ if (ZMDataModel.versionCompare(data, zm.recommendedAppVersion) == -1 && data != "0.0.0") {
- if (ZMDataModel.versionCompare(data,zm.recommendedAppVersion)==-1 && data !="0.0.0")
- {
+ $state.go('importantmessage', {
+ "ver": data
+ });
+ }
+
+ if (data == "0.0.0") {
+
+ ZMDataModel.zmLog("2nd Auth:API getVersion succeeded but returned 0.0.0 " + JSON.stringify(data));
+ ZMDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
+ $state.go("login", {
+ "wizard": false
+ });
+
+ }
+ // coming here means continue
+ EventServer.refresh();
+ var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'montage';
+ //ZMDataModel.zmDebug ("logging state transition");
+ ZMDataModel.zmDebug("2nd Auth: Transitioning state to: " +
+ statetoGo + " with param " + JSON.stringify($rootScope.lastStateParam));
+ $state.go(statetoGo, $rootScope.lastStateParam);
+
+ },
+ function (error) {
+ ZMDataModel.zmDebug("2nd auth API failed, going to login");
+ d.reject("failed 2nd auth");
+ return (d.promise);
+
+ });
+
+
+ },
+ function (error) {
+ ZMDataModel.zmDebug("2nd auth hack failed, going to login");
+ d.reject("failed 2nd auth");
+ return (d.promise);
+ });
- $state.go('importantmessage', {"ver":data});
- }
-
- if (data == "0.0.0")
- {
-
- ZMDataModel.zmLog ("2nd Auth:API getVersion succeeded but returned 0.0.0 " + JSON.stringify(data));
- ZMDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
- $state.go("login" ,{"wizard": false});
-
- }
- // coming here means continue
- EventServer.refresh();
- var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'montage';
- //ZMDataModel.zmDebug ("logging state transition");
- ZMDataModel.zmDebug("2nd Auth: Transitioning state to: " +
- statetoGo + " with param " +JSON.stringify($rootScope.lastStateParam) );
- $state.go(statetoGo, $rootScope.lastStateParam);
-
- },
- function (error) {
- ZMDataModel.zmDebug ("2nd auth API failed, going to login");
- d.reject("failed 2nd auth");
- return (d.promise);
-
- });
-
-
- },
- function (error) {
- ZMDataModel.zmDebug ("2nd auth hack failed, going to login");
- d.reject("failed 2nd auth");
- return (d.promise);
- });
-
return (d.promise);
}
@@ -190,133 +184,141 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
idVerified == true means no pin check needed
== false means check PIN
*/
-
- ZMDataModel.zmDebug("unlock called with check PIN="+idVerified);
- if (idVerified || ($scope.pindata.pin == loginData.pinCode))
- {
+
+ ZMDataModel.zmDebug("unlock called with check PIN=" + idVerified);
+ if (idVerified || ($scope.pindata.pin == loginData.pinCode)) {
ZMDataModel.zmDebug("PIN code entered is correct, or there is no PIN set");
$rootScope.rand = Math.floor((Math.random() * 100000) + 1);
zmAutoLogin.stop(); //safety
zmAutoLogin.start();
-
+
// PIN is fine, or not set so lets login
- 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>&nbsp;"+$translate.instant('kAuthenticating')+"...</button>")
+ 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>&nbsp;" + $translate.instant('kAuthenticating') + "...</button>")
.then(function (data) // success
- {
- ZMDataModel.zmDebug("PortalLogin: auth success");
- ZMDataModel.getKeyConfigParams(1);
- // $state.go("login" ,{"wizard": false});
- //login was ok, so get API details
- ZMDataModel.getAPIversion()
- .then (function(data) {
- ZMDataModel.zmLog("Got API version: " + data);
- $rootScope.apiVersion = data;
- var ld = ZMDataModel.getLogin();
- if (ZMDataModel.versionCompare(data,zm.minAppVersion)==-1 && data !="0.0.0")
- {
-
- $state.go('lowversion', {"ver":data});
- }
-
- if (ZMDataModel.versionCompare(data,zm.recommendedAppVersion)==-1 && data !="0.0.0")
- {
+ {
+ ZMDataModel.zmDebug("PortalLogin: auth success");
+ ZMDataModel.getKeyConfigParams(1);
+ // $state.go("login" ,{"wizard": false});
+ //login was ok, so get API details
+ ZMDataModel.getAPIversion()
+ .then(function (data) {
+ ZMDataModel.zmLog("Got API version: " + data);
+ $rootScope.apiVersion = data;
+ var ld = ZMDataModel.getLogin();
+ if (ZMDataModel.versionCompare(data, zm.minAppVersion) == -1 && data != "0.0.0") {
+
+ $state.go('lowversion', {
+ "ver": data
+ });
+ }
+
+ if (ZMDataModel.versionCompare(data, zm.recommendedAppVersion) == -1 && data != "0.0.0") {
+
+ $state.go('importantmessage', {
+ "ver": data
+ });
+ }
+
+ if (data == "0.0.0") {
+
+ ZMDataModel.zmLog("API getVersion succeeded but returned 0.0.0 " + JSON.stringify(data));
+ ZMDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
+ $state.go("login", {
+ "wizard": false
+ });
+
+ }
+ // coming here means continue
+ EventServer.refresh();
+ var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'montage';
+ ZMDataModel.zmDebug("logging state transition");
+ ZMDataModel.zmDebug("Transitioning state to: " +
+ statetoGo + " with param " + JSON.stringify($rootScope.lastStateParam));
+ $state.go(statetoGo, $rootScope.lastStateParam);
+
+ },
+ function (error) { // API Error
+ ZMDataModel.zmLog("API Error handler: going to login getAPI returned error: " + JSON.stringify(error));
+ //ZMDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
+
+ ZMDataModel.zmDebug("Doing the Aaron Hack after 1 sec....");
+ $timeout(function () {
+ tryLoggingSecondTimeHack()
+ .then(function success(s) {
+ ZMDataModel.zmLog("2nd time login hack worked!, nothing to do");
+ },
+ function error(e) {
+ $state.go("login", {
+ "wizard": false
+ });
+ });
+
+ }, 1000);
+
+ });
+
+
+ if ($rootScope.tappedNotification) {
+
+
+ var ld = ZMDataModel.getLogin();
+ ZMDataModel.zmLog("Came via push tap. onTapScreen=" + ld.onTapScreen);
+ //console.log ("***** NOTIFICATION TAPPED ");
+ $rootScope.tappedNotification = 0;
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
- $state.go('importantmessage', {"ver":data});
- }
-
- if (data == "0.0.0")
- {
-
- ZMDataModel.zmLog ("API getVersion succeeded but returned 0.0.0 " + JSON.stringify(data));
- ZMDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
- $state.go("login" ,{"wizard": false});
-
+ if (ld.onTapScreen == $translate.instant('kTapMontage')) {
+ ZMDataModel.zmDebug("Going to montage");
+ $state.go("montage", {}, {
+ reload: true
+ });
+
+ return;
+ } else if (ld.onTapScreen == $translate.instant('kTapEvents')) {
+ ZMDataModel.zmDebug("Going to events");
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
+ return;
+ } else // we go to live
+ {
+ ZMDataModel.zmDebug("Going to live view ");
+ $state.go("monitors", {}, {
+ reload: true
+ });
+ return;
+ }
}
- // coming here means continue
- EventServer.refresh();
- var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'montage';
- ZMDataModel.zmDebug ("logging state transition");
- ZMDataModel.zmDebug("Transitioning state to: " +
- statetoGo + " with param " +JSON.stringify($rootScope.lastStateParam) );
- $state.go(statetoGo, $rootScope.lastStateParam);
-
- },
- function (error) { // API Error
- ZMDataModel.zmLog ("API Error handler: going to login getAPI returned error: " + JSON.stringify(error));
- //ZMDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
-
- ZMDataModel.zmDebug ("Doing the Aaron Hack after 1 sec....");
- $timeout ( function () {
- tryLoggingSecondTimeHack()
- .then (function success(s) {
- ZMDataModel.zmLog ("2nd time login hack worked!, nothing to do");
- },
- function error(e) {
- $state.go("login" ,{"wizard": false});
- });
-
- },1000);
- });
-
- if ($rootScope.tappedNotification)
- {
-
-
- var ld = ZMDataModel.getLogin();
- ZMDataModel.zmLog ("Came via push tap. onTapScreen="+ld.onTapScreen);
- //console.log ("***** NOTIFICATION TAPPED ");
- $rootScope.tappedNotification = 0;
- $ionicHistory.nextViewOptions({disableBack: true});
-
- if (ld.onTapScreen == $translate.instant('kTapMontage') )
- {
- ZMDataModel.zmDebug("Going to montage");
- $state.go("montage", {}, { reload: true });
-
- return;
- }
- else if (ld.onTapScreen == $translate.instant ('kTapEvents'))
- {
- ZMDataModel.zmDebug("Going to events");
- $state.go("events", {"id": 0}, { reload: true });
- return;
- }
- else // we go to live
- {
- ZMDataModel.zmDebug("Going to live view ");
- $state.go("monitors", {}, { reload: true });
- return;
- }
- }
-
-
- },
+ },
// coming here means auth error
// so go back to login
- function (error) {
- ZMDataModel.zmDebug("PortalLogin: error authenticating " +
- JSON.stringify(error));
- if (!$rootScope.userCancelledAuth)
- {
+ function (error) {
+ ZMDataModel.zmDebug("PortalLogin: error authenticating " +
+ JSON.stringify(error));
+ if (!$rootScope.userCancelledAuth) {
ZMDataModel.displayBanner('error', ['ZoneMinder authentication failed', 'Please check API settings']);
$ionicHistory.nextViewOptions({
disableAnimate: true,
- disableBack: true
+ disableBack: true
});
- $state.go("login" ,{"wizard": false});
- }
- else
- {
- // if user cancelled auth I guess we go to login
- $rootScope.userCancelledAuth = false;
- $state.go("login" ,{"wizard": false});
- }
- });
- }
- else
- {
+ $state.go("login", {
+ "wizard": false
+ });
+ } else {
+ // if user cancelled auth I guess we go to login
+ $rootScope.userCancelledAuth = false;
+ $state.go("login", {
+ "wizard": false
+ });
+ }
+ });
+ } else {
$scope.pindata.status = "Invalid PIN";
// wobble the input box on error
@@ -333,11 +335,11 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
//-------------------------------------------------------------------------------
// Controller Main
//-------------------------------------------------------------------------------
- // console.log("************* ENTERING PORTAL MAIN ");
- ZMDataModel.zmLog ("Entering Portal Main");
+ // console.log("************* ENTERING PORTAL MAIN ");
+ ZMDataModel.zmLog("Entering Portal Main");
var loginData;
- $ionicSideMenuDelegate.canDragContent(true);
+ $ionicSideMenuDelegate.canDragContent(true);
+
-
}]); \ No newline at end of file
diff --git a/www/js/StateCtrl.js b/www/js/StateCtrl.js
index c3f2e860..27a7fcc8 100644
--- a/www/js/StateCtrl.js
+++ b/www/js/StateCtrl.js
@@ -5,7 +5,7 @@
// controller for State View
angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup', '$scope', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$ionicLoading', '$ionicModal', '$state', '$http', '$rootScope', '$timeout', '$ionicHistory', '$translate', function (
- $ionicPopup, $scope, zm, ZMDataModel, $ionicSideMenuDelegate, $ionicLoading, $ionicModal, $state, $http, $rootScope, $timeout,$ionicHistory, $translate) {
+ $ionicPopup, $scope, zm, ZMDataModel, $ionicSideMenuDelegate, $ionicLoading, $ionicModal, $state, $http, $rootScope, $timeout, $ionicHistory, $translate) {
//----------------------------------------------------------------------
// Controller main
@@ -19,10 +19,10 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
$scope.dangerButtonColor = ["button-positive", "button-assertive"];
$scope.customState = "";
$scope.allStateNames = [];
-
+
$rootScope.zmPopup = "";
-
-
+
+
var loginData = ZMDataModel.getLogin();
@@ -43,12 +43,12 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
ZMDataModel.zmDebug("invoking LoadStatus...");
getLoadStatus();
}, 2000);
-
+
$timeout(function () {
ZMDataModel.zmDebug("invoking CurrentState...");
getCurrentState();
}, 4000);
-
+
/*
$timeout(function () {
ZMDataModel.zmDebug("invoking DiskStatus...");
@@ -63,7 +63,7 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
// state, that effectively overwrites current view power management needs
//------------------------------------------------------------------------
$scope.$on('$ionicView.enter', function () {
- // console.log("**VIEW ** Montage Ctrl Entered");
+ // console.log("**VIEW ** Montage Ctrl Entered");
ZMDataModel.setAwake(false);
});
@@ -99,21 +99,25 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
);
}
-
-
+
+
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm=!$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- {
- $rootScope.alarmCount="0";
- $ionicHistory.nextViewOptions({disableBack: true});
- $state.go("events", {"id": 0}, { reload: true });
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
}
- };
+ };
//---------------------------------------------------------
// Allows the user to select a custom run state
@@ -130,7 +134,7 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
title: $translate.instant('kSelectRunState'),
- subTitle: $translate.instant('kCurrentState') + $scope.customState ? ($translate.instant('kCurrentState')+": " + $scope.customState) : "",
+ subTitle: $translate.instant('kCurrentState') + $scope.customState ? ($translate.instant('kCurrentState') + ": " + $scope.customState) : "",
buttons: [
{
text: $translate.instant('kButtonCancel'),
@@ -140,7 +144,7 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
},
{
- text: $translate.instant('kButtonOk'),
+ text: $translate.instant('kButtonOk'),
onTap: function (e) {
return "OK";
@@ -152,7 +156,7 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
// It seems invoking a popup within a popup handler
// causes issues. Doing this outside due to that reason
$rootScope.zmPopup.then(function (res) {
- // console.log("GOT : " + JSON.stringify(res));
+ // console.log("GOT : " + JSON.stringify(res));
if (res == "OK") {
if ($scope.myopt.selectedState != "")
controlZM($scope.myopt.selectedState);
@@ -178,11 +182,11 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
$scope.zmDisk = "unknown";
ZMDataModel.zmLog("Error retrieving disk space, API returned null for obj.Total.space");
}
-
+
},
function (error) {
$scope.zmDisk = "unknown";
- // console.log("ERROR:" + JSON.stringify(error));
+ // console.log("ERROR:" + JSON.stringify(error));
ZMDataModel.zmLog("Error retrieving DiskStatus: " + JSON.stringify(error), "error");
}
);
@@ -307,7 +311,7 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
ZMDataModel.zmDebug("StateCtrl/controlZM: operation in progress");
$ionicPopup.alert({
title: $translate.instant('kOperationInProgressTitle'),
- template: $translate.instant('kOperationInProgressBody')+'...'
+ template: $translate.instant('kOperationInProgressBody') + '...'
});
return;
}
@@ -364,8 +368,8 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
console.log("***Pull to Refresh");
ZMDataModel.zmDebug("StateCtrl/refresh: calling getRun/Load/Disk/CurrentState");
getRunStatus();
- $timeout (getLoadStatus,2000);
- $timeout (getCurrentState,4000);
+ $timeout(getLoadStatus, 2000);
+ $timeout(getCurrentState, 4000);
//$timeout (getDiskStatus,6000);
$scope.$broadcast('scroll.refreshComplete');
diff --git a/www/js/TimelineCtrl.js b/www/js/TimelineCtrl.js
index 3e178bfe..9362a7d1 100644
--- a/www/js/TimelineCtrl.js
+++ b/www/js/TimelineCtrl.js
@@ -49,7 +49,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
// Used to display date range for timeline
//-----------------------------------------------------------
$scope.prettify = function (str) {
- return moment(str).format('MMMM Do YYYY, '+ZMDataModel.getTimeFormat());
+ return moment(str).format('MMMM Do YYYY, ' + ZMDataModel.getTimeFormat());
};
//-----------------------------------------------------------
@@ -66,11 +66,11 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
$scope.toggleMinAlarmFrameCount = function () {
- // console.log("Toggling");
+ // console.log("Toggling");
var ld = ZMDataModel.getLogin();
ld.enableAlarmCount = !ld.enableAlarmCount;
-
+
ZMDataModel.setLogin(ld);
@@ -114,44 +114,42 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
//-----------------------------------------
// Move by X days
//-----------------------------------------
- $scope.moveDays = function (d)
- {
+ $scope.moveDays = function (d) {
var range = timeline.getWindow();
var ds = moment(range.start);
- if (d>0)
- ds.add(d, 'days');
+ if (d > 0)
+ ds.add(d, 'days');
else
ds.subtract(Math.abs(d), 'days');
var es = moment(ds); // clone it!
- es.add (1, 'day');
-
+ es.add(1, 'day');
+
fromDate = ds.format("YYYY-MM-DD HH:mm:ss");
toDate = es.format("YYYY-MM-DD HH:mm:ss");
$scope.fromDate = fromDate;
$scope.toDate = toDate;
$rootScope.customTimelineRange = false;
- ZMDataModel.zmLog ("moving by " + d + " day to " + fromDate + " upto " + toDate);
+ ZMDataModel.zmLog("moving by " + d + " day to " + fromDate + " upto " + toDate);
drawGraph(fromDate, toDate, maxItems);
-
+
};
-
- function eventDetails(ev)
- {
+
+ function eventDetails(ev) {
$scope.event = ev;
- $ionicModal.fromTemplateUrl('templates/timeline-modal.html', {
+ $ionicModal.fromTemplateUrl('templates/timeline-modal.html', {
scope: $scope, // give ModalCtrl access to this scope
animation: 'slide-in-up',
- id:'analyze',
-
+ id: 'analyze',
+
})
.then(function (modal) {
$scope.modal = modal;
-
-
+
+
$scope.modal.show();
@@ -165,20 +163,19 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
// FIXME : code repeat from Events
//--------------------------------------------------------
function openModal(event) {
-
- if ($scope.modalFromTimelineIsOpen == true)
- {
+
+ if ($scope.modalFromTimelineIsOpen == true) {
// don't know why but some conflict from angular to timeline lib
// results in double modals at times
- ZMDataModel.zmLog (">>-- duplicate modal detected, preventing");
+ ZMDataModel.zmLog(">>-- duplicate modal detected, preventing");
}
-
+
$scope.modalFromTimelineIsOpen = true;
ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
// pass this event to ModalCtrl
$scope.currentEvent = event;
-
+
$scope.event = event;
// in Timeline view, make sure events stick to same monitor
$scope.followSameMonitor = "1";
@@ -188,16 +185,16 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
$ionicModal.fromTemplateUrl('templates/events-modal.html', {
scope: $scope, // give ModalCtrl access to this scope
animation: 'slide-in-up',
- id:'footage'
+ id: 'footage'
})
.then(function (modal) {
$scope.modal = modal;
$ionicLoading.show({
- template: $translate.instant('kPleaseWait')+"...",
+ template: $translate.instant('kPleaseWait') + "...",
noBackdrop: true,
duration: 10000,
-
+
});
$scope.modal.show();
@@ -241,7 +238,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
//-------------------------------------------------------------------------
function onPause() {
ZMDataModel.zmDebug("TimelineCtrl:onpause called");
- // console.log("*** Moving to Background ***"); // Handle the pause event
+ // console.log("*** Moving to Background ***"); // Handle the pause event
if ($scope.popover) $scope.popover.remove();
@@ -257,8 +254,9 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
// in context of angular
- $timeout ( function () {
- openModal(event);});
+ $timeout(function () {
+ openModal(event);
+ });
}
@@ -275,27 +273,27 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
//console.log("**Destroying Timeline");
//timeline.destroy();
});
-
-
- $scope.$on('$ionicView.enter', function () {
-
-
-
- // Make sure sliding for menu is disabled so it
- // does not interfere with graph panning
- $ionicSideMenuDelegate.canDragContent(false);
- var ld = ZMDataModel.getLogin();
- maxItemsConf = ($rootScope.platformOS == 'desktop') ? zm.graphDesktopItemMax: zm.graphItemMax;
- maxItems = ld.graphSize || maxItemsConf;
- ZMDataModel.zmLog("Graph items to draw is " + maxItems);
+
+
+ $scope.$on('$ionicView.enter', function () {
+
+
+
+ // Make sure sliding for menu is disabled so it
+ // does not interfere with graph panning
+ $ionicSideMenuDelegate.canDragContent(false);
+ var ld = ZMDataModel.getLogin();
+ maxItemsConf = ($rootScope.platformOS == 'desktop') ? zm.graphDesktopItemMax : zm.graphItemMax;
+ maxItems = ld.graphSize || maxItemsConf;
+ ZMDataModel.zmLog("Graph items to draw is " + maxItems);
$scope.maxItems = maxItems;
$scope.translationData = {
maxItemsVal: maxItems
};
-
+
$scope.graphLoaded = false;
ZMDataModel.zmDebug("TimelineCtrl/drawGraph: graphLoaded is " + $scope.graphLoaded);
- });
+ });
//-------------------------------------------------
// FIXME: shitty hackery -- Im using a rootScope
@@ -307,7 +305,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
// graph range
//-------------------------------------------------
$scope.$on('$ionicView.afterEnter', function () {
- // console.log("***AFTER ENTER");
+ // console.log("***AFTER ENTER");
$scope.modalFromTimelineIsOpen = false;
var tempMon = message;
@@ -322,17 +320,17 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
} else
$scope.monitors = message;
if ($rootScope.customTimelineRange) {
- // console.log("***** CUSTOM RANGE");
+ // console.log("***** CUSTOM RANGE");
if (moment($rootScope.fromString).isValid() &&
moment($rootScope.toString).isValid()) {
- // console.log("FROM & TO IS CUSTOM");
+ // console.log("FROM & TO IS CUSTOM");
fromDate = $rootScope.fromString;
toDate = $rootScope.toString;
$scope.fromDate = fromDate;
$scope.toDate = toDate;
drawGraph(fromDate, toDate, maxItems);
} else {
- // console.log("FROM & TO IS CUSTOM INVALID");
+ // console.log("FROM & TO IS CUSTOM INVALID");
}
} else {
drawGraph(fromDate, toDate, maxItems);
@@ -343,37 +341,31 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
}).then(function (popover) {
$scope.popover = popover;
});
-
-
+
+
// --------------------------------------------------------
- // Handling of back button in case modal is open should
- // close the modal
- // --------------------------------------------------------
-
- $ionicPlatform.registerBackButtonAction(function (e) {
+ // Handling of back button in case modal is open should
+ // close the modal
+ // --------------------------------------------------------
+
+ $ionicPlatform.registerBackButtonAction(function (e) {
e.preventDefault();
- if ($scope.modal !=undefined && $scope.modal.isShown())
- {
+ if ($scope.modal != undefined && $scope.modal.isShown()) {
// switch off awake, as liveview is finished
ZMDataModel.zmDebug("Modal is open, closing it");
ZMDataModel.setAwake(false);
$scope.modal.remove();
- }
- else
- {
+ } else {
ZMDataModel.zmDebug("Modal is closed, so toggling or exiting");
- if (!$ionicSideMenuDelegate.isOpenLeft())
- {
+ if (!$ionicSideMenuDelegate.isOpenLeft()) {
$ionicSideMenuDelegate.toggleLeft();
-
- }
- else
- {
+
+ } else {
navigator.app.exitApp();
}
-
+
}
-
+
}, 1000);
@@ -389,7 +381,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
$scope.ionRange = {
index: 1
};
-
+
var curFromDate, curToDate, curCount;
@@ -415,12 +407,12 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
// maxItems will be ignored during timeline draw if its desktop
- var maxItemsConf;
-
+ var maxItemsConf;
+
var ld = ZMDataModel.getLogin();
var maxItems;
-
+
//flat colors for graph - https://flatuicolors.com http://www.flatuicolorpicker.com
var colors = ['#3498db', '#E57373', '#EB974E', '#95A5A6', '#e74c3c', '#03C9A9', ];
@@ -537,7 +529,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
curCount = count;
$ionicLoading.show({
- template: $translate.instant('kLoadingGraph')+"...",
+ template: $translate.instant('kLoadingGraph') + "...",
animation: 'fade-in',
showBackdrop: true,
maxWidth: 200,
@@ -581,7 +573,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
second: 's',
},
majorLabels: {
- second: "D MMM "+ZMDataModel.getTimeFormat(),
+ second: "D MMM " + ZMDataModel.getTimeFormat(),
}
},
@@ -658,34 +650,33 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
}
}
}
-
+
myevents[i].Event.MonitorName = ZMDataModel.getMonitorName(myevents[i].Event.MonitorId);
- // now construct base path
-
- myevents[i].Event.streamingURL = ZMDataModel.getStreamingURL (myevents[i].Event.MonitorId);
- myevents[i].Event.baseURL = ZMDataModel.getBaseURL (myevents[i].Event.MonitorId);
- myevents[i].Event.imageMode = ZMDataModel.getImageMode (myevents[i].Event.MonitorId);
- if (ZMDataModel.getLogin().url != myevents[i].Event.baseURL)
- {
- //ZMDataModel.zmDebug ("Multi server, changing base");
- myevents[i].Event.baseURL = ZMDataModel.getLogin().url;
-
- }
- // console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);
+ // now construct base path
+
+ myevents[i].Event.streamingURL = ZMDataModel.getStreamingURL(myevents[i].Event.MonitorId);
+ myevents[i].Event.baseURL = ZMDataModel.getBaseURL(myevents[i].Event.MonitorId);
+ myevents[i].Event.imageMode = ZMDataModel.getImageMode(myevents[i].Event.MonitorId);
+ if (ZMDataModel.getLogin().url != myevents[i].Event.baseURL) {
+ //ZMDataModel.zmDebug ("Multi server, changing base");
+ myevents[i].Event.baseURL = ZMDataModel.getLogin().url;
+
+ }
+ // console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);
+
+ // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);
+
+
- // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);
-
-
-
if (idfound) {
if (typeof myevents[i].Event.DefaultVideo === 'undefined')
- // console.log (JSON.stringify(myevents[i]));
+ // console.log (JSON.stringify(myevents[i]));
myevents[i].Event.DefaultVideo = "";
graphData.add({
id: graphIndex,
- content: "<span class='my-vis-font'>" + "( <i class='ion-android-notifications'></i>"+myevents[i].Event.AlarmFrames+") "+myevents[i].Event.Notes + "</span>",
+ content: "<span class='my-vis-font'>" + "( <i class='ion-android-notifications'></i>" + myevents[i].Event.AlarmFrames + ") " + myevents[i].Event.Notes + "</span>",
start: myevents[i].Event.StartTime,
end: myevents[i].Event.EndTime,
group: myevents[i].Event.MonitorId,
@@ -729,24 +720,25 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
ZMDataModel.zmDebug("graph loaded: " + $scope.graphLoaded);
$scope.navControls = false;
var dblclick = false;
-
-
-
+
+
+
timeline.on('click', function (prop) {
-
-
- $timeout (function() {
- if (dblclick)
- {
- console.log ("IGNORING CLICK AS DBL CLICK");
- $timeout (function(){dblclick = false;},400);
+
+
+ $timeout(function () {
+ if (dblclick) {
+ //console.log ("IGNORING CLICK AS DBL CLICK");
+ $timeout(function () {
+ dblclick = false;
+ }, 400);
return;
}
- console.log ("CLICK");
+ //console.log ("CLICK");
//console.log ("I GOT " + JSON.stringify(prop));
- // console.log ("EVENT IS " + JSON.stringify(properties.event));
+ // console.log ("EVENT IS " + JSON.stringify(properties.event));
//var properties = timeline.getEventProperties(prop);
- // console.log ( "I GOT " + properties);
+ // console.log ( "I GOT " + properties);
var itm = prop.item;
//console.log ("ITEM CLICKED " + itm);
if (itm && !isNaN(itm)) {
@@ -757,43 +749,35 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
} else {
- ZMDataModel.zmDebug ("exact match not found, guessing item with co-ordinates X="+prop.x+" group="+prop.group);
- if (prop.group)
- {
+ ZMDataModel.zmDebug("exact match not found, guessing item with co-ordinates X=" + prop.x + " group=" + prop.group);
+ if (prop.group) {
var visible = timeline.getVisibleItems();
- ZMDataModel.zmDebug ("Visible items="+JSON.stringify(visible));
- var closestItem=null;
- var minDist =99999;
+ ZMDataModel.zmDebug("Visible items=" + JSON.stringify(visible));
+ var closestItem = null;
+ var minDist = 99999;
var _item;
- for (var x = 0; x < visible.length; x++)
- {
+ for (var x = 0; x < visible.length; x++) {
_item = timeline.itemSet.items[x];
- if (_item.data.group == prop.group)
- {
- if (Math.abs(_item.left - prop.x) < minDist)
- {
- closestItem = _item;
- minDist = Math.abs(_item.left - prop.x);
- ZMDataModel.zmDebug ("Temporary closest "+_item.left);
- //console.log (_item);
- }
- }
+ if (_item.data.group == prop.group) {
+ if (Math.abs(_item.left - prop.x) < minDist) {
+ closestItem = _item;
+ minDist = Math.abs(_item.left - prop.x);
+ ZMDataModel.zmDebug("Temporary closest " + _item.left);
+ //console.log (_item);
+ }
+ }
}
-
- if (closestItem!=null)
- {
- ZMDataModel.zmLog ("Closest item " +closestItem.left+ " group: " + closestItem.data.group);
+
+ if (closestItem != null) {
+ ZMDataModel.zmLog("Closest item " + closestItem.left + " group: " + closestItem.data.group);
showEvent(closestItem.data.myevent);
+ } else {
+ ZMDataModel.zmLog("Did not find a visible item match");
}
- else
- {
- ZMDataModel.zmLog ("Did not find a visible item match");
- }
- }
- else // no group row tapped, do nothing
+ } else // no group row tapped, do nothing
{
-
+
/*$ionicLoading.show({
template: "",
animation: 'fade-in',
@@ -803,64 +787,57 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
duration: 1500,
});*/
}
- // console.log("Zoomed out too far to playback events");
+ // console.log("Zoomed out too far to playback events");
}
- },400);
+ }, 400);
});
-
- timeline.on ('doubleClick', function (prop) {
- console.log ("DOUBLE");
- dblclick = true;
- var itm = prop.item;
- //console.log ("ITEM CLICKED " + itm);
- if (itm && !isNaN(itm)) {
- ZMDataModel.zmDebug("TimelineCtrl/drawGraph:You clicked on item " + itm);
- var item = graphData.get(itm);
- ZMDataModel.zmDebug("TimelineCtrl/drawGraph: clicked item details:" + JSON.stringify(item));
- eventDetails(item.myevent);
-
- } else {
-
- ZMDataModel.zmDebug ("exact match not found, guessing item with co-ordinates X="+prop.x+" group="+prop.group);
- if (prop.group)
- {
- var visible = timeline.getVisibleItems();
- ZMDataModel.zmDebug ("Visible items="+JSON.stringify(visible));
- var closestItem=null;
- var minDist =99999;
- var _item;
- for (var x = 0; x < visible.length; x++)
- {
- _item = timeline.itemSet.items[x];
- if (_item.data.group == prop.group)
- {
- if (Math.abs(_item.left - prop.x) < minDist)
- {
- closestItem = _item;
- minDist = Math.abs(_item.left - prop.x);
- ZMDataModel.zmDebug ("Temporary closest "+_item.left);
- //console.log (_item);
- }
- }
-
- }
- ZMDataModel.zmLog ("Closest item " +closestItem.left+ " group: " + closestItem.data.group);
- if (closestItem!=null)
- {
- ZMDataModel.zmLog ("Closest item " +closestItem.left+ " group: " + closestItem.data.group);
- showEvent(closestItem.data.myevent);
- }
- else
- {
- ZMDataModel.zmLog ("Did not find a visible item match");
+ timeline.on('doubleClick', function (prop) {
+ //console.log ("DOUBLE");
+ dblclick = true;
+ var itm = prop.item;
+ //console.log ("ITEM CLICKED " + itm);
+ if (itm && !isNaN(itm)) {
+ ZMDataModel.zmDebug("TimelineCtrl/drawGraph:You clicked on item " + itm);
+ var item = graphData.get(itm);
+ ZMDataModel.zmDebug("TimelineCtrl/drawGraph: clicked item details:" + JSON.stringify(item));
+ eventDetails(item.myevent);
+
+
+ } else {
+
+ ZMDataModel.zmDebug("exact match not found, guessing item with co-ordinates X=" + prop.x + " group=" + prop.group);
+ if (prop.group) {
+ var visible = timeline.getVisibleItems();
+ ZMDataModel.zmDebug("Visible items=" + JSON.stringify(visible));
+ var closestItem = null;
+ var minDist = 99999;
+ var _item;
+ for (var x = 0; x < visible.length; x++) {
+ _item = timeline.itemSet.items[x];
+ if (_item.data.group == prop.group) {
+ if (Math.abs(_item.left - prop.x) < minDist) {
+ closestItem = _item;
+ minDist = Math.abs(_item.left - prop.x);
+ ZMDataModel.zmDebug("Temporary closest " + _item.left);
+ //console.log (_item);
+ }
}
+
+ }
+ ZMDataModel.zmLog("Closest item " + closestItem.left + " group: " + closestItem.data.group);
+ if (closestItem != null) {
+ ZMDataModel.zmLog("Closest item " + closestItem.left + " group: " + closestItem.data.group);
+ showEvent(closestItem.data.myevent);
+ } else {
+ ZMDataModel.zmLog("Did not find a visible item match");
}
-
- // console.log("Zoomed out too far to playback events");
}
-
+
+ // console.log("Zoomed out too far to playback events");
+ }
+
});
},
function (error) {
@@ -884,7 +861,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
cssClass: 'fa fa-compress fa-2x',
size: 'small',
onclick: function () {
- console.log("fitting");
+ //console.log("fitting");
timeline.fit();
}
},
@@ -913,7 +890,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
empty: false,
onclick: function () {
-
+
move(0.2);
}
@@ -923,7 +900,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
empty: true,
onclick: function () {
- console.log('About');
+ // console.log('About');
}
},
@@ -959,7 +936,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
content: 'H',
empty: true,
onclick: function () {
- console.log('About');
+ // console.log('About');
}
},
@@ -986,7 +963,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
content: 'K',
empty: true,
onclick: function () {
- console.log('About');
+ //console.log('About');
}
},
]
diff --git a/www/js/TimelineModalCtrl.js b/www/js/TimelineModalCtrl.js
index 35d93ea9..68b37925 100644
--- a/www/js/TimelineModalCtrl.js
+++ b/www/js/TimelineModalCtrl.js
@@ -8,14 +8,14 @@
angular.module('zmApp.controllers').controller('TimelineModalCtrl', ['$scope', '$rootScope', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$q', '$sce', 'carouselUtils', '$ionicPopup', '$translate', function ($scope, $rootScope, zm, ZMDataModel, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $q, $sce, carouselUtils, $ionicPopup, $translate) {
-
-
+
+
var Graph2d;
var tcGraph;
var items;
var groups;
- var eventImageDigits=5;
+ var eventImageDigits = 5;
var cv;
var ctx;
var options;
@@ -24,88 +24,82 @@ angular.module('zmApp.controllers').controller('TimelineModalCtrl', ['$scope', '
var current_data;
var current_options;
var btype;
-
+
$scope.graphType = ZMDataModel.getLogin().timelineModalGraphType;
//$scope.graphType = "all";
- $scope.errorDetails="";
-
-
-
+ $scope.errorDetails = "";
+
+
+
//----------------------------------------------------------------
- // Alarm notification handling
- //----------------------------------------------------------------
- $scope.handleAlarms = function () {
- $rootScope.isAlarm = !$rootScope.isAlarm;
- if (!$rootScope.isAlarm) {
- $rootScope.alarmCount = "0";
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
- $state.go("events", {
- "id": 0
- }, {
- reload: true
- });
- }
- };
-
+ // Alarm notification handling
+ //----------------------------------------------------------------
+ $scope.handleAlarms = function () {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm) {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("events", {
+ "id": 0
+ }, {
+ reload: true
+ });
+ }
+ };
+
+
-
//-------------------------------------------------------
// we use this to reload the connkey if authkey changed
//------------------------------------------------------
-
-
- $rootScope.$on("auth-success", function () {
- ZMDataModel.zmDebug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
-
-
+
+ $rootScope.$on("auth-success", function () {
+
+ ZMDataModel.zmDebug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
+
+
});
-
-
- $scope.scrollUp = function()
- {
+
+
+ $scope.scrollUp = function () {
//console.log ("SWIPE UP");
$ionicScrollDelegate.$getByHandle("timeline-modal-delegate").scrollTop(true);
};
-
- $scope.scrollDown = function()
- {
+
+ $scope.scrollDown = function () {
//console.log ("SWIPE DOWN");
$ionicScrollDelegate.$getByHandle("timeline-modal-delegate").scrollBottom(true);
};
-
-
- $scope.switchType = function()
- {
-
- if ($scope.graphType == $translate.instant('kGraphAll'))
- {
+
+
+ $scope.switchType = function () {
+
+ if ($scope.graphType == $translate.instant('kGraphAll')) {
current_data = onlyalarm_data;
$scope.graphType = $translate.instant('kGraphAlarmed');
- ZMDataModel.zmDebug ("Alarm array has " + onlyalarm_data.labels.length+ " frames");
- btype='bar';
+ ZMDataModel.zmDebug("Alarm array has " + onlyalarm_data.labels.length + " frames");
+ btype = 'bar';
//console.log (JSON.stringify(onlyalarm_data));
-
- }
- else
- {
+
+ } else {
current_data = data;
- // tcGraph.data =
+ // tcGraph.data =
$scope.graphType = $translate.instant('kGraphAll');
- btype='line';
+ btype = 'line';
}
-
- ZMDataModel.zmLog ("Switching graph type to "+$scope.graphType);
-
+
+ ZMDataModel.zmLog("Switching graph type to " + $scope.graphType);
+
var ld = ZMDataModel.getLogin();
ld.timelineModalGraphType = $scope.graphType;
ZMDataModel.setLogin(ld);
-
-
- $timeout (function() {
-
+
+
+ $timeout(function () {
+
/*
if ($scope.graphType == 'alarmed')
tcGraph.data = data;
@@ -113,40 +107,46 @@ angular.module('zmApp.controllers').controller('TimelineModalCtrl', ['$scope', '
tcGraph.data = onlyalarm_data;
tcGraph.update();*/
tcGraph.destroy();
- console.log ("GRAPH TYPE IS " + btype);
- tcGraph = new Chart(ctx,{type:btype, data: current_data, options:options});
- });
-
-
-
+ console.log("GRAPH TYPE IS " + btype);
+ tcGraph = new Chart(ctx, {
+ type: btype,
+ data: current_data,
+ options: options
+ });
+ });
+
+
+
};
-
-
+
+
//-------------------------------------------------------
// Tapping on a frame shows this image
//------------------------------------------------------
-
- $scope.showImage = function (p,r,f, fid,e, imode, id)
- {
+
+ $scope.showImage = function (p, r, f, fid, e, imode, id) {
var img;
- console.log ("Image Mode " + imode);
- if (imode=='path')
-
- img = "<img width='100%' ng-src='"+p+"/index.php?view=image&path="+r+f+"'>";
- else
- {
- img = "<img width='100%' ng-src='"+p+"/index.php?view=image&fid="+id+"'>";
- // console.log ("IS MULTISERVER SO IMAGE IS " + img);
+ console.log("Image Mode " + imode);
+ if (imode == 'path')
+
+ img = "<img width='100%' ng-src='" + p + "/index.php?view=image&path=" + r + f + "'>";
+ else {
+ img = "<img width='100%' ng-src='" + p + "/index.php?view=image&fid=" + id + "'>";
+ // console.log ("IS MULTISERVER SO IMAGE IS " + img);
}
- $rootScope.zmPopup = $ionicPopup.alert({title: 'frame:'+fid+'/Event:'+e,template:img, cssClass:'popup80'});
+ $rootScope.zmPopup = $ionicPopup.alert({
+ title: 'frame:' + fid + '/Event:' + e,
+ template: img,
+ cssClass: 'popup80'
+ });
};
-
-
-
-
- $scope.$on('modal.removed', function (e,m) {
-
+
+
+
+
+ $scope.$on('modal.removed', function (e, m) {
+
if (m.id != 'analyze')
return;
//Graph2d.destroy();
@@ -157,267 +157,237 @@ angular.module('zmApp.controllers').controller('TimelineModalCtrl', ['$scope', '
//-------------------------------------------------------
// init drawing here
//------------------------------------------------------
-
- $scope.$on('modal.shown', function (e,m) {
-
- if (m.id != 'analyze')
+
+ $scope.$on('modal.shown', function (e, m) {
+
+ if (m.id != 'analyze')
return;
-
- $scope.alarm_images=[];
- $scope.graphWidth=$rootScope.devWidth-30;
- ZMDataModel.zmLog ("Setting init graph width to " + $scope.graphWidth);
- $scope.dataReady = false;
-
- ZMDataModel.getKeyConfigParams(0)
+
+ $scope.alarm_images = [];
+ $scope.graphWidth = $rootScope.devWidth - 30;
+ ZMDataModel.zmLog("Setting init graph width to " + $scope.graphWidth);
+ $scope.dataReady = false;
+
+ ZMDataModel.getKeyConfigParams(0)
.then(function (data) {
//console.log ("***GETKEY: " + JSON.stringify(data));
eventImageDigits = parseInt(data);
ZMDataModel.zmLog("Image padding digits reported as " + eventImageDigits);
});
- $scope.eventdetails = $translate.instant('kLoading')+"...";
- processEvent();
- //$scope.eventdetails = JSON.stringify($scope.event);
- });
-
-
+ $scope.eventdetails = $translate.instant('kLoading') + "...";
+ processEvent();
+ //$scope.eventdetails = JSON.stringify($scope.event);
+ });
+
+
//-------------------------------------------------------
// okay, really init drawing here
//------------------------------------------------------
-
- function processEvent()
- {
+
+ function processEvent() {
var eid = $scope.event.Event.Id;
//eid = 22302;
var ld = ZMDataModel.getLogin();
- var apiurl = ld.apiurl + "/events/"+eid+".json";
- ZMDataModel.zmLog ("Getting " + apiurl);
- $http.get (apiurl)
- .then (function (success)
- {
+ var apiurl = ld.apiurl + "/events/" + eid + ".json";
+ ZMDataModel.zmLog("Getting " + apiurl);
+ $http.get(apiurl)
+ .then(function (success) {
//$scope.eventdetails = JSON.stringify(success);
drawGraphTC(success.data);
- },
- function (error)
- {
+ },
+ function (error) {
$scope.errorDetails = $translate.instant('kGraphError');
- ZMDataModel.zmLog ("Error in timeline frames " + JSON.stringify(error));
- });
+ ZMDataModel.zmLog("Error in timeline frames " + JSON.stringify(error));
+ });
}
-
-
+
+
//-------------------------------------------------------
// I was kidding, this is where it really is drawn
// scout's promise
//------------------------------------------------------
-
- function drawGraphTC(event)
- {
-
- $scope.eid = event.event.Event.Id;
-
- $scope.alarm_images=[];
-
- /*data = {
- labels: [],
- datasets: [
- {
- label: 'Score',
- fill:true,
- borderJoinStyle: 'miter',
- pointBorderColor: "rgba(220,220,220,1)",
- pointBackgroundColor: "#e74c3c",
- backgroundColor: 'rgba(129, 207, 224, 1.0)',
- pointHoverRadius: 5,
- pointHoverBackgroundColor: "#40d47e",
- pointHoverBorderWidth: 2,
- tension: 0.1,
- borderColor: 'rgba(129, 207, 224, 1.0)',
- hoverBackgroundColor: 'rgba(248, 148, 6,1.0)',
- hoverBorderColor: 'rgba(248, 148, 6,1.0)',
- data: [],
- frames: []
- },
-
- ]
- };*/
-
-
- data = {
- labels: [],
- datasets: [
- {
- label: 'Score',
- fill:true,
- backgroundColor: 'rgba(89, 171, 227, 1.0)',
- borderColor: 'rgba(52, 152, 219, 1.0)',
- borderCapStyle: 'butt',
- borderJoinStyle: 'miter',
- pointBorderColor: "#e74c3c",
- pointBackgroundColor: "#e74c3c",
-
- pointHoverRadius: 10,
- pointHoverBackgroundColor: "rgba(249, 105, 14,1.0)",
- pointHoverBorderWidth: 1,
- tension: 0.1,
-
- data: [],
- frames: []
+
+ function drawGraphTC(event) {
+
+ $scope.eid = event.event.Event.Id;
+
+ $scope.alarm_images = [];
+
+
+ data = {
+ labels: [],
+ datasets: [
+ {
+ label: 'Score',
+ fill: true,
+ backgroundColor: 'rgba(89, 171, 227, 1.0)',
+ borderColor: 'rgba(52, 152, 219, 1.0)',
+ borderCapStyle: 'butt',
+ borderJoinStyle: 'miter',
+ pointBorderColor: "#e74c3c",
+ pointBackgroundColor: "#e74c3c",
+
+ pointHoverRadius: 10,
+ pointHoverBackgroundColor: "rgba(249, 105, 14,1.0)",
+ pointHoverBorderWidth: 1,
+ tension: 0.1,
+
+ data: [],
+ frames: []
},
-
+
]
- };
-
- onlyalarm_data = {
- labels: [],
- datasets: [
- {
- label: 'Score',
- backgroundColor: 'rgba(52, 152, 219, 1.0)',
- borderColor: 'rgba(52, 152, 219, 1.0)',
- hoverBackgroundColor: 'rgba(249, 105, 14,1.0)',
- hoverBorderColor: 'rgba(249, 105, 14,1.0)',
- data: [],
- frames: []
+ };
+
+ onlyalarm_data = {
+ labels: [],
+ datasets: [
+ {
+ label: 'Score',
+ backgroundColor: 'rgba(52, 152, 219, 1.0)',
+ borderColor: 'rgba(52, 152, 219, 1.0)',
+ hoverBackgroundColor: 'rgba(249, 105, 14,1.0)',
+ hoverBorderColor: 'rgba(249, 105, 14,1.0)',
+ data: [],
+ frames: []
},
-
+
]
- };
+ };
- // Chart.js Options
- options = {
- legend:false,
- scales: {
- yAxes:[{
- ticks: {
- // beginAtZero:true,
- min:-1,
- },
+ // Chart.js Options
+ options = {
+ legend: false,
+ scales: {
+ yAxes: [{
+ ticks: {
+ // beginAtZero:true,
+ min: -1,
+ },
}],
- xAxes:[{
- display:false
+ xAxes: [{
+ display: false
}]
- },
+ },
- responsive: true,
- scaleBeginAtZero : true,
- scaleShowGridLines : true,
- scaleGridLineColor : "rgba(0,0,0,.05)",
- scaleGridLineWidth : 1,
-
-
- hover:
- {
- mode:'single',
- onHover:function(obj)
- {
- if (obj.length > 0)
- tapOrHover(obj[0]._index);
- }
- },
+ responsive: true,
+ scaleBeginAtZero: true,
+ scaleShowGridLines: true,
+ scaleGridLineColor: "rgba(0,0,0,.05)",
+ scaleGridLineWidth: 1,
+
+
+ hover: {
+ mode: 'single',
+ onHover: function (obj) {
+ if (obj.length > 0)
+ tapOrHover(obj[0]._index);
+ }
+ },
+
+ //String - A legend template
+ legendTemplate: '<ul class="tc-chart-js-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'
+ };
- //String - A legend template
- legendTemplate : '<ul class="tc-chart-js-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'
- };
-
$scope.graphWidth = event.event.Frame.length * 10;
if ($scope.graphWidth < $rootScope.devWidth)
$scope.graphWidth = $rootScope.devWidth;
-
- // ZMDataModel.zmLog ("Changing graph width to " + $scope.graphWidth);
-
- for (var i=0; i< event.event.Frame.length; i++)
- {
-
-
+
+ // ZMDataModel.zmLog ("Changing graph width to " + $scope.graphWidth);
+
+ for (var i = 0; i < event.event.Frame.length; i++) {
+
+
data.labels.push(event.event.Frame[i].TimeStamp);
//data.labels.push(' ');
data.datasets[0].data.push(event.event.Frame[i].Score);
- data.datasets[0].frames.push({x:event.event.Frame[i].TimeStamp,
- y:event.event.Frame[i].Score,
- eid: event.event.Event.Id,
- fid: event.event.Frame[i].FrameId,
- id: event.event.Frame[i].Id,
- //group:i,
- relativePath:computeRelativePath(event.event),
- score:event.event.Frame[i].Score,
- fname: padToN(event.event.Frame[i].FrameId,eventImageDigits)+"-capture.jpg",
-
- });
-
- if (event.event.Frame[i].Type=="Alarm")
- {
-
+ data.datasets[0].frames.push({
+ x: event.event.Frame[i].TimeStamp,
+ y: event.event.Frame[i].Score,
+ eid: event.event.Event.Id,
+ fid: event.event.Frame[i].FrameId,
+ id: event.event.Frame[i].Id,
+ //group:i,
+ relativePath: computeRelativePath(event.event),
+ score: event.event.Frame[i].Score,
+ fname: padToN(event.event.Frame[i].FrameId, eventImageDigits) + "-capture.jpg",
+
+ });
+
+ if (event.event.Frame[i].Type == "Alarm") {
+
onlyalarm_data.labels.push(event.event.Frame[i].TimeStamp);
//data.labels.push(' ');
onlyalarm_data.datasets[0].data.push(event.event.Frame[i].Score);
- onlyalarm_data.datasets[0].frames.push({x:event.event.Frame[i].TimeStamp,
- y:event.event.Frame[i].Score,
- eid: event.event.Event.Id,
- fid: event.event.Frame[i].FrameId,
- //group:i,
- relativePath:computeRelativePath(event.event),
- score:event.event.Frame[i].Score,
- fname: padToN(event.event.Frame[i].FrameId,eventImageDigits)+"-capture.jpg",
- id: event.event.Frame[i].Id,
-
- });
+ onlyalarm_data.datasets[0].frames.push({
+ x: event.event.Frame[i].TimeStamp,
+ y: event.event.Frame[i].Score,
+ eid: event.event.Event.Id,
+ fid: event.event.Frame[i].FrameId,
+ //group:i,
+ relativePath: computeRelativePath(event.event),
+ score: event.event.Frame[i].Score,
+ fname: padToN(event.event.Frame[i].FrameId, eventImageDigits) + "-capture.jpg",
+ id: event.event.Frame[i].Id,
+
+ });
}
-
+
}
-
+
$scope.dataReady = true;
-
- cv = document.getElementById("tcchart");
- ctx = cv.getContext("2d");
-
- if (ZMDataModel.getLogin().timelineModalGraphType == $translate.instant('kGraphAll'))
- {
+
+ cv = document.getElementById("tcchart");
+ ctx = cv.getContext("2d");
+
+ if (ZMDataModel.getLogin().timelineModalGraphType == $translate.instant('kGraphAll')) {
btype = 'line';
current_data = data;
- }
- else
- {
+ } else {
btype = 'bar';
current_data = onlyalarm_data;
}
- $timeout(function() {
- tcGraph = new Chart(ctx,{type:btype, data: current_data, options:options});});
-
- cv.onclick = function(e)
- {
- var b = tcGraph.getElementAtEvent(e);
- if (b.length > 0)
- {
+ $timeout(function () {
+ tcGraph = new Chart(ctx, {
+ type: btype,
+ data: current_data,
+ options: options
+ });
+ });
+
+ cv.onclick = function (e) {
+ var b = tcGraph.getElementAtEvent(e);
+ if (b.length > 0) {
tapOrHover(b[0]._index);
}
};
}
-
- function tapOrHover(ndx)
- {
-
- $timeout (function() {
-
-
- //console.log ("You tapped " + ndx);
- $scope.alarm_images=[];
- $scope.playbackURL = $scope.event.Event.baseURL;
- var items = current_data.datasets[0].frames[ndx];
- $scope.alarm_images.push({
- relativePath:items.relativePath,
- fid:items.fid,
- id: items.id,
- fname:items.fname,
- score:items.score,
- time:moment(items.x).format("MMM D,"+ZMDataModel.getTimeFormatSec()),
- eid:items.eid});
+
+ function tapOrHover(ndx) {
+
+ $timeout(function () {
+
+
+ //console.log ("You tapped " + ndx);
+ $scope.alarm_images = [];
+ $scope.playbackURL = $scope.event.Event.baseURL;
+ var items = current_data.datasets[0].frames[ndx];
+ $scope.alarm_images.push({
+ relativePath: items.relativePath,
+ fid: items.fid,
+ id: items.id,
+ fname: items.fname,
+ score: items.score,
+ time: moment(items.x).format("MMM D," + ZMDataModel.getTimeFormatSec()),
+ eid: items.eid
});
-
+ });
+
}
-
-
-
+
+
+
//--------------------------------------------------------
// utility function
//--------------------------------------------------------
@@ -489,8 +459,6 @@ angular.module('zmApp.controllers').controller('TimelineModalCtrl', ['$scope', '
return number;
}
-
-
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/WizardCtrl.js b/www/js/WizardCtrl.js
index 2d166e74..a06a86c2 100644
--- a/www/js/WizardCtrl.js
+++ b/www/js/WizardCtrl.js
@@ -50,7 +50,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
d.resolve(true);
return d.promise;
} else {
- console.log("************ERROR");
+ //console.log("************ERROR");
$scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
$scope.wizard.portalColor = "#e74c3c";
d.reject(false);
@@ -58,7 +58,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
}
})
.error(function (error) {
- console.log("************ERROR");
+ //console.log("************ERROR");
$scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
$scope.wizard.portalColor = "#e74c3c";
d.reject(false);
@@ -79,7 +79,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
var d = $q.defer();
$http.get($scope.wizard.apiURL + "/monitors.json")
.then(function (success) {
- // console.log("getfirst monitor success: " + JSON.stringify(success));
+ // console.log("getfirst monitor success: " + JSON.stringify(success));
if (success.data.monitors.length > 0) {
var foundMid = -1;
for (var i = 0; i < success.data.monitors.length; i++) {
@@ -107,7 +107,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
}
},
function (error) {
- console.log("getfirst monitor error: " + JSON.stringify(error));
+ //console.log("getfirst monitor error: " + JSON.stringify(error));
d.reject(false);
return d.promise;
});
@@ -260,7 +260,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
},
function (error) {
$ionicLoading.hide();
- console.log("No cgi-bin found: " + error);
+ //console.log("No cgi-bin found: " + error);
$scope.wizard.streamingValidText = $translate.instant('kPortalCgiBinFailed');
$scope.wizard.streamingColor = "#e74c3c";
d.reject(false);
@@ -321,7 +321,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
return d.promise;
},
function (error) {
- console.log("No APIs found: " + error);
+ //console.log("No APIs found: " + error);
$scope.wizard.apiValidText = $translate.instant('kPortalAPIFailed');
$scope.wizard.apiColor = "#e74c3c";
d.reject(false);
@@ -362,11 +362,11 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
})
.then(function (success) {
$rootScope.zmCookie = "";
- console.log("ZMlogout success, cookie removed");
+ //console.log("ZMlogout success, cookie removed");
d.resolve(true);
return d.promise;
}, function (error) {
- console.log("ZMlogout success");
+ //console.log("ZMlogout success");
d.resolve(true);
return d.promise;
});
@@ -454,7 +454,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
.then(function (ans) {
// login now
$ionicLoading.hide();
- ZMDataModel.zmLog("zmWizard: logging in with " + u + " " + zmu );
+ ZMDataModel.zmLog("zmWizard: logging in with " + u + " " + zmu);
// The logic will be:
// Login then do an api detect and cgi-detect together
@@ -747,4 +747,4 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
});
-}]);
+}]); \ No newline at end of file
diff --git a/www/js/app.js b/www/js/app.js
index 6aacd8c9..80930f50 100644
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -80,7 +80,7 @@ angular.module('zmApp', [
packeryTimer: 500,
dbName: 'zmninja',
cipherKey: 'sdf#@#%FSXSA_AR'
-
+
})
@@ -117,26 +117,7 @@ angular.module('zmApp', [
})
-.directive('dannyPackery', ['$rootScope', function ($rootScope) {
- return {
- restrict: 'A',
- link: function (scope, element, attrs) {
- console.log('Running dannyPackery linking function!');
- if ($rootScope.packery === undefined || $rootScope.packery === null) {
- console.log('making packery!');
- $rootScope.packery = new Packery(element[0].parentElement, {
- columnWidth: '.item'
- });
- $rootScope.packery.bindResize();
- $rootScope.packery.appended(element[0]);
- $rootScope.packery.items.splice(1, 1); // hack to fix a bug where the first element was added twice in two different positions
- } else {
- $rootScope.packery.appended(element[0]);
- }
- $rootScope.packery.layout();
- }
- };
-}])
+
// credit https://gist.github.com/Zren/beaafd64f395e23f4604
@@ -221,7 +202,7 @@ angular.module('zmApp', [
terminal: true,
link: function (scope, element) {
var repeatDirective = ($rootScope.platformOS == 'desktop') ? 'ng-repeat' : 'collection-repeat';
- console.log("*********** REPEAT SCROLL IS " + repeatDirective);
+ //console.log("*********** REPEAT SCROLL IS " + repeatDirective);
element.attr(repeatDirective, element.attr('repeatsmart'));
element.removeAttr('repeatsmart');
@@ -488,7 +469,7 @@ angular.module('zmApp', [
} else if ((config.url.indexOf("view=view_video") > -1) ||
config.url.indexOf(".mp4") > -1) {
- console.log(">>> skipping timers for MP4");
+ // console.log(">>> skipping timers for MP4");
} else {
config.timeout = zm.httpTimeout;
}
@@ -558,7 +539,7 @@ angular.module('zmApp', [
.then(function (success) {
ZMDataModel.setLastUpdateCheck(moment().toISOString());
- // $localstorage.set("lastUpdateCheck", moment().toISOString());
+ // $localstorage.set("lastUpdateCheck", moment().toISOString());
//console.log ("FULL STRING " + success.data.tag_name);
var res = success.data.tag_name.match("v(.*)");
zmUpdateVersion = res[1];
@@ -567,14 +548,14 @@ angular.module('zmApp', [
zmUpdateVersion = zmUpdateVersion + "D";
}
//if (ZMDataModel.getAppVersion() != zmUpdateVersion) {
- if (ZMDataModel.versionCompare(ZMDataModel.getAppVersion(),zmUpdateVersion) == -1) {
+ if (ZMDataModel.versionCompare(ZMDataModel.getAppVersion(), zmUpdateVersion) == -1) {
$rootScope.newVersionAvailable = "v" + zmUpdateVersion + " available";
} else {
$rootScope.newVersionAvailable = "";
}
- ZMDataModel.zmDebug ("current version: " + currentVersion + " & available version " + zmUpdateVersion);
- console.log ("Version compare returned: " + ZMDataModel.versionCompare(currentVersion, zmUpdateVersion));
- console.log ("Version compare returned: " + ZMDataModel.versionCompare(zmUpdateVersion, currentVersion));
+ ZMDataModel.zmDebug("current version: " + currentVersion + " & available version " + zmUpdateVersion);
+ //console.log ("Version compare returned: " + ZMDataModel.versionCompare(currentVersion, //zmUpdateVersion));
+ // console.log ("Version compare returned: " + ZMDataModel.versionCompare(zmUpdateVersion, currentVersion));
//console.log ("UPDATE " + zmVersion);
});
@@ -588,7 +569,7 @@ angular.module('zmApp', [
}
var lastDate = ZMDataModel.getLatestBlogPostChecked();
- console.log ("************ BLOG LAST DATE " + lastDate);
+ //console.log ("************ BLOG LAST DATE " + lastDate);
if (!lastDate) {
$rootScope.newBlogPost = "(new post)";
@@ -657,10 +638,10 @@ angular.module('zmApp', [
//------------------------------------------------------------------
$rootScope.$on("init-complete", function () {
- ZMDataModel.zmLog (">>>>>>>>>>>>>>> All init over, going to portal login");
+ ZMDataModel.zmLog(">>>>>>>>>>>>>>> All init over, going to portal login");
$state.go("zm-portal-login");
});
-
+
//------------------------------------------------------------------
// doLogin() emits this when our auth credentials work
//------------------------------------------------------------------
@@ -1004,7 +985,7 @@ angular.module('zmApp', [
//console.log ("******** back called with isOpenLeft: " + $ionicSideMenuDelegate.isOpenLeft());
if (!$ionicSideMenuDelegate.isOpenLeft()) {
$ionicSideMenuDelegate.toggleLeft();
- console.log("Status of SIDE MENU IS : " + $ionicSideMenuDelegate.isOpen());
+ //console.log("Status of SIDE MENU IS : " + $ionicSideMenuDelegate.isOpen());
} else {
navigator.app.exitApp();
}
@@ -1039,7 +1020,7 @@ angular.module('zmApp', [
$rootScope.userCancelledAuth = true;
window.stop();
- console.log ("inside cancelAuth , calling wizard");
+ //console.log ("inside cancelAuth , calling wizard");
$state.go("login", {
"wizard": false
});
@@ -1053,7 +1034,7 @@ angular.module('zmApp', [
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
var requireLogin = toState.data.requireLogin;
- if (ZMDataModel.isLoggedIn() || toState.data.requireLogin ==false ) {
+ if (ZMDataModel.isLoggedIn() || toState.data.requireLogin == false) {
//console.log("State transition is authorized");
return;
@@ -1061,7 +1042,7 @@ angular.module('zmApp', [
ZMDataModel.zmLog("In Auth State trans: Not logged in, requested to go to " + JSON.stringify(toState));
// event.preventDefault();
//
-
+
$state.transitionTo('login');
@@ -1089,17 +1070,17 @@ angular.module('zmApp', [
//---------------------------------------------------------------------
$ionicPlatform.ready(function () {
-
-
-
-
-
+
+
+
+
+
$rootScope.db = null;
-
+
$rootScope.platformOS = "desktop";
ZMDataModel.zmLog("Device is ready");
- // var ld = ZMDataModel.getLogin();
+ // var ld = ZMDataModel.getLogin();
if ($ionicPlatform.is('ios'))
$rootScope.platformOS = "ios";
if ($ionicPlatform.is('android'))
@@ -1110,141 +1091,128 @@ angular.module('zmApp', [
localforage.config({
name: zm.dbName
-
+
});
-
- var order=[];
-
- if ($rootScope.platformOS == 'ios')
- {
- order =
- [window.cordovaSQLiteDriver._driver,
+
+ var order = [];
+
+ if ($rootScope.platformOS == 'ios') {
+ order = [window.cordovaSQLiteDriver._driver,
localforage.INDEXEDDB,
localforage.WEBSQL,
localforage.LOCALSTORAGE];
- }
-
- else
-
+ } else
+
{
- // don't do SQL for non IOS - seems to hang?
- order = [
-
+ // don't do SQL for non IOS - seems to hang?
+ order = [
+
localforage.INDEXEDDB,
localforage.WEBSQL,
- localforage.LOCALSTORAGE,
+ localforage.LOCALSTORAGE,
];
-
+
}
-
+
localforage.defineDriver(window.cordovaSQLiteDriver).then(function () {
return localforage.setDriver(
- // Try setting cordovaSQLiteDriver if available,
- order
-
- );
- }).then(function () {
+ // Try setting cordovaSQLiteDriver if available,
+ order
+
+ );
+ }).then(function () {
// this should alert "cordovaSQLiteDriver" when in an emulator or a device
ZMDataModel.zmLog("localforage driver for storage:" + localforage.driver());
-
+
// Now lets import old data if it exists:
var defaultServerName = $localstorage.get("defaultServerName");
-
+
localforage.getItem("defaultServerName")
- .then (function (val)
- {
- console.log (">>>> localforage reported defaultServerName as " + val);
- // if neither, we are in first use, mates!
- if (!val && !defaultServerName)
- {
- continueInitialInit();
- /* ZMDataModel.zmDebug ("Neither localstorage or forage - First use, showing warm and fuzzy...");
+ .then(function (val) {
+ // console.log (">>>> localforage reported defaultServerName as " + val);
+ // if neither, we are in first use, mates!
+ if (!val && !defaultServerName) {
+ continueInitialInit();
+ /* ZMDataModel.zmDebug ("Neither localstorage or forage - First use, showing warm and fuzzy...");
$ionicHistory.nextViewOptions({
disableAnimate: true,
disableBack: true
});
$state.go('first-use');*/
- }
-
- else if (!val && defaultServerName)
- {
- ZMDataModel.zmLog (">>>>Importing data from localstorage....");
-
-
-
- var dsn = defaultServerName;
- var dl = $localstorage.get('defaultLang') || 'en';
- var ifu = ($localstorage.get('isFirstUse')=='0' ? false:true);
- var luc = $localstorage.get('lastUpdateCheck');
- var lbpc = $localstorage.get('latestBlogPostChecked');
- var sgl = $localstorage.getObject('serverGroupList');
-
- ZMDataModel.zmLog (">>>Localstorage data found as below:");
- ZMDataModel.zmLog ("server name:"+dsn);
- ZMDataModel.zmLog ("default lang :"+dl);
- ZMDataModel.zmLog ("is first use:"+ifu);
- ZMDataModel.zmLog ("last update check:"+luc);
- ZMDataModel.zmLog ("latest blog post check:"+lbpc);
- ZMDataModel.zmLog ("server group list:"+JSON.stringify(sgl));
-
- localforage.setItem('defaultLang', dl)
- .then (function() {
-
- ZMDataModel.zmLog (">>>>migrated defaultLang...");
- ZMDataModel.setFirstUse(ifu);
- return localforage.setItem('isFirstUse', ifu);
- })
- .then (function() {
- ZMDataModel.zmLog (">>>>migrated isFirstUse...");
- return localforage.setItem('lastUpdateCheck', ifu);
- })
- .then (function() {
- ZMDataModel.zmLog (">>>>migrated lastUpdateCheck...");
- return localforage.setItem('latestBlogPostChecked', lbpc);
- })
- .then (function() {
- ZMDataModel.zmLog (">>>>migrated latestBlogPostChecked...");
- // lets encrypt serverGroupList
- ZMDataModel.zmLog ("server group list is " + JSON.stringify(sgl));
- var ct = CryptoJS.AES.encrypt(JSON.stringify(sgl), zm.cipherKey);
- ZMDataModel.zmLog ("encrypted server group list is " + ct);
- ct = sgl;
- return localforage.setItem('serverGroupList', ct);
- })
- .then (function() {
- ZMDataModel.zmLog (">>>>migrated serverGroupList...");
- return localforage.setItem('defaultServerName',dsn);
- })
- .then (function() {
- ZMDataModel.zmLog (">>>>migrated defaultServerName...");
- ZMDataModel.zmLog (">>>>Migrated all values, continuing...");
+ } else if (!val && defaultServerName) {
+ ZMDataModel.zmLog(">>>>Importing data from localstorage....");
+
+
+
+ var dsn = defaultServerName;
+ var dl = $localstorage.get('defaultLang') || 'en';
+ var ifu = ($localstorage.get('isFirstUse') == '0' ? false : true);
+ var luc = $localstorage.get('lastUpdateCheck');
+ var lbpc = $localstorage.get('latestBlogPostChecked');
+ var sgl = $localstorage.getObject('serverGroupList');
+
+ ZMDataModel.zmLog(">>>Localstorage data found as below:");
+ ZMDataModel.zmLog("server name:" + dsn);
+ ZMDataModel.zmLog("default lang :" + dl);
+ ZMDataModel.zmLog("is first use:" + ifu);
+ ZMDataModel.zmLog("last update check:" + luc);
+ ZMDataModel.zmLog("latest blog post check:" + lbpc);
+ ZMDataModel.zmLog("server group list:" + JSON.stringify(sgl));
+
+ localforage.setItem('defaultLang', dl)
+ .then(function () {
+
+ ZMDataModel.zmLog(">>>>migrated defaultLang...");
+ ZMDataModel.setFirstUse(ifu);
+ return localforage.setItem('isFirstUse', ifu);
+ })
+ .then(function () {
+ ZMDataModel.zmLog(">>>>migrated isFirstUse...");
+ return localforage.setItem('lastUpdateCheck', ifu);
+ })
+ .then(function () {
+ ZMDataModel.zmLog(">>>>migrated lastUpdateCheck...");
+ return localforage.setItem('latestBlogPostChecked', lbpc);
+ })
+ .then(function () {
+ ZMDataModel.zmLog(">>>>migrated latestBlogPostChecked...");
+ // lets encrypt serverGroupList
+ ZMDataModel.zmLog("server group list is " + JSON.stringify(sgl));
+ var ct = CryptoJS.AES.encrypt(JSON.stringify(sgl), zm.cipherKey);
+ ZMDataModel.zmLog("encrypted server group list is " + ct);
+ ct = sgl;
+ return localforage.setItem('serverGroupList', ct);
+ })
+ .then(function () {
+ ZMDataModel.zmLog(">>>>migrated serverGroupList...");
+ return localforage.setItem('defaultServerName', dsn);
+ })
+ .then(function () {
+ ZMDataModel.zmLog(">>>>migrated defaultServerName...");
+ ZMDataModel.zmLog(">>>>Migrated all values, continuing...");
+ //ZMDataModel.migrationComplete();
+ continueInitialInit();
+ })
+ .catch(function (err) {
+ ZMDataModel.zmLog("Migration error : " + JSON.stringify(err));
+ continueInitialInit();
+ });
+
+ } else {
+ ZMDataModel.zmLog(">>>>No data to import....");
//ZMDataModel.migrationComplete();
continueInitialInit();
- })
- .catch (function(err)
- {
- ZMDataModel.zmLog ("Migration error : " + JSON.stringify(err));
- continueInitialInit();
- });
-
- }
- else
- {
- ZMDataModel.zmLog (">>>>No data to import....");
- //ZMDataModel.migrationComplete();
- continueInitialInit();
- }
-
-
-
- });
-
+ }
+
+
+
+ });
+
});
-
-
-
- function continueInitialInit()
- {
+
+
+
+ function continueInitialInit() {
var pixelRatio = window.devicePixelRatio || 1;
$rootScope.devWidth = ((window.innerWidth > 0) ? window.innerWidth : screen.width);
$rootScope.devHeight = ((window.innerHeight > 0) ? window.innerHeight : screen.height);
@@ -1291,63 +1259,56 @@ angular.module('zmApp', [
- if (ZMDataModel.getLogin().disableNative)
- {
- ZMDataModel.zmLog ("Disabling native transitions...");
+ if (ZMDataModel.getLogin().disableNative) {
+ ZMDataModel.zmLog("Disabling native transitions...");
$ionicNativeTransitions.enable(false);
- }
- else
- {
- ZMDataModel.zmLog ("Enabling native transitions...");
+ } else {
+ ZMDataModel.zmLog("Enabling native transitions...");
$ionicNativeTransitions.enable(true);
}
// At this stage, DataModel.init is not called yet
// but I do need to know the language
-
- ZMDataModel.zmLog ("Retrieving language before init is called...");
+
+ ZMDataModel.zmLog("Retrieving language before init is called...");
localforage.getItem("defaultLang")
- .then (function(val) {
+ .then(function (val) {
- var lang = val;
- //console.log (">>>>>>>>>>>>>> LANG IS " + val);
+ var lang = val;
+ //console.log (">>>>>>>>>>>>>> LANG IS " + val);
- if (lang == undefined || lang == null) {
- ZMDataModel.zmLog("No language set, switching to en");
- lang = "en";
+ if (lang == undefined || lang == null) {
+ ZMDataModel.zmLog("No language set, switching to en");
+ lang = "en";
- } else {
- ZMDataModel.zmLog("Language stored as:" + lang);
+ } else {
+ ZMDataModel.zmLog("Language stored as:" + lang);
- }
+ }
- ZMDataModel.setDefaultLanguage(lang, false)
- .then(function (success) {
- ZMDataModel.zmLog(">>>>Language to be used:" + $translate.proposedLanguage());
- moment.locale($translate.proposedLanguage());
-
- // Remember this is before data Init
- // so I need to do a direct forage fetch
- localforage.getItem("isFirstUse")
- .then (function(val)
- {
- console.log ("isFirstUse is " + val);
- if (val == null || val == true)
- {
- ZMDataModel.zmLog ("First time detected");
- $state.go("first-use");
- }
- else
- {
- continueRestOfInit();
- }
+ ZMDataModel.setDefaultLanguage(lang, false)
+ .then(function (success) {
+ ZMDataModel.zmLog(">>>>Language to be used:" + $translate.proposedLanguage());
+ moment.locale($translate.proposedLanguage());
- });
+ // Remember this is before data Init
+ // so I need to do a direct forage fetch
+ localforage.getItem("isFirstUse")
+ .then(function (val) {
+ //console.log ("isFirstUse is " + val);
+ if (val == null || val == true) {
+ ZMDataModel.zmLog("First time detected");
+ $state.go("first-use");
+ } else {
+ continueRestOfInit();
+ }
+ });
- });
- });
+
+ });
+ });
}
@@ -1363,16 +1324,15 @@ angular.module('zmApp', [
ZMDataModel.zmLog("Setting up POST LOGIN timer");
zmAutoLogin.start();
setupPauseAndResume();
-
-
-
-
+
+
+
+
}
-
- function setupPauseAndResume()
- {
- ZMDataModel.zmLog ("Setting up pause and resume handler AFTER language is loaded...");
+
+ function setupPauseAndResume() {
+ ZMDataModel.zmLog("Setting up pause and resume handler AFTER language is loaded...");
//---------------------------------------------------------------------------
// resume handler
//----------------------------------------------------------------------------
@@ -1459,7 +1419,7 @@ angular.module('zmApp', [
-
+
@@ -1797,7 +1757,7 @@ angular.module('zmApp', [
});
-// We are NOT going to default route. Routing to a view will start on
+ // We are NOT going to default route. Routing to a view will start on
// a broadcast of "init-complete"
-
+
}); //config \ No newline at end of file
diff --git a/www/js/controllers.js b/www/js/controllers.js
index 412f9831..5321384b 100644
--- a/www/js/controllers.js
+++ b/www/js/controllers.js
@@ -4,27 +4,26 @@
-angular.module('zmApp.controllers', ['ionic', 'ionic.utils', 'ngCordova', 'ng-mfb','angularCircularNavigation', 'jett.ionic.content.banner', 'ionic-pullup', 'ngWebsocket' ])
+angular.module('zmApp.controllers', ['ionic', 'ionic.utils', 'ngCordova', 'ng-mfb', 'angularCircularNavigation', 'jett.ionic.content.banner', 'ionic-pullup', 'ngWebsocket'])
-.controller('zmApp.BaseController', function($scope, $ionicSideMenuDelegate, $ionicPlatform, $timeout, $rootScope) {
- $scope.openMenu = function () {
- $ionicSideMenuDelegate.toggleLeft();
- };
+.controller('zmApp.BaseController', function ($scope, $ionicSideMenuDelegate, $ionicPlatform, $timeout, $rootScope) {
+ $scope.openMenu = function () {
+ $ionicSideMenuDelegate.toggleLeft();
+ };
- $ionicPlatform.registerBackButtonAction(function (event) {
-
- $ionicSideMenuDelegate.toggleLeft();
- $timeout (function() {
+ $ionicPlatform.registerBackButtonAction(function (event) {
+
+ $ionicSideMenuDelegate.toggleLeft();
+ $timeout(function () {
$rootScope.stateofSlide = $ionicSideMenuDelegate.isOpen() + new Date();
- },500);
+ }, 500);
-
-}, 100);
- // Added for electron build to stop title propagation
- $scope.$on('$ionicView.afterEnter', function(ev, data) {
- ev.stopPropagation();
- });
+ }, 100);
-});
+ // Added for electron build to stop title propagation
+ $scope.$on('$ionicView.afterEnter', function (ev, data) {
+ ev.stopPropagation();
+ });
+}); \ No newline at end of file