summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2017-11-03 14:54:22 -0400
committerPliable Pixels <pliablepixels@gmail.com>2017-11-03 14:54:22 -0400
commit7556b9a4fd0feeada9ebfb531e0ac6c7eb2a169f (patch)
tree226bece753df10f24c96eeef67823f4b1ce5455a /www
parenta3242f40e0bb123d2c75dd854d115dba80ea1496 (diff)
lets see what happens #553
Diffstat (limited to 'www')
-rw-r--r--www/js/MontageCtrl.js3200
-rwxr-xr-xwww/js/app.js91
-rw-r--r--www/templates/montage.html5
3 files changed, 1685 insertions, 1611 deletions
diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js
index 92bec795..46b8f83e 100644
--- a/www/js/MontageCtrl.js
+++ b/www/js/MontageCtrl.js
@@ -4,2021 +4,2087 @@
/* global cordova,StatusBar,angular,console,ionic,Packery, Draggabilly, imagesLoaded, ConnectSDK, moment */
angular.module('zmApp.controllers')
- .controller('zmApp.MontageCtrl', ['$scope', '$rootScope', 'NVRDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$ionicPopup', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', 'zm', '$ionicPopover', '$controller', 'imageLoadingDataShare', '$window', '$localstorage', '$translate', 'SecuredPopups', function($scope, $rootScope, NVRDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $ionicPopup, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, zm, $ionicPopover, $controller, imageLoadingDataShare, $window, $localstorage, $translate, SecuredPopups)
+.controller('zmApp.MontageCtrl', ['$scope', '$rootScope', 'NVRDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$ionicPopup', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', 'zm', '$ionicPopover', '$controller', 'imageLoadingDataShare', '$window', '$localstorage', '$translate', 'SecuredPopups', function($scope, $rootScope, NVRDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $ionicPopup, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, zm, $ionicPopover, $controller, imageLoadingDataShare, $window, $localstorage, $translate, SecuredPopups)
+{
+
+ //---------------------------------------------------------------------
+ // Controller main
+ //---------------------------------------------------------------------
+
+ var intervalHandleMontage; // image re-load handler
+ var intervalHandleAlarmStatus; // status of each alarm state
+ var intervalHandleMontageCycle;
+ var intervalHandleReloadPage;
+
+ var gridcontainer;
+ var pckry, draggie;
+ var draggies;
+ var loginData;
+ var timestamp;
+ var sizeInProgress;
+ var modalIntervalHandle;
+ var ld;
+ var refreshSec;
+ var reloadPage = zm.forceMontageReloadDelay;
+
+ $rootScope.$on("auth-success", function () {
+ NVRDataModel.debug("REAUTH");
+ console.log ("RETAUTH");
+ NVRDataModel.stopNetwork();
+ });
+
+
+ //--------------------------------------------------------------------------------------
+ // Handles bandwidth change, if required
+ //
+ //--------------------------------------------------------------------------------------
+
+ $rootScope.$on("bandwidth-change", function(e, data)
{
+ // not called for offline, I'm only interested in BW switches
+ NVRDataModel.debug("Got network change:" + data);
+ var ds;
+ if (data == 'lowbw')
+ {
+ ds = $translate.instant('kLowBWDisplay');
+ }
+ else
+ {
+ ds = $translate.instant('kHighBWDisplay');
+ }
+ NVRDataModel.displayBanner('net', [ds]);
+ var ld = NVRDataModel.getLogin();
+ refreshSec = (NVRDataModel.getBandwidth() == 'lowbw') ? ld.refreshSecLowBW : ld.refreshSec;
- //---------------------------------------------------------------------
- // Controller main
- //---------------------------------------------------------------------
-
- var intervalHandleMontage; // image re-load handler
- var intervalHandleAlarmStatus; // status of each alarm state
- var intervalHandleMontageCycle;
-
- var gridcontainer;
- var pckry, draggie;
- var draggies;
- var loginData;
- var timestamp;
- var sizeInProgress;
- var modalIntervalHandle;
- var ld;
- var refreshSec;
-
- $rootScope.$on("auth-success", function () {
- NVRDataModel.debug("REAUTH");
- console.log ("RETAUTH");
- NVRDataModel.stopNetwork();
- });
+ $interval.cancel(intervalHandleMontage);
+ $interval.cancel(intervalHandleMontageCycle);
+ $interval.cancel(intervalHandleReloadPage);
+
+
+ intervalHandleMontage = $interval(function()
+ {
+ loadNotifications();
+ }.bind(this), refreshSec * 1000);
+
+ intervalHandleMontageCycle = $interval(function()
+ {
+ cycleMontageProfiles();
+ }.bind(this), NVRDataModel.getLogin().cycleMontageInterval* 1000);
+
+ intervalHandleReloadPage = $interval(function()
+ {
+ forceReloadPage();
+ }.bind(this), reloadPage * 1000);
+ if (NVRDataModel.getBandwidth() == 'lowbw')
+ {
+ NVRDataModel.debug("Enabling low bandwidth parameters");
+ $scope.LoginData.montageQuality = zm.montageQualityLowBW;
+ $scope.LoginData.singleImageQuality = zm.eventSingleImageQualityLowBW;
+ $scope.LoginData.montageHistoryQuality = zm.montageQualityLowBW;
+
+ }
+ });
- //--------------------------------------------------------------------------------------
- // Handles bandwidth change, if required
- //
- //--------------------------------------------------------------------------------------
+ // --------------------------------------------------------
+ // Handling of back button in case modal is open should
+ // close the modal
+ // --------------------------------------------------------
- $rootScope.$on("bandwidth-change", function(e, data)
+ $ionicPlatform.registerBackButtonAction(function(e)
+ {
+ e.preventDefault();
+ if ($scope.modal != undefined && $scope.modal.isShown())
+ {
+ // switch off awake, as liveview is finished
+ NVRDataModel.debug("Modal is open, closing it");
+ NVRDataModel.setAwake(false);
+ $scope.isModalActive = false;
+ cleanupOnClose();
+ }
+ else
{
- // not called for offline, I'm only interested in BW switches
- NVRDataModel.debug("Got network change:" + data);
- var ds;
- if (data == 'lowbw')
+ NVRDataModel.debug("Modal is closed, so toggling or exiting");
+ if (!$ionicSideMenuDelegate.isOpenLeft())
{
- ds = $translate.instant('kLowBWDisplay');
+ $ionicSideMenuDelegate.toggleLeft();
+
}
else
{
- ds = $translate.instant('kHighBWDisplay');
+ navigator.app.exitApp();
}
- NVRDataModel.displayBanner('net', [ds]);
- var ld = NVRDataModel.getLogin();
- refreshSec = (NVRDataModel.getBandwidth() == 'lowbw') ? ld.refreshSecLowBW : ld.refreshSec;
-
- $interval.cancel(intervalHandleMontage);
- $interval.cancel(intervalHandleMontageCycle);
+ }
- intervalHandleMontage = $interval(function()
- {
- loadNotifications();
- }.bind(this), refreshSec * 1000);
+ }, 1000);
- intervalHandleMontageCycle = $interval(function()
- {
- cycleMontageProfiles();
- }.bind(this), NVRDataModel.getLogin().cycleMontageInterval* 1000);
+ /*$scope.toggleHide = function(mon)
+ {
+
- if (NVRDataModel.getBandwidth() == 'lowbw')
- {
- NVRDataModel.debug("Enabling low bandwidth parameters");
- $scope.LoginData.montageQuality = zm.montageQualityLowBW;
- $scope.LoginData.singleImageQuality = zm.eventSingleImageQualityLowBW;
- $scope.LoginData.montageHistoryQuality = zm.montageQualityLowBW;
+ if (mon.Monitor.listDisplay == 'noshow')
+ mon.Monitor.listDisplay = 'show';
+ else
+ mon.Monitor.listDisplay = 'noshow';
- }
- });
+
+
+ };*/
- // --------------------------------------------------------
- // Handling of back button in case modal is open should
- // close the modal
- // --------------------------------------------------------
- $ionicPlatform.registerBackButtonAction(function(e)
+ function forceReloadPage() {
+ if ($scope.isDragabillyOn)
{
- e.preventDefault();
- if ($scope.modal != undefined && $scope.modal.isShown())
- {
- // switch off awake, as liveview is finished
- NVRDataModel.debug("Modal is open, closing it");
- NVRDataModel.setAwake(false);
- $scope.isModalActive = false;
- cleanupOnClose();
- }
- else
- {
- NVRDataModel.debug("Modal is closed, so toggling or exiting");
- if (!$ionicSideMenuDelegate.isOpenLeft())
- {
- $ionicSideMenuDelegate.toggleLeft();
+ NVRDataModel.debug ("not cycling, edit in progress");
+ return;
- }
- else
- {
- navigator.app.exitApp();
- }
+ }
- }
+ NVRDataModel.log ("Reloading view to keep memory in check...");
+ $window.location.reload();
+ /*$ionicHistory.nextViewOptions(
+ {
+ disableAnimate: true,
+ disableBack: true
+ });
+ $state.go("app.montage",
+ {
+ minimal: $scope.minimal,
+ isRefresh: true
+ });*/
+ }
- }, 1000);
+ // called by afterEnter to load Packery
+ function initPackery()
+ {
- /*$scope.toggleHide = function(mon)
+ $ionicLoading.show(
{
-
-
- if (mon.Monitor.listDisplay == 'noshow')
- mon.Monitor.listDisplay = 'show';
- else
- mon.Monitor.listDisplay = 'noshow';
+ template: $translate.instant('kArrangingImages'),
+ noBackdrop: true,
+ duration: zm.loadingTimeout
+ });
-
-
- };*/
+ var progressCalled = false;
+ draggies = [];
+ var layouttype = true;
+ var ld = NVRDataModel.getLogin();
- // called by afterEnter to load Packery
- function initPackery()
- {
+ var positionsStr = ld.packeryPositions;
+ var positions = {};
- $ionicLoading.show(
- {
- template: $translate.instant('kArrangingImages'),
- noBackdrop: true,
- duration: zm.loadingTimeout
- });
+ if (positionsStr == '' || positionsStr == undefined)
+ {
+ NVRDataModel.log("Did NOT find a packery layout");
+ layouttype = true;
+ }
+ else
+ {
- var progressCalled = false;
- draggies = [];
- var layouttype = true;
- var ld = NVRDataModel.getLogin();
+ //console.log ("POSITION STR IS " + positionsStr);
+ positions = JSON.parse(positionsStr);
+ NVRDataModel.log("found a packery layout");
- var positionsStr = ld.packeryPositions;
- var positions = {};
+ layouttype = false;
+ }
- if (positionsStr == '' || positionsStr == undefined)
- {
- NVRDataModel.log("Did NOT find a packery layout");
- layouttype = true;
- }
- else
- {
+ var cnt = 0;
+ $scope.MontageMonitors.forEach(function(elem)
+ {
+ if ((elem.Monitor.Enabled != '0') && (elem.Monitor.Function != 'None') )
+ cnt++;
+ });
- //console.log ("POSITION STR IS " + positionsStr);
- positions = JSON.parse(positionsStr);
- NVRDataModel.log("found a packery layout");
+ NVRDataModel.log("Monitors that are active and not DOM hidden: " + cnt + " while grid has " + positions.length);
- layouttype = false;
- }
+ if (cnt > NVRDataModel.getLogin().maxMontage)
+ {
+ cnt = NVRDataModel.getLogin().maxMontage;
+ NVRDataModel.log("restricting monitor count to " + cnt + " due to max-montage setting");
+ }
- var cnt = 0;
- $scope.MontageMonitors.forEach(function(elem)
- {
- if ((elem.Monitor.Enabled != '0') && (elem.Monitor.Function != 'None') )
- cnt++;
- });
+ if (cnt != positions.length)
+ {
- NVRDataModel.log("Monitors that are active and not DOM hidden: " + cnt + " while grid has " + positions.length);
+ NVRDataModel.log("Whoops!! Monitors have changed. I'm resetting layouts, sorry!");
+ layouttype = true;
+ positions = {};
+ }
- if (cnt > NVRDataModel.getLogin().maxMontage)
- {
- cnt = NVRDataModel.getLogin().maxMontage;
- NVRDataModel.log("restricting monitor count to " + cnt + " due to max-montage setting");
- }
+ var elem = angular.element(document.getElementById("mygrid"));
- if (cnt != positions.length)
- {
+ //console.log ("**** mygrid is " + JSON.stringify(elem));
- NVRDataModel.log("Whoops!! Monitors have changed. I'm resetting layouts, sorry!");
- layouttype = true;
- positions = {};
- }
+ pckry = new Packery('.grid',
+ {
+ itemSelector: '.grid-item',
+ percentPosition: true,
+ columnWidth: '.grid-sizer',
+ gutter: 0,
+ initLayout: layouttype,
+ shiftPercentResize: true
- var elem = angular.element(document.getElementById("mygrid"));
+ });
- //console.log ("**** mygrid is " + JSON.stringify(elem));
+ imagesLoaded(elem).on('progress', function(instance, img)
+ {
- pckry = new Packery('.grid',
- {
- itemSelector: '.grid-item',
- percentPosition: true,
- columnWidth: '.grid-sizer',
- gutter: 0,
- initLayout: layouttype,
- shiftPercentResize: true
+ var result = img.isLoaded ? 'loaded' : 'broken';
+ NVRDataModel.debug('~~loaded image is ' + result + ' for ' + img.img.src);
- });
+ // lay out every image if a pre-arranged position has not been found
- imagesLoaded(elem).on('progress', function(instance, img)
+ $timeout(function()
{
+ if (layouttype) pckry.layout();
+ }, 100);
- var result = img.isLoaded ? 'loaded' : 'broken';
- NVRDataModel.debug('~~loaded image is ' + result + ' for ' + img.img.src);
+ progressCalled = true;
- // lay out every image if a pre-arranged position has not been found
+ // if (layouttype) $timeout (function(){layout(pckry);},100);
+ });
- $timeout(function()
- {
- if (layouttype) pckry.layout();
- }, 100);
+ imagesLoaded(elem).on('always', function()
+ {
+ //console.log ("******** ALL IMAGES LOADED");
+ // $scope.$digest();
+ NVRDataModel.debug("All images loaded");
- progressCalled = true;
+ $scope.areImagesLoading = false;
- // if (layouttype) $timeout (function(){layout(pckry);},100);
- });
+ $ionicLoading.hide();
- imagesLoaded(elem).on('always', function()
+ if (!progressCalled)
{
- //console.log ("******** ALL IMAGES LOADED");
- // $scope.$digest();
- NVRDataModel.debug("All images loaded");
-
- $scope.areImagesLoading = false;
+ NVRDataModel.log("*** PROGRESS WAS NOT CALLED");
+ // pckry.reloadItems();
+ }
- $ionicLoading.hide();
+ $timeout(function()
+ {
- if (!progressCalled)
+ pckry.getItemElements().forEach(function(itemElem)
{
- NVRDataModel.log("*** PROGRESS WAS NOT CALLED");
- // pckry.reloadItems();
- }
- $timeout(function()
- {
+ draggie = new Draggabilly(itemElem);
+ pckry.bindDraggabillyEvents(draggie);
+ draggies.push(draggie);
+ draggie.disable();
+ draggie.unbindHandles();
+ });
- pckry.getItemElements().forEach(function(itemElem)
- {
+ pckry.on('dragItemPositioned', itemDragged);
- draggie = new Draggabilly(itemElem);
- pckry.bindDraggabillyEvents(draggie);
- draggies.push(draggie);
- draggie.disable();
- draggie.unbindHandles();
- });
+ if (!isEmpty(positions))
+ {
+ NVRDataModel.log("Arranging as per packery grid");
- pckry.on('dragItemPositioned', itemDragged);
- if (!isEmpty(positions))
+ for (var i = 0; i < $scope.MontageMonitors.length; i++)
{
- NVRDataModel.log("Arranging as per packery grid");
-
-
- for (var i = 0; i < $scope.MontageMonitors.length; i++)
+ for (var j = 0; j < positions.length; j++)
{
- for (var j = 0; j < positions.length; j++)
+ if ($scope.MontageMonitors[i].Monitor.Id == positions[j].attr)
{
- if ($scope.MontageMonitors[i].Monitor.Id == positions[j].attr)
- {
- if (isNaN(positions[j].size)) positions[j].size=20;
- $scope.MontageMonitors[i].Monitor.gridScale = positions[j].size;
- $scope.MontageMonitors[i].Monitor.listDisplay = positions[j].display;
- NVRDataModel.debug("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);
+ if (isNaN(positions[j].size)) positions[j].size=20;
+ $scope.MontageMonitors[i].Monitor.gridScale = positions[j].size;
+ $scope.MontageMonitors[i].Monitor.listDisplay = positions[j].display;
+ NVRDataModel.debug("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);
}
+ }
- NVRDataModel.debug("All images loaded, doing image layout");
+ NVRDataModel.debug("All images loaded, doing image layout");
- }
+ }
+ $timeout(function()
+ {
+ //NVRDataModel.log("Force calling resize");
+ ///pckry.reloadItems();
+ ///positions is defined only if layouttype was false
+ console.log (">>> Positions is "+ JSON.stringify(positions));
+ if (!layouttype) pckry.initShiftLayout(positions, "data-item-id");
+ // now do a jiggle
$timeout(function()
{
- //NVRDataModel.log("Force calling resize");
- ///pckry.reloadItems();
- ///positions is defined only if layouttype was false
- console.log (">>> Positions is "+ JSON.stringify(positions));
- if (!layouttype) pckry.initShiftLayout(positions, "data-item-id");
- // now do a jiggle
- $timeout(function()
- {
- NVRDataModel.debug("doing the jiggle and dance...");
- pckry.resize(true);
- }, 300);
-
- }, 100);
+ NVRDataModel.debug("doing the jiggle and dance...");
+ pckry.resize(true);
+ }, 300);
- //pckry.onresize();
+ }, 100);
- }, 20);
+ //pckry.onresize();
- });
+ }, 20);
- function itemDragged(item)
- {
- NVRDataModel.debug("drag complete");
- $timeout (function(){pckry.shiftLayout();},20);
+ });
- pckry.once ('layoutComplete', function() {
+ function itemDragged(item)
+ {
+ NVRDataModel.debug("drag complete");
+ $timeout (function(){pckry.shiftLayout();},20);
- var positions = pckry.getShiftPositions('data-item-id');
- //console.log ("POSITIONS MAP " + JSON.stringify(positions));
- var ld = NVRDataModel.getLogin();
- ld.packeryPositions = JSON.stringify(positions);
- console.log ("Saving " + ld.packeryPositions);
- // console.log ("FULL OBJECT "+ JSON.stringify(ld));
- ld.currentMontageProfile = "";
- $scope.currentProfileName = $translate.instant ('kMontage');
- NVRDataModel.setLogin(ld);
- NVRDataModel.debug("saved new positions");
- });
+ pckry.once ('layoutComplete', function() {
- //pckry.getItemElements().forEach(function (itemElem) {
+ var positions = pckry.getShiftPositions('data-item-id');
+ //console.log ("POSITIONS MAP " + JSON.stringify(positions));
+ var ld = NVRDataModel.getLogin();
+ ld.packeryPositions = JSON.stringify(positions);
+ console.log ("Saving " + ld.packeryPositions);
+ // console.log ("FULL OBJECT "+ JSON.stringify(ld));
+ ld.currentMontageProfile = "";
+ $scope.currentProfileName = $translate.instant ('kMontage');
+ NVRDataModel.setLogin(ld);
+ NVRDataModel.debug("saved new positions");
+ });
- //console.log (itemElem.attributes['data-item-id'].value+" size "+itemElem.attributes['data-item-size'].value );
- // });
+ //pckry.getItemElements().forEach(function (itemElem) {
-
- }
+ //console.log (itemElem.attributes['data-item-id'].value+" size "+itemElem.attributes['data-item-size'].value );
+ // });
+
}
- function isEmpty(obj)
+ }
+
+ function isEmpty(obj)
+ {
+ for (var prop in obj)
{
- for (var prop in obj)
- {
- return false;
- }
- return true;
+ return false;
}
+ return true;
+ }
- //-----------------------------------------------------------------------
- // color for monitor state in montage
- //-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
+ // color for monitor state in montage
+ //-----------------------------------------------------------------------
- $scope.stateColor = function()
+ $scope.stateColor = function()
+ {
+ //console.log ("***MONSTATUS**"+$scope.monStatus+"**");
+ var attr = "";
+ switch ($scope.monStatus)
{
- //console.log ("***MONSTATUS**"+$scope.monStatus+"**");
- var attr = "";
- switch ($scope.monStatus)
- {
- case "":
- attr = "color:rgba(0, 0, 0, 0)";
- break;
- case "idle":
- attr = "color:rgba(0, 0, 0, 0)";
- break;
- case "pre-alarm":
- attr = "color:#e67e22";
- break;
- case "alarmed":
- attr = "color:#D91E18";
- break;
- case "alert":
- attr = "color:#e67e22";
- break;
- case "record":
- attr = "color:#26A65B";
- break;
- }
+ case "":
+ attr = "color:rgba(0, 0, 0, 0)";
+ break;
+ case "idle":
+ attr = "color:rgba(0, 0, 0, 0)";
+ break;
+ case "pre-alarm":
+ attr = "color:#e67e22";
+ break;
+ case "alarmed":
+ attr = "color:#D91E18";
+ break;
+ case "alert":
+ attr = "color:#e67e22";
+ break;
+ case "record":
+ attr = "color:#26A65B";
+ break;
+ }
- return attr;
- };
+ return attr;
+ };
- function findNext (key,obj)
- {
+ function findNext (key,obj)
+ {
- console.log (" key is: "+ key);
- console.log ("array is " + JSON.stringify (obj));
- var keys = Object.keys(obj);
+ console.log (" key is: "+ key);
+ console.log ("array is " + JSON.stringify (obj));
+ var keys = Object.keys(obj);
- var len = keys.length;
- var curindex = keys.indexOf(key);
- var modulus = (curindex + 1) % len;
+ var len = keys.length;
+ var curindex = keys.indexOf(key);
+ var modulus = (curindex + 1) % len;
- console.log ("*********** len="+len+" curr="+curindex+" next="+modulus);
+ console.log ("*********** len="+len+" curr="+curindex+" next="+modulus);
- //console.log ("Keys array "+ JSON.stringify(keys));
+ //console.log ("Keys array "+ JSON.stringify(keys));
- //console.log ("Current index: "+ keys.indexOf(key) );
- //console.log ("returning index of " + (keys.indexOf(key) + 1) % (keys.length));
- // console.log ("keys length is "+ keys.length);
- return keys[modulus];
+ //console.log ("Current index: "+ keys.indexOf(key) );
+ //console.log ("returning index of " + (keys.indexOf(key) + 1) % (keys.length));
+ // console.log ("keys length is "+ keys.length);
+ return keys[modulus];
- /* var size = Object.keys(obj).length;
- var i;
- for (i=0; i<size; i++)
- {
- if (Object.keys(obj)[i] == key)
- break;
- }
- i = (i + 1) % size;
- return Object.keys(obj)[i];*/
-
- }
+ /* var size = Object.keys(obj).length;
+ var i;
+ for (i=0; i<size; i++)
+ {
+ if (Object.keys(obj)[i] == key)
+ break;
+ }
+ i = (i + 1) % size;
+ return Object.keys(obj)[i];*/
+
+ }
- //----------------------------------------------
- // cycle profiles
- //-----------------------------------------------
+ //----------------------------------------------
+ // cycle profiles
+ //-----------------------------------------------
- function cycleMontageProfiles()
- {
+ function cycleMontageProfiles()
+ {
- var ld = NVRDataModel.getLogin();
+ var ld = NVRDataModel.getLogin();
- if (!ld.cycleMontageProfiles)
- {
- // NVRDataModel.debug ("cycling disabled");
- return;
+ if (!ld.cycleMontageProfiles)
+ {
+ // NVRDataModel.debug ("cycling disabled");
+ return;
- }
+ }
- if ($scope.reOrderActive)
- {
- NVRDataModel.debug ("not cycling, re-order in progress");
- return;
- }
+ if ($scope.reOrderActive)
+ {
+ NVRDataModel.debug ("not cycling, re-order in progress");
+ return;
+ }
- if ($scope.isDragabillyOn)
- {
- NVRDataModel.debug ("not cycling, edit in progress");
- return;
+ if ($scope.isDragabillyOn)
+ {
+ NVRDataModel.debug ("not cycling, edit in progress");
+ return;
- }
-
- var nextProfile = findNext(ld.currentMontageProfile, ld.packeryPositionsArray);
+ }
+
+ var nextProfile = findNext(ld.currentMontageProfile, ld.packeryPositionsArray);
- if (nextProfile == ld.currentMontageProfile)
- {
- NVRDataModel.debug ("Not cycling profiles, looks like you only have one");
- }
- else
- {
- NVRDataModel.debug ("Cycling profile from: "+ld.currentMontageProfile+" to:"+nextProfile);
- switchMontageProfile(nextProfile);
+ if (nextProfile == ld.currentMontageProfile)
+ {
+ NVRDataModel.debug ("Not cycling profiles, looks like you only have one");
+ }
+ else
+ {
+ NVRDataModel.debug ("Cycling profile from: "+ld.currentMontageProfile+" to:"+nextProfile);
+ switchMontageProfile(nextProfile);
- }
-
-
}
- //-----------------------------------------------------------------------
- // cycle through all displayed monitors and check alarm status
- //-----------------------------------------------------------------------
+
+ }
- function loadAlarmStatus()
- {
+ //-----------------------------------------------------------------------
+ // cycle through all displayed monitors and check alarm status
+ //-----------------------------------------------------------------------
- if ((NVRDataModel.versionCompare($rootScope.apiVersion, "1.30") == -1) ||
- (NVRDataModel.getBandwidth() == 'lowbw') ||
- (NVRDataModel.getLogin().disableAlarmCheckMontage == true))
- {
+ function loadAlarmStatus()
+ {
- return;
- }
+ if ((NVRDataModel.versionCompare($rootScope.apiVersion, "1.30") == -1) ||
+ (NVRDataModel.getBandwidth() == 'lowbw') ||
+ (NVRDataModel.getLogin().disableAlarmCheckMontage == true))
+ {
- 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'))
- {
- continue;
- }
- getAlarmStatus($scope.MontageMonitors[i]);
+ return;
+ }
+ 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'))
+ {
+ continue;
}
+ getAlarmStatus($scope.MontageMonitors[i]);
}
- //-----------------------------------------------------------------------
- // get alarm status over HTTP for a single monitor
- //-----------------------------------------------------------------------
- function getAlarmStatus(monitor)
- {
- var apiurl = NVRDataModel.getLogin().apiurl;
- //console.log ("ALARM CALLED WITH " +JSON.stringify(monitor));
+ }
+
+ //-----------------------------------------------------------------------
+ // get alarm status over HTTP for a single monitor
+ //-----------------------------------------------------------------------
+ function getAlarmStatus(monitor)
+ {
+ var apiurl = NVRDataModel.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)
+ {
+ // NVRDataModel.debug ("Success in monitor alarmed status " + JSON.stringify(data));
- $http.get(alarmurl)
- .then(function(data)
+ var sid = parseInt(data.data.status);
+ switch (sid)
{
- // NVRDataModel.debug ("Success in monitor alarmed status " + JSON.stringify(data));
+ 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;
- 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)
+ {
- },
- function(error)
- {
+ monitor.Monitor.alarmState = 'color:rgba(0,0,0,0);';
+ NVRDataModel.debug("Error in monitor alarmed status ");
+ });
+ }
- monitor.Monitor.alarmState = 'color:rgba(0,0,0,0);';
- NVRDataModel.debug("Error in monitor alarmed status ");
- });
- }
+ function randEachTime() {
+ $scope.randToAvoidCacheMem = new Date().getTime();
+ //$scope.randToAvoidCacheMem = "1";
+ //console.log ("Generating:"+$scope.randToAvoidCacheMem);
+ }
- function randEachTime() {
- $scope.randToAvoidCacheMem = new Date().getTime();
- //$scope.randToAvoidCacheMem = "1";
- //console.log ("Generating:"+$scope.randToAvoidCacheMem);
- }
+ //-----------------------------------------------------------------------
+ // re-compute rand so snapshot in montage reloads
+ //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- // re-compute rand so snapshot in montage reloads
- //-----------------------------------------------------------------------
+ function loadNotifications()
+ {
- function loadNotifications()
+ randEachTime();
+ //console.log ($scope.randToAvoidCacheMem);
+
+ if ($scope.areImagesLoading)
{
+ NVRDataModel.debug("skipping image refresh, packery is still loading");
+ return;
+ }
- randEachTime();
- //console.log ($scope.randToAvoidCacheMem);
+ //if (pckry && !$scope.isDragabillyOn) pckry.shiftLayout();
+ $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
- if ($scope.areImagesLoading)
- {
- NVRDataModel.debug("skipping image refresh, packery is still loading");
- return;
- }
+ // if you see the time move, montage should move
- //if (pckry && !$scope.isDragabillyOn) pckry.shiftLayout();
- $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
+ if ($scope.iconTimeNow == 'local')
+ $scope.timeNow = moment().format(NVRDataModel.getTimeFormatSec());
+ else
+ $scope.timeNow = moment().tz(NVRDataModel.getTimeZoneNow()).format(NVRDataModel.getTimeFormatSec());
+ //$scope.timeNow = moment().format(NVRDataModel.getTimeFormatSec());
- // if you see the time move, montage should move
+ //console.log ("Inside Montage timer...");
- if ($scope.iconTimeNow == 'local')
- $scope.timeNow = moment().format(NVRDataModel.getTimeFormatSec());
- else
- $scope.timeNow = moment().tz(NVRDataModel.getTimeZoneNow()).format(NVRDataModel.getTimeFormatSec());
- //$scope.timeNow = moment().format(NVRDataModel.getTimeFormatSec());
+ }
- //console.log ("Inside Montage timer...");
+ $scope.cancelReorder = function()
+ {
+ $scope.modal.remove();
+ };
- }
+ $scope.saveReorder = function()
+ {
+ NVRDataModel.debug("Saving monitor hide/unhide");
- $scope.cancelReorder = function()
- {
- $scope.modal.remove();
- };
+ // redo packery as monitor status has changed
+ // DOM may need reloading if you've hidden/unhidden stuff
+ $scope.MontageMonitors = $scope.copyMontage;
+ $scope.modal.remove();
- $scope.saveReorder = function()
+ $timeout(function()
{
- NVRDataModel.debug("Saving monitor hide/unhide");
- // redo packery as monitor status has changed
- // DOM may need reloading if you've hidden/unhidden stuff
- $scope.MontageMonitors = $scope.copyMontage;
- $scope.modal.remove();
+ draggies.forEach(function(drag)
+ {
+ drag.destroy();
+ });
+
+ pckry.reloadItems();
+ draggies = [];
+ pckry.once('layoutComplete', savePackeryOrder);
+ pckry.layout();
+
+ }, 400);
+ };
+
+ function savePackeryOrder()
+ {
$timeout(function()
{
+ var positions = pckry.getShiftPositions('data-item-id');
+ NVRDataModel.debug("POSITIONS MAP " + JSON.stringify(positions));
+ var ld = NVRDataModel.getLogin();
+ ld.packeryPositions = JSON.stringify(positions);
+ //console.log ("Savtogging " + ld.packeryPositions);
+ ld.currentMontageProfile = "";
+ $scope.currentProfileName = $translate.instant ('kMontage');
+ NVRDataModel.setLogin(ld);
- draggies.forEach(function(drag)
+ pckry.getItemElements().forEach(function(itemElem)
{
- drag.destroy();
+ draggie = new Draggabilly(itemElem);
+ pckry.bindDraggabillyEvents(draggie);
+ draggies.push(draggie);
+ draggie.disable();
});
- pckry.reloadItems();
- draggies = [];
- pckry.once('layoutComplete', savePackeryOrder);
- pckry.layout();
+ $ionicScrollDelegate.$getByHandle("montage-delegate").scrollTop();
- }, 400);
+ // Now also ask DataModel to update its monitor display status
+ NVRDataModel.reloadMonitorDisplayStatus();
+ //$scope.MontageMonitors = angular.copy(NVRDataModel.getMonitorsNow());
+ //$scope.MontageMonitors = NVRDataModel.getMonitorsNow();
+ pckry.layout();
+ }, 20);
+ }
- };
+ $scope.getCycleStatus = function()
+ {
+ var c = NVRDataModel.getLogin().cycleMontageProfiles;
+ var str = (c) ? $translate.instant('kOn'):$translate.instant('kOff');
+ return str;
+ };
- function savePackeryOrder()
- {
- $timeout(function()
- {
- var positions = pckry.getShiftPositions('data-item-id');
- NVRDataModel.debug("POSITIONS MAP " + JSON.stringify(positions));
- var ld = NVRDataModel.getLogin();
- ld.packeryPositions = JSON.stringify(positions);
- //console.log ("Savtogging " + ld.packeryPositions);
- ld.currentMontageProfile = "";
- $scope.currentProfileName = $translate.instant ('kMontage');
- NVRDataModel.setLogin(ld);
+ $scope.toggleCycle = function()
+ {
+ var ld = NVRDataModel.getLogin();
+ ld.cycleMontageProfiles = !ld.cycleMontageProfiles;
+ NVRDataModel.setLogin(ld);
+ NVRDataModel.debug ("cycle="+ld.cycleMontageProfiles);
+ NVRDataModel.debug ("cycle interval="+ld.cycleMontageInterval);
- pckry.getItemElements().forEach(function(itemElem)
- {
- draggie = new Draggabilly(itemElem);
- pckry.bindDraggabillyEvents(draggie);
- draggies.push(draggie);
- draggie.disable();
- });
-
- $ionicScrollDelegate.$getByHandle("montage-delegate").scrollTop();
-
- // Now also ask DataModel to update its monitor display status
- NVRDataModel.reloadMonitorDisplayStatus();
- //$scope.MontageMonitors = angular.copy(NVRDataModel.getMonitorsNow());
- //$scope.MontageMonitors = NVRDataModel.getMonitorsNow();
- pckry.layout();
- }, 20);
- }
- $scope.getCycleStatus = function()
- {
- var c = NVRDataModel.getLogin().cycleMontageProfiles;
- var str = (c) ? $translate.instant('kOn'):$translate.instant('kOff');
- return str;
- };
+ };
- $scope.toggleCycle = function()
- {
- var ld = NVRDataModel.getLogin();
- ld.cycleMontageProfiles = !ld.cycleMontageProfiles;
- NVRDataModel.setLogin(ld);
- NVRDataModel.debug ("cycle="+ld.cycleMontageProfiles);
- NVRDataModel.debug ("cycle interval="+ld.cycleMontageInterval);
+ $scope.toggleHide = function(i)
+ {
+ if ($scope.copyMontage[i].Monitor.listDisplay == 'show')
+ $scope.copyMontage[i].Monitor.listDisplay = 'noshow';
+ else
+ $scope.copyMontage[i].Monitor.listDisplay = 'show';
- };
+ NVRDataModel.debug("index " + i + " is now " + $scope.copyMontage[i].Monitor.listDisplay);
+ };
- $scope.toggleHide = function(i)
+ $scope.hideUnhide = function()
+ {
+ if ($scope.isDragabillyOn)
{
+ dragToggle();
+ }
+ // make a copy of the current list and work on that
+ // this is to avoid packery screw ups while you are hiding/unhiding
+ $scope.copyMontage = angular.copy($scope.MontageMonitors);
+ $ionicModal.fromTemplateUrl('templates/reorder-modal.html',
+ {
+ scope: $scope,
+ animation: 'slide-in-up',
+ id:'reorder',
+ })
+ .then(function(modal)
+ {
+ $scope.modal = modal;
+ $scope.reOrderActive = true;
+ $scope.modal.show();
+ });
+ };
- if ($scope.copyMontage[i].Monitor.listDisplay == 'show')
- $scope.copyMontage[i].Monitor.listDisplay = 'noshow';
- else
- $scope.copyMontage[i].Monitor.listDisplay = 'show';
- NVRDataModel.debug("index " + i + " is now " + $scope.copyMontage[i].Monitor.listDisplay);
- };
+ $scope.$on('modal.removed', function(e, m)
+ {
- $scope.hideUnhide = function()
- {
- if ($scope.isDragabillyOn)
- {
- dragToggle();
- }
- // make a copy of the current list and work on that
- // this is to avoid packery screw ups while you are hiding/unhiding
- $scope.copyMontage = angular.copy($scope.MontageMonitors);
- $ionicModal.fromTemplateUrl('templates/reorder-modal.html',
- {
- scope: $scope,
- animation: 'slide-in-up',
- id:'reorder',
- })
- .then(function(modal)
- {
- $scope.modal = modal;
- $scope.reOrderActive = true;
- $scope.modal.show();
- });
- };
+ if (m.id != 'reorder')
+ return;
+ $scope.reOrderActive = false;
+ //console.log ("************** FOOTAGE CLOSED");
- $scope.$on('modal.removed', function(e, m)
- {
+ });
- if (m.id != 'reorder')
- return;
- $scope.reOrderActive = false;
+ /*
+ $scope.closeReorderModal = function () {
+
+ $scope.modal.remove();
- //console.log ("************** FOOTAGE CLOSED");
+ };
+ */
- });
+ //----------------------------------------------------------------
+ // Alarm emit handling
+ //----------------------------------------------------------------
+ $rootScope.$on("alarm", function(event, args)
+ {
+ // FIXME: I should probably unregister this instead
+ if (typeof $scope.monitors === undefined)
+ return;
+ //console.log ("***EVENT TRAP***");
+ var alarmMonitors = args.message;
+ for (var i = 0; i < alarmMonitors.length; i++)
+ {
+ //console.log ("**** TRAPPED EVENT: "+alarmMonitors[i]);
- /*
- $scope.closeReorderModal = function () {
-
- $scope.modal.remove();
-
- };
- */
-
- //----------------------------------------------------------------
- // Alarm emit handling
- //----------------------------------------------------------------
- $rootScope.$on("alarm", function(event, args)
- {
- // FIXME: I should probably unregister this instead
- if (typeof $scope.monitors === undefined)
- return;
- //console.log ("***EVENT TRAP***");
- var alarmMonitors = args.message;
- for (var i = 0; i < alarmMonitors.length; i++)
+ for (var j = 0; j < $scope.MontageMonitors.length; j++)
{
- //console.log ("**** TRAPPED EVENT: "+alarmMonitors[i]);
-
- for (var j = 0; j < $scope.MontageMonitors.length; j++)
+ if ($scope.MontageMonitors[j].Monitor.Id == alarmMonitors[i])
{
- if ($scope.MontageMonitors[j].Monitor.Id == alarmMonitors[i])
- {
- NVRDataModel.debug("Enabling alarm for Monitor:" + $scope.monitors[j].Monitor.Id);
- $scope.MontageMonitors[j].Monitor.isAlarmed = true;
- scheduleRemoveFlash(j);
- }
+ NVRDataModel.debug("Enabling alarm for Monitor:" + $scope.monitors[j].Monitor.Id);
+ $scope.MontageMonitors[j].Monitor.isAlarmed = true;
+ scheduleRemoveFlash(j);
}
-
}
- });
-
- function scheduleRemoveFlash(id)
- {
- NVRDataModel.debug("Scheduled a " + zm.alarmFlashTimer + "ms timer for dis-alarming monitor ID:" + $scope.MontageMonitors[id].Monitor.Id);
- $timeout(function()
- {
- $scope.MontageMonitors[id].Monitor.isAlarmed = false;
- NVRDataModel.debug("dis-alarming monitor ID:" + $scope.MontageMonitors[id].Monitor.Id);
- }, zm.alarmFlashTimer);
}
- //----------------------------------------------------------------
- // Alarm notification handling
- //----------------------------------------------------------------
- $scope.handleAlarms = function()
- {
- $rootScope.isAlarm = !$rootScope.isAlarm;
- if (!$rootScope.isAlarm)
- // if (1)
- {
- $rootScope.alarmCount = "0";
- $ionicHistory.nextViewOptions(
- {
- disableBack: true
- });
- $state.go("app.events",
- {
- "id": 0,
- "playEvent": false
- }/*,
- {
- reload: true
- }*/);
- return;
- }
- };
+ });
- $scope.handleAlarmsWhileMinimized = function()
+ function scheduleRemoveFlash(id)
+ {
+ NVRDataModel.debug("Scheduled a " + zm.alarmFlashTimer + "ms timer for dis-alarming monitor ID:" + $scope.MontageMonitors[id].Monitor.Id);
+ $timeout(function()
{
- $rootScope.isAlarm = !$rootScope.isAlarm;
-
- $scope.minimal = !$scope.minimal;
- NVRDataModel.debug("MontageCtrl: switch minimal is " + $scope.minimal);
- ionic.Platform.fullScreen($scope.minimal, !$scope.minimal);
- //console.log ("alarms:Cancelling timer");
- $interval.cancel(intervalHandleMontage);
- $interval.cancel(intervalHandleMontageCycle);
- $interval.cancel(intervalHandleAlarmStatus);
-
- if (!$rootScope.isAlarm)
+ $scope.MontageMonitors[id].Monitor.isAlarmed = false;
+ NVRDataModel.debug("dis-alarming monitor ID:" + $scope.MontageMonitors[id].Monitor.Id);
+ }, zm.alarmFlashTimer);
+ }
+
+ //----------------------------------------------------------------
+ // Alarm notification handling
+ //----------------------------------------------------------------
+ $scope.handleAlarms = function()
+ {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+ if (!$rootScope.isAlarm)
+ // if (1)
+ {
+ $rootScope.alarmCount = "0";
+ $ionicHistory.nextViewOptions(
{
- $rootScope.alarmCount = "0";
- $ionicHistory.nextViewOptions(
- {
- disableBack: true
- });
- $state.go("app.events",
- {
- "id": 0,
- "playEvent": false
- },
- {
- reload: true
- });
- return;
- }
- };
-
- //-------------------------------------------------------------
- // this is checked to make sure we are not pulling images
- // when app is in background. This is a problem with Android,
- // for example
- //-------------------------------------------------------------
+ disableBack: true
+ });
+ $state.go("app.events",
+ {
+ "id": 0,
+ "playEvent": false
+ }/*,
+ {
+ reload: true
+ }*/);
+ return;
+ }
+ };
- $scope.isBackground = function()
+ $scope.handleAlarmsWhileMinimized = function()
+ {
+ $rootScope.isAlarm = !$rootScope.isAlarm;
+
+ $scope.minimal = !$scope.minimal;
+ var ld = NVRDataModel.getLogin();
+ ld.isFullScreen = $scope.minimal;
+ NVRDataModel.setLogin(ld);
+
+ NVRDataModel.debug("MontageCtrl: switch minimal is " + $scope.minimal);
+ ionic.Platform.fullScreen($scope.minimal, !$scope.minimal);
+ //console.log ("alarms:Cancelling timer");
+ $interval.cancel(intervalHandleMontage);
+ $interval.cancel(intervalHandleMontageCycle);
+ $interval.cancel(intervalHandleAlarmStatus);
+ $interval.cancel(intervalHandleReloadPage);
+
+
+ if (!$rootScope.isAlarm)
{
- //console.log ("Is background called from Montage and returned " +
- //NVRDataModel.isBackground());
- return NVRDataModel.isBackground();
- };
-
- //---------------------------------------------------------------------
- // Triggered when you enter/exit full screen
- //---------------------------------------------------------------------
- $scope.switchMinimal = function()
- {
- $scope.minimal = !$scope.minimal;
- NVRDataModel.debug("MontageCtrl: switch minimal is " + $scope.minimal);
- // console.log("Hide Statusbar");
- ionic.Platform.fullScreen($scope.minimal, !$scope.minimal);
- //console.log ("minimal switch:Cancelling timer");
- $interval.cancel(intervalHandleMontage); //we will renew on reload
- $interval.cancel(intervalHandleMontageCycle);
- $interval.cancel(intervalHandleAlarmStatus);
- // We are reloading this view, so we don't want entry animations
+ $rootScope.alarmCount = "0";
$ionicHistory.nextViewOptions(
{
- disableAnimate: true,
disableBack: true
});
- $state.go("app.montage",
+ $state.go("app.events",
{
- minimal: $scope.minimal,
- isRefresh: true
+ "id": 0,
+ "playEvent": false
+ },
+ {
+ reload: true
});
return;
- };
+ }
+ };
- //---------------------------------------------------------------------
- // Show/Hide PTZ control in monitor view
- //---------------------------------------------------------------------
- $scope.togglePTZ = function()
+ //-------------------------------------------------------------
+ // 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()
+ {
+ //console.log ("Is background called from Montage and returned " +
+ //NVRDataModel.isBackground());
+ return NVRDataModel.isBackground();
+ };
+
+ //---------------------------------------------------------------------
+ // Triggered when you enter/exit full screen
+ //---------------------------------------------------------------------
+ $scope.switchMinimal = function()
+ {
+ $scope.minimal = !$scope.minimal;
+ NVRDataModel.debug("MontageCtrl: switch minimal is " + $scope.minimal);
+ // console.log("Hide Statusbar");
+ ionic.Platform.fullScreen($scope.minimal, !$scope.minimal);
+ //console.log ("minimal switch:Cancelling timer");
+ $interval.cancel(intervalHandleMontage); //we will renew on reload
+ $interval.cancel(intervalHandleMontageCycle);
+ $interval.cancel(intervalHandleAlarmStatus);
+ $interval.cancel(intervalHandleReloadPage);
+
+ var ld = NVRDataModel.getLogin();
+ ld.isFullScreen = $scope.minimal;
+ NVRDataModel.setLogin(ld);
+
+
+ // We are reloading this view, so we don't want entry animations
+ $ionicHistory.nextViewOptions(
{
- $scope.showPTZ = !$scope.showPTZ;
- };
+ disableAnimate: true,
+ disableBack: true
+ });
+ $state.go("app.montage",
+ {
+ minimal: $scope.minimal,
+ isRefresh: true
+ });
+ return;
+ };
+
+ //---------------------------------------------------------------------
+ // Show/Hide PTZ control in monitor view
+ //---------------------------------------------------------------------
+ $scope.togglePTZ = function()
+ {
+ $scope.showPTZ = !$scope.showPTZ;
+ };
- function getIndex (mid)
+ function getIndex (mid)
+ {
+ var ndx = 0;
+ for (var i=0; i< $scope.MontageMonitors.length; i++)
{
- var ndx = 0;
- for (var i=0; i< $scope.MontageMonitors.length; i++)
+ if ($scope.MontageMonitors[i].Monitor.Id == mid)
{
- if ($scope.MontageMonitors[i].Monitor.Id == mid)
- {
- ndx = i;
- break;
- }
+ ndx = i;
+ break;
}
- return ndx;
-
}
+ return ndx;
- $scope.toggleStamp = function ()
+ }
+
+ $scope.toggleStamp = function ()
+ {
+ if (!$scope.isDragabillyOn) return;
+ var found = false;
+
+
+ for (var i=0; i< $scope.MontageMonitors.length; i++)
{
- if (!$scope.isDragabillyOn) return;
- var found = false;
-
+ if ($scope.MontageMonitors[i].Monitor.selectStyle == 'dragborder-selected')
+ {
+
+ findPackeryElement(i);
+ }
+ }
- for (var i=0; i< $scope.MontageMonitors.length; i++)
+ function findPackeryElement(i)
+ {
+ pckry.getItemElements().forEach(function(elem)
{
- if ($scope.MontageMonitors[i].Monitor.selectStyle == 'dragborder-selected')
+
+ var id = elem.getAttribute("data-item-id");
+ if (id == $scope.MontageMonitors[i].Monitor.Id)
{
-
- findPackeryElement(i);
+ if ($scope.MontageMonitors[i].Monitor.isStamp)
+ pckry.unstamp(elem);
+ else
+ pckry.stamp(elem);
+
+ $scope.MontageMonitors[i].Monitor.isStamp = !$scope.MontageMonitors[i].Monitor.isStamp;
+ NVRDataModel.debug ("Stamp for "+$scope.MontageMonitors[i].Monitor.Name + " is:"+$scope.MontageMonitors[i].Monitor.isStamp );
+ //break;
+
}
- }
+ });
+ }
+
+
+ };
- function findPackeryElement(i)
+ $scope.hideMonitor = function (mid)
+ {
+ if (!$scope.isDragabillyOn) return;
+ var found = false;
+ for (var i=0; i< $scope.MontageMonitors.length; i++)
+ {
+ if ($scope.MontageMonitors[i].Monitor.selectStyle == 'dragborder-selected')
{
- pckry.getItemElements().forEach(function(elem)
- {
+ $scope.MontageMonitors[i].Monitor.listDisplay = 'noshow';
+ $scope.MontageMonitors[i].Monitor.selectStyle = "";
+ found = true;
+ }
- var id = elem.getAttribute("data-item-id");
- if (id == $scope.MontageMonitors[i].Monitor.Id)
- {
- if ($scope.MontageMonitors[i].Monitor.isStamp)
- pckry.unstamp(elem);
- else
- pckry.stamp(elem);
+ }
+ if (found)
+ {
+ pckry.once ('layoutComplete', saveUpdatedLayout);
+ $timeout (function() {pckry.shiftLayout();},300);
+ }
+
+ function saveUpdatedLayout()
+ {
+ $timeout(function()
+ {
+ var positions = pckry.getShiftPositions('data-item-id');
+ console.log("SAVING");
+ var ld = NVRDataModel.getLogin();
- $scope.MontageMonitors[i].Monitor.isStamp = !$scope.MontageMonitors[i].Monitor.isStamp;
- NVRDataModel.debug ("Stamp for "+$scope.MontageMonitors[i].Monitor.Name + " is:"+$scope.MontageMonitors[i].Monitor.isStamp );
- //break;
+ ld.packeryPositions = JSON.stringify(positions);
+ //console.log ("Saving " + ld.packeryPositions);
+ ld.currentMontageProfile = "";
+ $scope.currentProfileName = $translate.instant ('kMontage');
+ NVRDataModel.setLogin(ld);
+ $ionicLoading.hide();
+ //$scope.sliderChanging = false;
+ }, 20);
+ }
+
+ };
- }
- });
- }
+ $scope.toggleSelectItem = function(mid)
+ {
+ var ndx = getIndex(mid);
+ //console.log ("TOGGLE DETECTED AT INDEX:"+ndx+" NAME="+$scope.MontageMonitors[ndx].Monitor.Name);
+ 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()
+ {
+ dragToggle();
+
+ };
+
+ function dragToggle()
+ {
+ var i;
+ $scope.isDragabillyOn = !$scope.isDragabillyOn;
- $scope.hideMonitor = function (mid)
+ for ( i = 0; i < $scope.MontageMonitors.length; i++)
+ {
+ $scope.MontageMonitors[i].Monitor.isStamp = false;
+ }
+
+ $ionicSideMenuDelegate.canDragContent($scope.isDragabillyOn ? false : true);
+
+ //$timeout(function(){pckry.reloadItems();},10);
+ NVRDataModel.debug("setting dragabilly to " + $scope.isDragabillyOn);
+ if ($scope.isDragabillyOn)
{
- if (!$scope.isDragabillyOn) return;
- var found = false;
- for (var i=0; i< $scope.MontageMonitors.length; i++)
+ $scope.toggleSubMenu = true;
+
+ $scope.dragBorder = "dragborder";
+ NVRDataModel.debug("Enabling drag for " + draggies.length + " items");
+ for (i = 0; i < draggies.length; i++)
{
- if ($scope.MontageMonitors[i].Monitor.selectStyle == 'dragborder-selected')
- {
- $scope.MontageMonitors[i].Monitor.listDisplay = 'noshow';
- $scope.MontageMonitors[i].Monitor.selectStyle = "";
- found = true;
- }
+ draggies[i].enable();
+ draggies[i].bindHandles();
+ }
+ // reflow and reload as some may be hidden
+ // $timeout(function(){pckry.reloadItems();$timeout(function(){pckry.layout();},300);},100);
+ }
+ else
+ {
+ $scope.dragBorder = "";
+ NVRDataModel.debug("Disabling drag for " + draggies.length + " items");
+ for (i = 0; i < draggies.length; i++)
+ {
+ draggies[i].disable();
+ draggies[i].unbindHandles();
}
- if (found)
+ for (i = 0; i < $scope.MontageMonitors.length; i++)
{
- pckry.once ('layoutComplete', saveUpdatedLayout);
- $timeout (function() {pckry.shiftLayout();},300);
+ $scope.MontageMonitors[i].Monitor.selectStyle = "";
}
-
- function saveUpdatedLayout()
+ // reflow and reload as some may be hidden
+ $timeout(function()
{
$timeout(function()
{
var positions = pckry.getShiftPositions('data-item-id');
- console.log("SAVING");
+ //console.log ("POSITIONS MAP " + JSON.stringify(positions));
var ld = NVRDataModel.getLogin();
-
ld.packeryPositions = JSON.stringify(positions);
//console.log ("Saving " + ld.packeryPositions);
ld.currentMontageProfile = "";
- $scope.currentProfileName = $translate.instant ('kMontage');
+ $scope.currentProfileName =$translate.instant ('kMontage');
NVRDataModel.setLogin(ld);
- $ionicLoading.hide();
- //$scope.sliderChanging = false;
- }, 20);
- }
-
- };
-
- $scope.toggleSelectItem = function(mid)
- {
- var ndx = getIndex(mid);
- //console.log ("TOGGLE DETECTED AT INDEX:"+ndx+" NAME="+$scope.MontageMonitors[ndx].Monitor.Name);
- 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()
- {
- dragToggle();
+ }, 300);
+ }, 100);
- };
+ }
+ }
- function dragToggle()
- {
- var i;
- $scope.isDragabillyOn = !$scope.isDragabillyOn;
+ //---------------------------------------------------------------------
+ // main monitor modal open - if drag is not on, this is called on touch
+ //---------------------------------------------------------------------
- for ( i = 0; i < $scope.MontageMonitors.length; i++)
- {
- $scope.MontageMonitors[i].Monitor.isStamp = false;
- }
+ $scope.openModal = function(mid, controllable, controlid, connKey, monitor)
+ {
+ openModal(mid, controllable, controlid, connKey, monitor);
+ };
- $ionicSideMenuDelegate.canDragContent($scope.isDragabillyOn ? false : true);
+ function openModal(mid, controllable, controlid, connKey, monitor)
+ {
+ NVRDataModel.debug("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
+ // in montage view
+
+ NVRDataModel.log("Cancelling montage timer, opening Modal");
+ // NVRDataModel.log("Starting Modal timer");
+ //console.log ("openModal:Cancelling timer");
+ $interval.cancel(intervalHandleMontage);
+ $interval.cancel(intervalHandleMontageCycle);
+ $interval.cancel(intervalHandleAlarmStatus);
+ $interval.cancel(intervalHandleReloadPage);
+
+
+ $scope.monitor = monitor;
+ $scope.showPTZ = false;
+ $scope.monitorId = mid;
+ $scope.monitorName = NVRDataModel.getMonitorName(mid);
+ $scope.controlid = controlid;
+
+ //$scope.LoginData = NVRDataModel.getLogin();
+ $rootScope.modalRand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
+
+ $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.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
+ NVRDataModel.setAwake(NVRDataModel.getKeepAwake());
+
+ // This is a modal to show the monitor footage
+ $ionicModal.fromTemplateUrl('templates/monitors-modal.html',
+ {
+ scope: $scope,
+ animation: 'slide-in-up',
+ id: 'monitorsmodal'
- //$timeout(function(){pckry.reloadItems();},10);
- NVRDataModel.debug("setting dragabilly to " + $scope.isDragabillyOn);
- if ($scope.isDragabillyOn)
+ })
+ .then(function(modal)
{
- $scope.toggleSubMenu = true;
+ $scope.modal = modal;
- $scope.dragBorder = "dragborder";
- NVRDataModel.debug("Enabling drag for " + draggies.length + " items");
- for (i = 0; i < draggies.length; i++)
+ $ionicLoading.show(
{
- draggies[i].enable();
- draggies[i].bindHandles();
- }
+ template: $translate.instant('kPleaseWait'),
+ noBackdrop: true,
+ duration: zm.loadingTimeout
+ });
- // reflow and reload as some may be hidden
- // $timeout(function(){pckry.reloadItems();$timeout(function(){pckry.layout();},300);},100);
- }
- else
- {
- $scope.dragBorder = "";
- NVRDataModel.debug("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 = "";
- }
- // 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 = NVRDataModel.getLogin();
- ld.packeryPositions = JSON.stringify(positions);
- //console.log ("Saving " + ld.packeryPositions);
- ld.currentMontageProfile = "";
- $scope.currentProfileName =$translate.instant ('kMontage');
- NVRDataModel.setLogin(ld);
- }, 300);
- }, 100);
+ // we don't really need this as we have stopped the timer
+ // $scope.isModalActive = true;
- }
- }
+ //$timeout (function() {pckry.shiftLayout();},zm.packeryTimer);
+ $scope.modal.show();
- //---------------------------------------------------------------------
- // 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);
- };
+ }
+
+ //---------------------------------------------------------------------
+ //
+ //---------------------------------------------------------------------
- function openModal(mid, controllable, controlid, connKey, monitor)
+ function cleanupOnClose()
+ {
+ $scope.modal.remove();
+ $timeout(function()
{
- NVRDataModel.debug("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
- // in montage view
+ NVRDataModel.log("MontageCtrl:Stopping network pull...");
+ if (NVRDataModel.isForceNetworkStop()) NVRDataModel.stopNetwork();
+ }, 50);
- NVRDataModel.log("Cancelling montage timer, opening Modal");
- // NVRDataModel.log("Starting Modal timer");
- //console.log ("openModal:Cancelling timer");
- $interval.cancel(intervalHandleMontage);
- $interval.cancel(intervalHandleMontageCycle);
- $interval.cancel(intervalHandleAlarmStatus);
+ $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
+ $scope.isModalActive = false;
- $scope.monitor = monitor;
- $scope.showPTZ = false;
- $scope.monitorId = mid;
- $scope.monitorName = NVRDataModel.getMonitorName(mid);
- $scope.controlid = controlid;
+ NVRDataModel.log("Restarting montage timer, closing Modal...");
+ var ld = NVRDataModel.getLogin();
+ // console.log ("closeModal: Cancelling timer");
+ $interval.cancel(intervalHandleMontage);
+ $interval.cancel(intervalHandleAlarmStatus);
+ $interval.cancel(intervalHandleMontageCycle);
+ $interval.cancel(intervalHandleReloadPage);
- //$scope.LoginData = NVRDataModel.getLogin();
- $rootScope.modalRand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
+
- $scope.ptzMoveCommand = "";
- $scope.ptzStopCommand = "";
+ intervalHandleMontage = $interval(function()
+ {
+ loadNotifications();
+ // console.log ("Refreshing Image...");
+ }.bind(this), refreshSec * 1000);
- $scope.zoomInCommand = "";
- $scope.zoomOutCommand = "";
- $scope.zoomStopCommand = "zoomStop";
- $scope.canZoom = false;
+ intervalHandleAlarmStatus = $interval(function()
+ {
+ loadAlarmStatus();
+ // console.log ("Refreshing Image...");
+ }.bind(this), 5000);
- $scope.presetOn = false;
+ intervalHandleMontageCycle = $interval(function()
+ {
+ cycleMontageProfiles();
+ // console.log ("Refreshing Image...");
+ }.bind(this), 5000);
- $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- $scope.isControllable = controllable;
- $scope.refMonitor = monitor;
+ intervalHandleReloadPage = $interval(function()
+ {
+ forceReloadPage();
+ }.bind(this), reloadPage * 1000);
+
- // 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
- NVRDataModel.setAwake(NVRDataModel.getKeepAwake());
+ // $timeout (function() {pckry.shiftLayout();},zm.packeryTimer);
- // This is a modal to show the monitor footage
- $ionicModal.fromTemplateUrl('templates/monitors-modal.html',
- {
- scope: $scope,
- animation: 'slide-in-up',
- id: 'monitorsmodal'
+ }
- })
- .then(function(modal)
- {
- $scope.modal = modal;
+ $scope.closeModal = function()
+ {
+ NVRDataModel.debug("MontageCtrl: Close & Destroy Monitor Modal");
+ cleanupOnClose();
+ // $scope.isModalActive = false;
+ // Note: no need to setAwake(false) as needs to be awake
+ // in montage view
+
+ };
+
+ //---------------------------------------------------------------------
+ // In Android, the app runs full steam while in background mode
+ // while in iOS it gets suspended unless you ask for specific resources
+ // So while this view, we DON'T want Android to keep sending 1 second
+ // refreshes to the server for images we are not seeing
+ //---------------------------------------------------------------------
+
+ function onPause()
+ {
+ NVRDataModel.debug("MontageCtrl: onpause called");
+ $interval.cancel(intervalHandleMontage);
+ $interval.cancel(intervalHandleMontageCycle);
+ $interval.cancel(intervalHandleAlarmStatus);
+ $interval.cancel(intervalHandleReloadPage);
- $ionicLoading.show(
- {
- template: $translate.instant('kPleaseWait'),
- noBackdrop: true,
- duration: zm.loadingTimeout
- });
+ // $interval.cancel(modalIntervalHandle);
+ // FIXME: Do I need to setAwake(false) here?
+ }
- // we don't really need this as we have stopped the timer
- // $scope.isModalActive = true;
+ function onResume()
+ {
- //$timeout (function() {pckry.shiftLayout();},zm.packeryTimer);
- $scope.modal.show();
+ }
- });
+ $scope.openMenu = function()
+ {
+ $timeout(function()
+ {
+ $rootScope.stateofSlide = $ionicSideMenuDelegate.isOpen();
+ }, 500);
- }
+ $ionicSideMenuDelegate.toggleLeft();
+ };
- //---------------------------------------------------------------------
- //
- //---------------------------------------------------------------------
+ $scope.$on('$destroy', function() {
- function cleanupOnClose()
- {
- $scope.modal.remove();
- $timeout(function()
- {
- NVRDataModel.log("MontageCtrl:Stopping network pull...");
- if (NVRDataModel.isForceNetworkStop()) NVRDataModel.stopNetwork();
- }, 50);
-
- $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
- $scope.isModalActive = false;
+ });
- NVRDataModel.log("Restarting montage timer, closing Modal...");
- var ld = NVRDataModel.getLogin();
- // console.log ("closeModal: Cancelling timer");
- $interval.cancel(intervalHandleMontage);
- $interval.cancel(intervalHandleAlarmStatus);
- $interval.cancel(intervalHandleMontageCycle);
+ $scope.$on('$ionicView.loaded', function()
+ {
+ // console.log("**VIEW ** Montage Ctrl Loaded");
+ });
- intervalHandleMontage = $interval(function()
- {
- loadNotifications();
- // console.log ("Refreshing Image...");
- }.bind(this), refreshSec * 1000);
+ $scope.$on('$ionicView.leave', function()
+ {
+ // console.log("**VIEW ** Montage Ctrl Left, force removing modal");
+ if ($scope.modal) $scope.modal.remove();
+ });
- intervalHandleAlarmStatus = $interval(function()
- {
- loadAlarmStatus();
- // console.log ("Refreshing Image...");
- }.bind(this), 5000);
+ function orientationChanged()
+ {
+
+ }
- intervalHandleMontageCycle = $interval(function()
- {
- cycleMontageProfiles();
- // console.log ("Refreshing Image...");
- }.bind(this), 5000);
+ // remove a saved montage profile
+ $scope.deleteMontageProfile = function()
+ {
+ var posArray;
- // $timeout (function() {pckry.shiftLayout();},zm.packeryTimer);
+ try
+ {
+ posArray = NVRDataModel.getLogin().packeryPositionsArray;
+ //console.log ("PA="+JSON.stringify(posArray));
}
-
- $scope.closeModal = function()
+ catch (e)
{
- NVRDataModel.debug("MontageCtrl: Close & Destroy Monitor Modal");
- cleanupOnClose();
- // $scope.isModalActive = false;
- // Note: no need to setAwake(false) as needs to be awake
- // in montage view
+ NVRDataModel.debug("error parsing packery array positions");
+ posArray = {};
+ }
- };
+ //console.log ("posArray="+JSON.stringify(posArray));
- //---------------------------------------------------------------------
- // In Android, the app runs full steam while in background mode
- // while in iOS it gets suspended unless you ask for specific resources
- // So while this view, we DON'T want Android to keep sending 1 second
- // refreshes to the server for images we are not seeing
- //---------------------------------------------------------------------
-
- function onPause()
- {
- NVRDataModel.debug("MontageCtrl: onpause called");
- $interval.cancel(intervalHandleMontage);
- $interval.cancel(intervalHandleMontageCycle);
- $interval.cancel(intervalHandleAlarmStatus);
- // $interval.cancel(modalIntervalHandle);
- // FIXME: Do I need to setAwake(false) here?
+ $scope.listdata = [];
+ for (var key in posArray)
+ {
+ if (posArray.hasOwnProperty(key))
+ {
+ $scope.listdata.push(key);
+ }
}
- function onResume()
+ if (!$scope.listdata.length)
{
+ $rootScope.zmPopup = $ionicPopup.alert(
+ {
+ title: $translate.instant('kError'),
+ template: $translate.instant('kMontageNoSavedProfiles'),
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+ });
+ return;
}
- $scope.openMenu = function()
+ $scope.data = {
+ 'selectedVal': ''
+ };
+
+ $rootScope.zmPopup = SecuredPopups.show('confirm',
{
- $timeout(function()
+ template: '<ion-list> ' +
+ ' <ion-radio-fix ng-repeat="item in listdata" ng-value="item" ng-model="data.selectedVal"> ' +
+ ' {{item}} ' +
+ ' </ion-item> ' +
+ '</ion-list> ',
+
+ title: $translate.instant('kSelect'),
+ subTitle:$translate.instant('kSelectDelete'),
+ scope: $scope,
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+
+ }).then(function(res)
+ {
+ NVRDataModel.debug("Deleting profile: " + $scope.data.selectedVal);
+ delete posArray[$scope.data.selectedVal];
+ var ld = NVRDataModel.getLogin();
+ ld.packeryPositionsArray = posArray;
+
+ if (ld.currentMontageProfile == $scope.data.selectedVal)
{
- $rootScope.stateofSlide = $ionicSideMenuDelegate.isOpen();
- }, 500);
+ ld.currentMontageProfile = "";
+ $scope.currentProfileName = $translate.instant ('kMontage');
- $ionicSideMenuDelegate.toggleLeft();
- };
+ }
+
+ if ($scope.currentMontageProfile == $scope.data.selectedVal)
+ $scope.currentProfileName = $translate.instant('kMontage');
- $scope.$on('$destroy', function() {
+ NVRDataModel.setLogin(ld);
});
- $scope.$on('$ionicView.loaded', function()
+ };
+
+
+ function switchMontageProfile (mName)
+ {
+ $interval.cancel(intervalHandleMontageCycle);
+ intervalHandleMontageCycle = $interval(function()
{
- // console.log("**VIEW ** Montage Ctrl Loaded");
+ cycleMontageProfiles();
+ // console.log ("Refreshing Image...");
+ }.bind(this), NVRDataModel.getLogin().cycleMontageInterval* 1000);
+
+
+ //console.log ("SELECTED " + $scope.data.selectedVal);
+ var ld = NVRDataModel.getLogin();
+ //console.log ("OLD POS="+ld.packeryPositions);
+ ld.packeryPositions = ld.packeryPositionsArray[mName];
+ ld.currentMontageProfile = mName;
+ $scope.currentProfileName =mName;
+ //console.log ("NEW POS="+ld.packeryPositions);
+ NVRDataModel.setLogin(ld);
+ //console.log ("SAVING "+ld.packeryPositions.name+ " but "+$scope.data.selectedVal);
+
+ //$scope.MontageMonitors = angular.copy(NVRDataModel.getMonitorsNow());
+
+
+ draggies.forEach(function(drag)
+ {
+ drag.destroy();
});
+ draggies = [];
+ pckry.destroy();
+ NVRDataModel.reloadMonitorDisplayStatus();
+ $scope.MontageMonitors = NVRDataModel.getMonitorsNow();
+ $timeout (function() {initPackery();},zm.packeryTimer);
+
+
+
+ }
+ // switch to another montage profile
+ $scope.switchMontageProfile = function()
+ {
+ var posArray;
- $scope.$on('$ionicView.leave', function()
+ try
{
- // console.log("**VIEW ** Montage Ctrl Left, force removing modal");
- if ($scope.modal) $scope.modal.remove();
- });
+ posArray = NVRDataModel.getLogin().packeryPositionsArray;
+ //console.log ("PA="+JSON.stringify(posArray));
- function orientationChanged()
+ }
+ catch (e)
{
-
+ NVRDataModel.debug("error parsing packery array positions");
+ posArray = {};
}
+ //console.log ("posArray="+JSON.stringify(posArray));
- // remove a saved montage profile
- $scope.deleteMontageProfile = function()
+ $scope.listdata = [];
+ for (var key in posArray)
{
- var posArray;
-
- try
- {
- posArray = NVRDataModel.getLogin().packeryPositionsArray;
- //console.log ("PA="+JSON.stringify(posArray));
-
- }
- catch (e)
- {
- NVRDataModel.debug("error parsing packery array positions");
- posArray = {};
- }
-
- //console.log ("posArray="+JSON.stringify(posArray));
-
- $scope.listdata = [];
- for (var key in posArray)
- {
- if (posArray.hasOwnProperty(key))
- {
- $scope.listdata.push(key);
- }
- }
-
- if (!$scope.listdata.length)
+ if (posArray.hasOwnProperty(key))
{
-
- $rootScope.zmPopup = $ionicPopup.alert(
- {
- title: $translate.instant('kError'),
- template: $translate.instant('kMontageNoSavedProfiles'),
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- });
- return;
+ $scope.listdata.push(key);
}
+ }
+ if ($scope.listdata.indexOf($translate.instant('kMontageDefaultProfile')) == -1)
+ $scope.listdata.push($translate.instant('kMontageDefaultProfile'));
- $scope.data = {
- 'selectedVal': ''
- };
-
- $rootScope.zmPopup = SecuredPopups.show('confirm',
- {
- template: '<ion-list> ' +
- ' <ion-radio-fix ng-repeat="item in listdata" ng-value="item" ng-model="data.selectedVal"> ' +
- ' {{item}} ' +
- ' </ion-item> ' +
- '</ion-list> ',
-
- title: $translate.instant('kSelect'),
- subTitle:$translate.instant('kSelectDelete'),
- scope: $scope,
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
+ if (!$scope.listdata.length)
+ {
- }).then(function(res)
+ $rootScope.zmPopup = $ionicPopup.alert(
{
- NVRDataModel.debug("Deleting profile: " + $scope.data.selectedVal);
- delete posArray[$scope.data.selectedVal];
- var ld = NVRDataModel.getLogin();
- ld.packeryPositionsArray = posArray;
-
- if (ld.currentMontageProfile == $scope.data.selectedVal)
- {
- ld.currentMontageProfile = "";
- $scope.currentProfileName = $translate.instant ('kMontage');
-
- }
-
- if ($scope.currentMontageProfile == $scope.data.selectedVal)
- $scope.currentProfileName = $translate.instant('kMontage');
-
- NVRDataModel.setLogin(ld);
+ title: $translate.instant('kError'),
+ template: $translate.instant('kMontageNoSavedProfiles'),
});
+ return;
+ }
+ $scope.data = {
+ 'selectedVal': ''
};
-
- function switchMontageProfile (mName)
+ $rootScope.zmPopup = SecuredPopups.show('confirm',
{
- $interval.cancel(intervalHandleMontageCycle);
- intervalHandleMontageCycle = $interval(function()
- {
- cycleMontageProfiles();
- // console.log ("Refreshing Image...");
- }.bind(this), NVRDataModel.getLogin().cycleMontageInterval* 1000);
-
-
- //console.log ("SELECTED " + $scope.data.selectedVal);
- var ld = NVRDataModel.getLogin();
- //console.log ("OLD POS="+ld.packeryPositions);
- ld.packeryPositions = ld.packeryPositionsArray[mName];
- ld.currentMontageProfile = mName;
- $scope.currentProfileName =mName;
- //console.log ("NEW POS="+ld.packeryPositions);
- NVRDataModel.setLogin(ld);
- //console.log ("SAVING "+ld.packeryPositions.name+ " but "+$scope.data.selectedVal);
-
- //$scope.MontageMonitors = angular.copy(NVRDataModel.getMonitorsNow());
-
-
- draggies.forEach(function(drag)
- {
- drag.destroy();
- });
- draggies = [];
- pckry.destroy();
- NVRDataModel.reloadMonitorDisplayStatus();
- $scope.MontageMonitors = NVRDataModel.getMonitorsNow();
- $timeout (function() {initPackery();},zm.packeryTimer);
-
-
+ template: '<ion-list> ' +
+ ' <ion-radio-fix ng-repeat="item in listdata" ng-value="item" ng-model="data.selectedVal"> ' +
+ ' {{item}} ' +
+ ' </ion-item> ' +
+ '</ion-list> ',
+
+ title: $translate.instant('kSelect'),
+ subTitle:$translate.instant('kSelectSwitch'),
+ scope: $scope,
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+
- }
- // switch to another montage profile
- $scope.switchMontageProfile = function()
+ }).then(function(res)
{
- var posArray;
-
- try
+ if (res)
{
- posArray = NVRDataModel.getLogin().packeryPositionsArray;
- //console.log ("PA="+JSON.stringify(posArray));
-
- }
- catch (e)
- {
- NVRDataModel.debug("error parsing packery array positions");
- posArray = {};
- }
-
- //console.log ("posArray="+JSON.stringify(posArray));
-
- $scope.listdata = [];
- for (var key in posArray)
- {
- if (posArray.hasOwnProperty(key))
- {
- $scope.listdata.push(key);
- }
- }
- if ($scope.listdata.indexOf($translate.instant('kMontageDefaultProfile')) == -1)
- $scope.listdata.push($translate.instant('kMontageDefaultProfile'));
-
- if (!$scope.listdata.length)
- {
-
- $rootScope.zmPopup = $ionicPopup.alert(
- {
- title: $translate.instant('kError'),
- template: $translate.instant('kMontageNoSavedProfiles'),
+ // destroy cycle timer and redo it
+ //
+ switchMontageProfile($scope.data.selectedVal);
- });
- return;
+
+ //pckry.reloadItems();
}
- $scope.data = {
- 'selectedVal': ''
- };
+ });
- $rootScope.zmPopup = SecuredPopups.show('confirm',
- {
- template: '<ion-list> ' +
- ' <ion-radio-fix ng-repeat="item in listdata" ng-value="item" ng-model="data.selectedVal"> ' +
- ' {{item}} ' +
- ' </ion-item> ' +
- '</ion-list> ',
-
- title: $translate.instant('kSelect'),
- subTitle:$translate.instant('kSelectSwitch'),
- scope: $scope,
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
-
+ };
- }).then(function(res)
- {
- if (res)
- {
- // destroy cycle timer and redo it
- //
- switchMontageProfile($scope.data.selectedVal);
+ // save current configuration into a profile
+ $scope.saveMontageProfile = function()
+ {
-
- //pckry.reloadItems();
- }
+ var posArray;
- });
+ try
+ {
+ posArray = NVRDataModel.getLogin().packeryPositionsArray;
+ //console.log ("PA="+JSON.stringify(posArray));
+ }
+ catch (e)
+ {
+ NVRDataModel.debug("error parsing packery array positions");
+ posArray = {};
+ }
+ $scope.data = {
+ montageName: ""
};
- // save current configuration into a profile
- $scope.saveMontageProfile = function()
+ $scope.listdata = [];
+ for (var key in posArray)
{
-
- var posArray;
-
- try
+ if (posArray.hasOwnProperty(key))
{
- posArray = NVRDataModel.getLogin().packeryPositionsArray;
- //console.log ("PA="+JSON.stringify(posArray));
-
+ $scope.listdata.push(key);
}
- catch (e)
- {
- NVRDataModel.debug("error parsing packery array positions");
- posArray = {};
- }
- $scope.data = {
- montageName: ""
- };
-
- $scope.listdata = [];
- for (var key in posArray)
- {
- if (posArray.hasOwnProperty(key))
- {
- $scope.listdata.push(key);
- }
- }
- if ($scope.listdata.indexOf($translate.instant('kMontageDefaultProfile')) == -1)
- $scope.listdata.push($translate.instant('kMontageDefaultProfile'));
-
+ }
+ if ($scope.listdata.indexOf($translate.instant('kMontageDefaultProfile')) == -1)
+ $scope.listdata.push($translate.instant('kMontageDefaultProfile'));
- var templ = "<input autocapitalize='none' autocomplete='off' autocorrect='off' type='text' ng-model='data.montageName'>";
- if ($scope.listdata.length)
- templ += '<br/><div class="item item-divider">'+$translate.instant('kMontageSavedProfiles')+'</div>'+
- '<ion-list> ' +
- ' <ion-radio-fix ng-repeat="item in listdata" ng-value="item" ng-model="data.montageName"> ' +
- ' {{item}} ' +
- ' </ion-item> ' +
- '</ion-list> ';
+ var templ = "<input autocapitalize='none' autocomplete='off' autocorrect='off' type='text' ng-model='data.montageName'>";
+ if ($scope.listdata.length)
+ templ += '<br/><div class="item item-divider">'+$translate.instant('kMontageSavedProfiles')+'</div>'+
+ '<ion-list> ' +
+ ' <ion-radio-fix ng-repeat="item in listdata" ng-value="item" ng-model="data.montageName"> ' +
+ ' {{item}} ' +
+ ' </ion-item> ' +
+ '</ion-list> ';
- $rootScope.zmPopup = SecuredPopups.show('confirm',
- {
- title: $translate.instant('kMontageSave'),
- template: templ,
- subTitle: $translate.instant('kMontageSaveSubtitle'),
- scope: $scope,
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- }).then(function(res)
+ $rootScope.zmPopup = SecuredPopups.show('confirm',
+ {
+ title: $translate.instant('kMontageSave'),
+ template: templ,
+ subTitle: $translate.instant('kMontageSaveSubtitle'),
+ scope: $scope,
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+
+ }).then(function(res)
+ {
+ console.log(res);
+ if (res) // ok
{
- console.log(res);
- if (res) // ok
- {
- var ld = NVRDataModel.getLogin();
+ var ld = NVRDataModel.getLogin();
- if ($scope.data.montageName != '')
+ if ($scope.data.montageName != '')
+ {
+ // lets allow them to save default
+ //if ($scope.data.montageName != $translate.instant('kMontageDefaultProfile'))
+ if (1)
{
- // lets allow them to save default
- //if ($scope.data.montageName != $translate.instant('kMontageDefaultProfile'))
- if (1)
- {
- var getMonPos = pckry.getShiftPositions('data-item-id');
- var unHidden = false;
+ var getMonPos = pckry.getShiftPositions('data-item-id');
+ var unHidden = false;
- // if you are saving to default all monitor profile
- // then I will undo any hidden monitors
- if ($scope.data.montageName == $translate.instant('kMontageDefaultProfile'))
+ // if you are saving to default all monitor profile
+ // then I will undo any hidden monitors
+ if ($scope.data.montageName == $translate.instant('kMontageDefaultProfile'))
+ {
+ for ( var p=0; p < getMonPos.length; p++)
{
- for ( var p=0; p < getMonPos.length; p++)
+ //console.log ("CHECK");
+ if (getMonPos[p].display != 'show')
{
- //console.log ("CHECK");
- if (getMonPos[p].display != 'show')
- {
- getMonPos[p].display = 'show';
- unHidden = true;
- }
+ getMonPos[p].display = 'show';
+ unHidden = true;
}
}
+ }
- var pos = JSON.stringify(getMonPos);
+ var pos = JSON.stringify(getMonPos);
- //console.log ("SAVING POS = "+pos);
+ //console.log ("SAVING POS = "+pos);
- ld.packeryPositionsArray[$scope.data.montageName] = pos;
- NVRDataModel.debug("Saving " + $scope.data.montageName + " with:" + pos);
- ld.currentMontageProfile =$scope.data.montageName ;
- NVRDataModel.setLogin(ld);
- $scope.currentProfileName = $scope.data.montageName;
+ ld.packeryPositionsArray[$scope.data.montageName] = pos;
+ NVRDataModel.debug("Saving " + $scope.data.montageName + " with:" + pos);
+ ld.currentMontageProfile =$scope.data.montageName ;
+ NVRDataModel.setLogin(ld);
+ $scope.currentProfileName = $scope.data.montageName;
- if (unHidden)
+ if (unHidden)
+ {
+ $rootScope.zmPopup = SecuredPopups.show('alert',
{
- $rootScope.zmPopup = SecuredPopups.show('alert',
- {
- title: $translate.instant('kNote'),
- template: $translate.instant('kMontageSaveDefaultWarning'),
- okText: $translate.instant('kButtonOk'),
-
- });
- switchMontageProfile($translate.instant('kMontageDefaultProfile'));
-
-
- }
-
+ title: $translate.instant('kNote'),
+ template: $translate.instant('kMontageSaveDefaultWarning'),
+ okText: $translate.instant('kButtonOk'),
+
+ });
+ switchMontageProfile($translate.instant('kMontageDefaultProfile'));
+
+
}
-
-
- }
+ }
+
+
}
- });
- };
+ }
+ });
- $scope.toggleSubMenuFunction = function()
- {
+ };
- $scope.toggleSubMenu = !$scope.toggleSubMenu;
+ $scope.toggleSubMenuFunction = function()
+ {
- NVRDataModel.debug("toggling size buttons:" + $scope.toggleSubMenu);
- if ($scope.toggleSubMenu) $ionicScrollDelegate.$getByHandle("montage-delegate").scrollTop();
- var ld = NVRDataModel.getLogin();
- ld.showMontageSubMenu = $scope.toggleSubMenu;
- NVRDataModel.setLogin(ld);
- };
+ $scope.toggleSubMenu = !$scope.toggleSubMenu;
- // 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;
+ NVRDataModel.debug("toggling size buttons:" + $scope.toggleSubMenu);
+ if ($scope.toggleSubMenu) $ionicScrollDelegate.$getByHandle("montage-delegate").scrollTop();
+ var ld = NVRDataModel.getLogin();
+ ld.showMontageSubMenu = $scope.toggleSubMenu;
+ NVRDataModel.setLogin(ld);
+ };
- });
+ // minimal has to be beforeEnter or header won't hide
+ $scope.$on('$ionicView.beforeEnter', function()
+ {
+ // $scope.minimal = $stateParams.minimal;
+ var ld = NVRDataModel.getLogin();
+ $scope.minimal = ld.isFullScreen;
+ //console.log ("**************** MINIMAL ENTER " + $scope.minimal);
+ $scope.zmMarginTop = $scope.minimal ? 0 : 15;
- //avoid bogus scale error
- $scope.LoginData = NVRDataModel.getLogin();
+ });
+
+ //avoid bogus scale error
+ $scope.LoginData = NVRDataModel.getLogin();
- $scope.toggleTimeType = function()
+ $scope.toggleTimeType = function()
+ {
+ if (NVRDataModel.isTzSupported())
{
- if (NVRDataModel.isTzSupported())
+ if ($scope.iconTimeNow == 'server')
{
- if ($scope.iconTimeNow == 'server')
- {
- $scope.iconTimeNow = 'local';
- $scope.timeNow = $translate.instant('kPleaseWait');
- }
- else
- {
- $scope.iconTimeNow = 'server';
- $scope.timeNow = $translate.instant('kPleaseWait');
- }
+ $scope.iconTimeNow = 'local';
+ $scope.timeNow = $translate.instant('kPleaseWait');
}
else
- NVRDataModel.debug("timezone API not supported, can't display");
- };
+ {
+ $scope.iconTimeNow = 'server';
+ $scope.timeNow = $translate.instant('kPleaseWait');
+ }
+ }
+ else
+ NVRDataModel.debug("timezone API not supported, can't display");
+ };
+
+ $scope.$on('$ionicView.afterEnter', function()
+ {
+ NVRDataModel.debug("Setting image mode to snapshot, will change to image when packery is all done");
+ $scope.areImagesLoading = true;
+ $scope.isDragabillyOn = false;
+ $scope.reOrderActive = false;
+
+ if (NVRDataModel.isTzSupported())
+ $scope.iconTimeNow = 'server';
+ else
+ $scope.iconTimeNow = 'local';
+
+ if ($scope.iconTimeNow == 'local')
+ $scope.timeNow = moment().format(NVRDataModel.getTimeFormatSec());
+ else
+ $scope.timeNow = moment().tz(NVRDataModel.getTimeZoneNow()).format(NVRDataModel.getTimeFormatSec());
+
+ $scope.gridScale = "grid-item-50";
+ $scope.LoginData = NVRDataModel.getLogin();
+ //FIXME
- $scope.$on('$ionicView.afterEnter', function()
+ if (NVRDataModel.getBandwidth() == 'lowbw')
{
- NVRDataModel.debug("Setting image mode to snapshot, will change to image when packery is all done");
- $scope.areImagesLoading = true;
- $scope.isDragabillyOn = false;
- $scope.reOrderActive = false;
+ NVRDataModel.debug("Enabling low bandwidth parameters");
+ $scope.LoginData.montageQuality = zm.montageQualityLowBW;
+ $scope.LoginData.singleImageQuality = zm.eventSingleImageQualityLowBW;
+ $scope.LoginData.montageHistoryQuality = zm.montageQualityLowBW;
- if (NVRDataModel.isTzSupported())
- $scope.iconTimeNow = 'server';
- else
- $scope.iconTimeNow = 'local';
+ }
- if ($scope.iconTimeNow == 'local')
- $scope.timeNow = moment().format(NVRDataModel.getTimeFormatSec());
- else
- $scope.timeNow = moment().tz(NVRDataModel.getTimeZoneNow()).format(NVRDataModel.getTimeFormatSec());
+ $scope.monLimit = $scope.LoginData.maxMontage;
+ $scope.toggleSubMenu = NVRDataModel.getLogin().showMontageSubMenu;
- $scope.gridScale = "grid-item-50";
- $scope.LoginData = NVRDataModel.getLogin();
- //FIXME
+ $scope.monitors = message;
+ $scope.MontageMonitors = angular.copy(message);
+ $scope.sliderChanging = false;
+ loginData = NVRDataModel.getLogin();
- if (NVRDataModel.getBandwidth() == 'lowbw')
- {
- NVRDataModel.debug("Enabling low bandwidth parameters");
- $scope.LoginData.montageQuality = zm.montageQualityLowBW;
- $scope.LoginData.singleImageQuality = zm.eventSingleImageQualityLowBW;
- $scope.LoginData.montageHistoryQuality = zm.montageQualityLowBW;
+ $scope.isRefresh = $stateParams.isRefresh;
+ sizeInProgress = false;
+ $scope.imageStyle = true;
+ intervalHandleMontage = "";
+ intervalHandleMontageCycle = "";
+ $scope.isModalActive = false;
+ $scope.isReorder = false;
- }
+ $ionicSideMenuDelegate.canDragContent($scope.minimal ? true : true);
- $scope.monLimit = $scope.LoginData.maxMontage;
- $scope.toggleSubMenu = NVRDataModel.getLogin().showMontageSubMenu;
+ $scope.areImagesLoading = true;
+ var ld = NVRDataModel.getLogin();
- $scope.monitors = message;
- $scope.MontageMonitors = angular.copy(message);
- $scope.sliderChanging = false;
- loginData = NVRDataModel.getLogin();
+ refreshSec = (NVRDataModel.getBandwidth() == 'lowbw') ? ld.refreshSecLowBW : ld.refreshSec;
- $scope.isRefresh = $stateParams.isRefresh;
- sizeInProgress = false;
- $scope.imageStyle = true;
- intervalHandleMontage = "";
- intervalHandleMontageCycle = "";
- $scope.isModalActive = false;
- $scope.isReorder = false;
+ NVRDataModel.debug("bandwidth: " + NVRDataModel.getBandwidth() + " montage refresh set to: " + refreshSec);
- $ionicSideMenuDelegate.canDragContent($scope.minimal ? true : true);
+ //console.log("Setting Awake to " + NVRDataModel.getKeepAwake());
+ NVRDataModel.setAwake(NVRDataModel.getKeepAwake());
- $scope.areImagesLoading = true;
- var ld = NVRDataModel.getLogin();
+ $interval.cancel(intervalHandleMontage);
+ $interval.cancel(intervalHandleMontageCycle);
+ $interval.cancel(intervalHandleAlarmStatus);
+ $interval.cancel(intervalHandleReloadPage);
- refreshSec = (NVRDataModel.getBandwidth() == 'lowbw') ? ld.refreshSecLowBW : ld.refreshSec;
- NVRDataModel.debug("bandwidth: " + NVRDataModel.getBandwidth() + " montage refresh set to: " + refreshSec);
+ intervalHandleMontage = $interval(function()
+ {
+ loadNotifications();
+ // console.log ("Refreshing Image...");
+ }.bind(this), refreshSec * 1000);
- //console.log("Setting Awake to " + NVRDataModel.getKeepAwake());
- NVRDataModel.setAwake(NVRDataModel.getKeepAwake());
+ NVRDataModel.debug ("Setting up cycle interval of:"+ NVRDataModel.getLogin().cycleMontageInterval* 1000);
+ intervalHandleMontageCycle = $interval(function()
+ {
+ cycleMontageProfiles();
+ // console.log ("Refreshing Image...");
+ }.bind(this), NVRDataModel.getLogin().cycleMontageInterval* 1000);
- $interval.cancel(intervalHandleMontage);
- $interval.cancel(intervalHandleMontageCycle);
- $interval.cancel(intervalHandleAlarmStatus);
+ intervalHandleAlarmStatus = $interval(function()
+ {
+ loadAlarmStatus();
+ // console.log ("Refreshing Image...");
+ }.bind(this), 5000);
- intervalHandleMontage = $interval(function()
- {
- loadNotifications();
- // console.log ("Refreshing Image...");
- }.bind(this), refreshSec * 1000);
+ intervalHandleReloadPage = $interval(function()
+ {
+ forceReloadPage();
+ }.bind(this), reloadPage * 1000);
- NVRDataModel.debug ("Setting up cycle interval of:"+ NVRDataModel.getLogin().cycleMontageInterval* 1000);
- intervalHandleMontageCycle = $interval(function()
- {
- cycleMontageProfiles();
- // console.log ("Refreshing Image...");
- }.bind(this), NVRDataModel.getLogin().cycleMontageInterval* 1000);
+ loadNotifications();
- intervalHandleAlarmStatus = $interval(function()
+ if ($scope.MontageMonitors.length == 0)
+ {
+ $rootScope.zmPopup = $ionicPopup.alert(
{
- loadAlarmStatus();
- // console.log ("Refreshing Image...");
- }.bind(this), 5000);
-
- loadNotifications();
-
- if ($scope.MontageMonitors.length == 0)
+ title: $translate.instant('kNoMonitors'),
+ template: $translate.instant('kCheckCredentials'),
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+ });
+ $ionicHistory.nextViewOptions(
{
- $rootScope.zmPopup = $ionicPopup.alert(
- {
- title: $translate.instant('kNoMonitors'),
- template: $translate.instant('kCheckCredentials'),
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- });
- $ionicHistory.nextViewOptions(
- {
- disableBack: true
- });
- $state.go("app.login",
- {
- "wizard": false
- });
- return;
- }
-
- ld = NVRDataModel.getLogin();
-
- $rootScope.authSession = "undefined";
- $ionicLoading.show(
+ disableBack: true
+ });
+ $state.go("app.login",
{
- template: $translate.instant('kNegotiatingStreamAuth'),
- animation: 'fade-in',
- showBackdrop: true,
- duration: zm.loadingTimeout,
- maxWidth: 300,
- showDelay: 0
+ "wizard": false
});
+ return;
+ }
- NVRDataModel.log("Inside Montage Ctrl:We found " + $scope.monitors.length + " monitors");
+ ld = NVRDataModel.getLogin();
- // 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);';
- $scope.MontageMonitors[i].Monitor.isStamp = false;
+ $rootScope.authSession = "undefined";
+ $ionicLoading.show(
+ {
+ template: $translate.instant('kNegotiatingStreamAuth'),
+ animation: 'fade-in',
+ showBackdrop: true,
+ duration: zm.loadingTimeout,
+ maxWidth: 300,
+ showDelay: 0
+ });
- }
+ NVRDataModel.log("Inside Montage Ctrl:We found " + $scope.monitors.length + " monitors");
- $rootScope.validMonitorId = $scope.monitors[0].Monitor.Id;
- NVRDataModel.getAuthKey($rootScope.validMonitorId, (Math.floor((Math.random() * 999999) + 1)).toString())
- .then(function(success)
- {
- $ionicLoading.hide();
- //console.log(success);
- $rootScope.authSession = success;
- NVRDataModel.log("Stream authentication construction: " +
- $rootScope.authSession);
- $timeout(function()
- {
- initPackery();
- }, zm.packeryTimer);
+ // 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);';
+ $scope.MontageMonitors[i].Monitor.isStamp = false;
+
+ }
- },
- function(error)
+ $rootScope.validMonitorId = $scope.monitors[0].Monitor.Id;
+ NVRDataModel.getAuthKey($rootScope.validMonitorId, (Math.floor((Math.random() * 999999) + 1)).toString())
+ .then(function(success)
+ {
+ $ionicLoading.hide();
+ //console.log(success);
+ $rootScope.authSession = success;
+ NVRDataModel.log("Stream authentication construction: " +
+ $rootScope.authSession);
+ $timeout(function()
{
+ initPackery();
+ }, zm.packeryTimer);
- $ionicLoading.hide();
- NVRDataModel.debug("MontageCtrl: Error in authkey retrieval " + error);
- //$rootScope.authSession="";
- NVRDataModel.log("MontageCtrl: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession);
- $timeout(function()
- {
- initPackery();
- }, zm.packeryTimer);
- });
+ },
+ function(error)
+ {
- //console.log("**VIEW ** Montage Ctrl AFTER ENTER");
- window.addEventListener("resize", orientationChanged, false);
+ $ionicLoading.hide();
+ NVRDataModel.debug("MontageCtrl: Error in authkey retrieval " + error);
+ //$rootScope.authSession="";
+ NVRDataModel.log("MontageCtrl: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession);
+ $timeout(function()
+ {
+ initPackery();
+ }, zm.packeryTimer);
+ });
- document.addEventListener("pause", onPause, false);
- document.addEventListener("resume", onResume, false);
+ //console.log("**VIEW ** Montage Ctrl AFTER ENTER");
+ window.addEventListener("resize", orientationChanged, false);
- });
+ 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");
- $interval.cancel(intervalHandleMontage);
- $interval.cancel(intervalHandleMontageCycle);
- $interval.cancel(intervalHandleAlarmStatus);
- pckry.destroy();
- window.removeEventListener("resize", orientationChanged, false);
+ $scope.$on('$ionicView.beforeLeave', function()
+ {
+ // console.log("**VIEW ** Montage Ctrl Left, force removing modal");
- // make sure this is applied in scope digest to stop network pull
- // thats why we are doing it beforeLeave
+ //console.log ("beforeLeave:Cancelling timer");
+ $interval.cancel(intervalHandleMontage);
+ $interval.cancel(intervalHandleMontageCycle);
+ $interval.cancel(intervalHandleAlarmStatus);
+ $interval.cancel(intervalHandleReloadPage);
+ pckry.destroy();
+ window.removeEventListener("resize", orientationChanged, false);
- if (NVRDataModel.isForceNetworkStop())
- {
- NVRDataModel.log("MontageCtrl:Stopping network pull...");
- NVRDataModel.stopNetwork();
+ // make sure this is applied in scope digest to stop network pull
+ // thats why we are doing it beforeLeave
- }
+ if (NVRDataModel.isForceNetworkStop())
+ {
+ NVRDataModel.log("MontageCtrl:Stopping network pull...");
+ NVRDataModel.stopNetwork();
- });
+ }
- $scope.$on('$ionicView.unloaded', function() {
+ });
- });
+ $scope.$on('$ionicView.unloaded', function() {
- $scope.resetSizes = function()
+ });
+
+ $scope.resetSizes = function()
+ {
+ var somethingReset = false;
+ for (var i = 0; i < $scope.MontageMonitors.length; i++)
{
- var somethingReset = false;
- for (var i = 0; i < $scope.MontageMonitors.length; i++)
+ if ($scope.isDragabillyOn)
{
- if ($scope.isDragabillyOn)
- {
- if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected")
- {
- $scope.MontageMonitors[i].Monitor.gridScale = "50";
- somethingReset = true;
- }
- }
- else
+ if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected")
{
$scope.MontageMonitors[i].Monitor.gridScale = "50";
- // somethingReset = true;
+ somethingReset = true;
}
}
- if (!somethingReset && $scope.isDragabillyOn) // nothing was selected
+ else
{
- for (i = 0; i < $scope.MontageMonitors.length; i++)
- {
- $scope.MontageMonitors[i].Monitor.gridScale = "50";
- }
+ $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";
}
+ }
- $timeout(function()
+ $timeout(function()
+ {
+ pckry.reloadItems();
+
+ pckry.once('layoutComplete', function()
{
- pckry.reloadItems();
+ //console.log ("Layout complete");
+ var positions = pckry.getShiftPositions('data-item-id');
+ //console.log ("POSITIONS MAP " + JSON.stringify(positions));
+ var ld = NVRDataModel.getLogin();
+
+ ld.packeryPositions = JSON.stringify(positions);
+ //console.log ("Saving " + ld.packeryPositions);
+ ld.currentMontageProfile = "";
+ $scope.currentProfileName = $translate.instant ('kMontage');
+ NVRDataModel.setLogin(ld);
- pckry.once('layoutComplete', function()
+ $timeout(function()
+ {
+ NVRDataModel.debug("doing the jiggle and dance...");
+ pckry.resize(true);
+ }, 300);
+
+ // $scope.slider.monsize = 2;
+ });
+ pckry.layout();
+
+ }, 20);
+
+ };
+
+ function layout(pckry)
+ {
+ pckry.shiftLayout();
+ }
+
+
+ $scope.squeezeMonitors = function()
+ {
+ pckry.once('layoutComplete', resizeComplete);
+ $timeout (function() {pckry.layout();});
+
+ function resizeComplete()
+ {
+ //console.log ("HERE");
+ $timeout(function()
{
- //console.log ("Layout complete");
var positions = pckry.getShiftPositions('data-item-id');
- //console.log ("POSITIONS MAP " + JSON.stringify(positions));
+ console.log("SAVING");
var ld = NVRDataModel.getLogin();
ld.packeryPositions = JSON.stringify(positions);
//console.log ("Saving " + ld.packeryPositions);
ld.currentMontageProfile = "";
- $scope.currentProfileName = $translate.instant ('kMontage');
+ $scope.currentProfileName =$translate.instant ('kMontage');
NVRDataModel.setLogin(ld);
+ $ionicLoading.hide();
+ $scope.sliderChanging = false;
+ }, 20);
- $timeout(function()
- {
- NVRDataModel.debug("doing the jiggle and dance...");
- pckry.resize(true);
- }, 300);
-
- // $scope.slider.monsize = 2;
- });
- pckry.layout();
+ }
+
- }, 20);
+ };
+ //---------------------------------------------------------
+ // slider is tied to the view slider for montage
+ //Remember not to use a variable. I'm using an object
+ // so it's passed as a reference - otherwise it makes
+ // a copy and the value never changes
+ //---------------------------------------------------------
- };
+ $scope.sliderChanged = function(dirn)
+ {
- function layout(pckry)
+ if ($scope.sliderChanging)
{
- pckry.shiftLayout();
+ console.log("too fast my friend");
+ //$scope.slider.monsize = oldSliderVal;
+ return;
}
+ $scope.sliderChanging = true;
- $scope.squeezeMonitors = function()
+ $ionicLoading.show(
{
- pckry.once('layoutComplete', resizeComplete);
- $timeout (function() {pckry.layout();});
+ template: $translate.instant('kPleaseWait'),
+ noBackdrop: true,
+ duration: 5000
+ });
- function resizeComplete()
- {
- //console.log ("HERE");
- $timeout(function()
- {
- var positions = pckry.getShiftPositions('data-item-id');
- console.log("SAVING");
- var ld = NVRDataModel.getLogin();
-
- ld.packeryPositions = JSON.stringify(positions);
- //console.log ("Saving " + ld.packeryPositions);
- ld.currentMontageProfile = "";
- $scope.currentProfileName =$translate.instant ('kMontage');
- NVRDataModel.setLogin(ld);
- $ionicLoading.hide();
- $scope.sliderChanging = false;
- }, 20);
+ var somethingReset = false;
- }
-
+ var oldScales = {};
+ pckry.getItemElements().forEach(function(elem)
+ {
+ var id = elem.getAttribute("data-item-id");
+ var sz = elem.getAttribute("data-item-size");
+ if (isNaN(sz)) sz=20;
+ oldScales[id] = sz;
+ console.log("REMEMBERING " + id + ":" + sz);
- };
- //---------------------------------------------------------
- // slider is tied to the view slider for montage
- //Remember not to use a variable. I'm using an object
- // so it's passed as a reference - otherwise it makes
- // a copy and the value never changes
- //---------------------------------------------------------
+ });
- $scope.sliderChanged = function(dirn)
+ // this only changes items that are selected
+ for (var i = 0; i < $scope.MontageMonitors.length; i++)
{
- if ($scope.sliderChanging)
- {
- console.log("too fast my friend");
- //$scope.slider.monsize = oldSliderVal;
- return;
- }
+ var curVal = parseInt($scope.MontageMonitors[i].Monitor.gridScale) || 20;
+ curVal = curVal + (5 * dirn);
+ if (curVal < 10) curVal = 10;
+ if (curVal > 100) curVal = 100;
+ //console.log ("For Index: " + i + " From: " + $scope.MontageMonitors[i].Monitor.gridScale + " To: " + curVal);
- $scope.sliderChanging = true;
+ if ($scope.isDragabillyOn)
+ {
+ // only do this for selected monitors
+ if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected")
+ {
- $ionicLoading.show(
+ $scope.MontageMonitors[i].Monitor.gridScale = curVal;
+ somethingReset = true;
+ }
+ }
+ else
{
- template: $translate.instant('kPleaseWait'),
- noBackdrop: true,
- duration: 5000
- });
+ $scope.MontageMonitors[i].Monitor.gridScale = curVal;
+ //somethingReset = true;
- var somethingReset = false;
+ }
- var oldScales = {};
- pckry.getItemElements().forEach(function(elem)
- {
- var id = elem.getAttribute("data-item-id");
- var sz = elem.getAttribute("data-item-size");
- if (isNaN(sz)) sz=20;
- oldScales[id] = sz;
- console.log("REMEMBERING " + id + ":" + sz);
+ }
- });
+ // 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) || 20;
+ cv = cv + (5 * dirn);
+ if (cv < 10) cv = 10;
+ if (cv > 100) cv = 100;
+ $scope.MontageMonitors[i].Monitor.gridScale = cv;
+ //console.log ("*******GRIDSCALE="+)
+ }
+ }
- // this only changes items that are selected
- for (var i = 0; i < $scope.MontageMonitors.length; i++)
- {
+ // reload sizes from DOM and trigger a layout
- var curVal = parseInt($scope.MontageMonitors[i].Monitor.gridScale) || 20;
- curVal = curVal + (5 * dirn);
- if (curVal < 10) curVal = 10;
- if (curVal > 100) curVal = 100;
- //console.log ("For Index: " + i + " From: " + $scope.MontageMonitors[i].Monitor.gridScale + " To: " + curVal);
+ $timeout(function()
+ {
+ console.log("Calling re-layout");
+ //pckry.reloadItems();
- if ($scope.isDragabillyOn)
+ if (dirn == 1) //expand
+ {
+ pckry.getItemElements().forEach(function(elem)
{
- // only do this for selected monitors
- if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected")
+ var id = elem.getAttribute("data-item-id");
+ var sz = elem.getAttribute("data-item-size");
+ if (isNaN(sz)) sz=20;
+ console.log("NOW IT IS-> " + id + ":" + sz);
+ if (oldScales[id] != sz)
{
+ console.log("Calling FIT on " + id + " size:" + oldScales[id] + "->" + sz);
+ pckry.once('fitComplete', resizeComplete);
+ pckry.fit(elem);
- $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
+ else //shrink
{
- for (i = 0; i < $scope.MontageMonitors.length; i++)
- {
- var cv = parseInt($scope.MontageMonitors[i].Monitor.gridScale) || 20;
- cv = cv + (5 * dirn);
- if (cv < 10) cv = 10;
- if (cv > 100) cv = 100;
- $scope.MontageMonitors[i].Monitor.gridScale = cv;
- //console.log ("*******GRIDSCALE="+)
- }
- }
+ console.log("Calling shift");
+ pckry.once('layoutComplete', resizeComplete);
+ pckry.shiftLayout();
- // reload sizes from DOM and trigger a layout
+ }
+ }, 20);
+
+ /* if (!somethingReset) {
+ //console.log (">>>SOMETHING NOT RESET");
+ $timeout(function () {
+ pckry.layout();
+ }, zm.packeryTimer);
+ } else {
+
+ //console.log (">>>SOMETHING RESET");
+ $timeout(function () {
+ layout(pckry);
+ }, zm.packeryTimer);
+ }*/
+ function resizeComplete()
+ {
+ //console.log ("HERE");
$timeout(function()
{
- console.log("Calling re-layout");
- //pckry.reloadItems();
-
- if (dirn == 1) //expand
- {
- pckry.getItemElements().forEach(function(elem)
- {
- var id = elem.getAttribute("data-item-id");
- var sz = elem.getAttribute("data-item-size");
- if (isNaN(sz)) sz=20;
- console.log("NOW IT IS-> " + id + ":" + sz);
- if (oldScales[id] != sz)
- {
- console.log("Calling FIT on " + id + " size:" + oldScales[id] + "->" + sz);
- pckry.once('fitComplete', resizeComplete);
- pckry.fit(elem);
-
- }
- });
- }
- else //shrink
- {
- console.log("Calling shift");
- pckry.once('layoutComplete', resizeComplete);
- pckry.shiftLayout();
-
- }
+ var positions = pckry.getShiftPositions('data-item-id');
+ console.log("SAVING");
+ var ld = NVRDataModel.getLogin();
+ ld.packeryPositions = JSON.stringify(positions);
+ //console.log ("Saving " + ld.packeryPositions);
+ ld.currentMontageProfile = "";
+ $scope.currentProfileName = $translate.instant ('kMontage');
+ NVRDataModel.setLogin(ld);
+ $ionicLoading.hide();
+ $scope.sliderChanging = false;
}, 20);
- /* if (!somethingReset) {
- //console.log (">>>SOMETHING NOT RESET");
- $timeout(function () {
- pckry.layout();
- }, zm.packeryTimer);
- } else {
-
- //console.log (">>>SOMETHING RESET");
- $timeout(function () {
- layout(pckry);
- }, zm.packeryTimer);
- }*/
- function resizeComplete()
- {
- //console.log ("HERE");
- $timeout(function()
- {
- var positions = pckry.getShiftPositions('data-item-id');
- console.log("SAVING");
- var ld = NVRDataModel.getLogin();
-
- ld.packeryPositions = JSON.stringify(positions);
- //console.log ("Saving " + ld.packeryPositions);
- ld.currentMontageProfile = "";
- $scope.currentProfileName = $translate.instant ('kMontage');
- NVRDataModel.setLogin(ld);
- $ionicLoading.hide();
- $scope.sliderChanging = false;
- }, 20);
-
- }
+ }
- };
+ };
- $scope.$on('$ionicView.afterEnter', function()
- {
- // This rand is really used to reload the monitor image in img-src so it is not cached
- // I am making sure the image in montage view is always fresh
- // I don't think I am using this anymore FIXME: check and delete if needed
- // $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
- });
+ $scope.$on('$ionicView.afterEnter', function()
+ {
+ // This rand is really used to reload the monitor image in img-src so it is not cached
+ // I am making sure the image in montage view is always fresh
+ // I don't think I am using this anymore FIXME: check and delete if needed
+ // $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
+ });
- $scope.currentProfileName = NVRDataModel.getLogin().currentMontageProfile || $translate.instant ('kMontage');
+ $scope.currentProfileName = NVRDataModel.getLogin().currentMontageProfile || $translate.instant ('kMontage');
- $scope.reloadView = function()
- {
- $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
- NVRDataModel.log("User action: image reload " + $rootScope.rand);
- };
+ $scope.reloadView = function()
+ {
+ $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
+ NVRDataModel.log("User action: image reload " + $rootScope.rand);
+ };
- $scope.doRefresh = function()
- {
+ $scope.doRefresh = function()
+ {
- // console.log("***Pull to Refresh, recomputing Rand");
- NVRDataModel.log("Reloading view for montage view, recomputing rand");
- $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
- $scope.monitors = [];
- imageLoadingDataShare.set(0);
+ // console.log("***Pull to Refresh, recomputing Rand");
+ NVRDataModel.log("Reloading view for montage view, recomputing rand");
+ $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
+ $scope.monitors = [];
+ imageLoadingDataShare.set(0);
- var refresh = NVRDataModel.getMonitors(1);
+ var refresh = NVRDataModel.getMonitors(1);
- refresh.then(function(data)
- {
- $scope.monitors = data;
- $scope.$broadcast('scroll.refreshComplete');
- });
- };
+ refresh.then(function(data)
+ {
+ $scope.monitors = data;
+ $scope.$broadcast('scroll.refreshComplete');
+ });
+ };
- }]);
+}]);
diff --git a/www/js/app.js b/www/js/app.js
index 1c6fe958..b8a4cea1 100755
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -1180,13 +1180,35 @@ angular.module('zmApp', [
$ionicPlatform.ready(function () {
console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>INSIDE RUN");
+ $rootScope.textScaleFactor = 1.0;
+ $rootScope.apiValid = false;
- if (window.cordova) {
+ $rootScope.db = null;
+ $rootScope.runMode = NVRDataModel.getBandwidth();
- cordova.plugins.diagnostic.requestExternalStorageAuthorization(okperm, nopermerr);
+ $rootScope.platformOS = "desktop";
+ NVRDataModel.log("Device is ready");
- }
+ // var ld = NVRDataModel.getLogin();
+ if ($ionicPlatform.is('ios'))
+ $rootScope.platformOS = "ios";
+ if ($ionicPlatform.is('android'))
+ $rootScope.platformOS = "android";
+
+ NVRDataModel.log("You are running on " + $rootScope.platformOS);
+
+
+ /*if (window.cordova && $rootScope.platformOS == 'android') {
+
+ cordova.plugins.diagnostic.isExternalStorageAuthorized(function (authorized) {
+ if (!authorized) cordova.plugins.diagnostic.requestExternalStorageAuthorization(okperm, nopermerr);
+ }, function (err) {
+ console.log("diagnostic external storage error " + err);
+ });
+
+
+ }*/
function nopermerr() {
@@ -1213,7 +1235,7 @@ angular.module('zmApp', [
$rootScope.tappedMid = 0;
//var eventsToDisplay=[];
$rootScope.alarmCount = "0";
- $rootScope.platformOS = "desktop";
+
$rootScope.currentServerGroup = "defaultServer";
$rootScope.validMonitorId = "";
$rootScope.newVersionAvailable = "";
@@ -1240,27 +1262,27 @@ angular.module('zmApp', [
if ($rootScope.platformOS == 'desktop') {
- window.addEventListener('beforeunload', function (ev) {
+ window.addEventListener('beforeunload', function (ev) {
+
+ // This was causing android reload issues - holy palooza
+ /* if ($rootScope.platformOS != 'desktop') {
+ ev.returnValue = "true";
+ return;
+ }*/
+
+ localforage.setItem('last-desktop-state', {
+ 'name': $ionicHistory.currentView().stateName,
+ 'params': $ionicHistory.currentView().stateParams
+ }).then(function () {
+ return localforage.getItem('last-desktop-state');
+ }).then(function (value) {
+ ev.returnValue = "true";
+ }).catch(function (err) {
+ ev.returnValue = "true";
+ });
- // This was causing android reload issues - holy palooza
- /* if ($rootScope.platformOS != 'desktop') {
- ev.returnValue = "true";
- return;
- }*/
-
- localforage.setItem('last-desktop-state', {
- 'name': $ionicHistory.currentView().stateName,
- 'params': $ionicHistory.currentView().stateParams
- }).then(function () {
- return localforage.getItem('last-desktop-state');
- }).then(function (value) {
- ev.returnValue = "true";
- }).catch(function (err) {
- ev.returnValue = "true";
});
-
- });
- }
+ }
// register callbacks for online/offline
// lets see if it really works
@@ -1448,24 +1470,7 @@ angular.module('zmApp', [
};
- $rootScope.textScaleFactor = 1.0;
- $rootScope.apiValid = false;
-
- $rootScope.db = null;
- $rootScope.runMode = NVRDataModel.getBandwidth();
-
- $rootScope.platformOS = "desktop";
- NVRDataModel.log("Device is ready");
-
-
- // var ld = NVRDataModel.getLogin();
- if ($ionicPlatform.is('ios'))
- $rootScope.platformOS = "ios";
- if ($ionicPlatform.is('android'))
- $rootScope.platformOS = "android";
-
- NVRDataModel.log("You are running on " + $rootScope.platformOS);
-
+
console.log("Mobile acc");
if (window.cordova)
MobileAccessibility.getTextZoom(getTextZoomCallback);
@@ -1612,7 +1617,7 @@ angular.module('zmApp', [
console.log("statusbar");
NVRDataModel.log("Updating statusbar");
StatusBar.styleDefault();
- //StatusBar.overlaysWebView(false);
+ //StatusBar.overlaysWebView(true);
StatusBar.backgroundColorByHexString("#2980b9");
}
@@ -1707,7 +1712,7 @@ angular.module('zmApp', [
if (succ) {
$rootScope.lastState = succ.name;
if ($rootScope.lastState.indexOf("app.") == -1) {
- $rootScope.lastState = "app."+$rootScope.lastState;
+ $rootScope.lastState = "app." + $rootScope.lastState;
}
$rootScope.lastStateParam = succ.params;
diff --git a/www/templates/montage.html b/www/templates/montage.html
index 336ef214..bcdfdf6c 100644
--- a/www/templates/montage.html
+++ b/www/templates/montage.html
@@ -25,6 +25,9 @@
</ion-nav-buttons>
<ion-content ng-cloak has-bouncing="false" style="background-color:#444444" delegate-handle="montage-delegate" overflow-scroll="false">
<!--<ion-content scroll-sista ng-cloak has-bouncing="false" style="background-color:#444444" delegate-handle="montage-delegate" overflow-scroll="false">-->
+
+
+
<div ng-if="!minimal && toggleSubMenu" >
<!-- this is header -->
<br/>
@@ -167,7 +170,7 @@
</nav>
<span class="modal-alarm-badge">
<a data-badge="{{$root.alarmCount}}" class="animated infinite tada button icon ion-ios-bell notification-badge button-assertive"
- ng-click="handleAlarmsWhileMinimized();" ng-if="!$root.isAlarm"></a>
+ ng-click="handleAlarmsWhileMinimized();" ng-if="$root.isAlarm"></a>
</span>
</div>
<br/>