diff options
Diffstat (limited to 'www')
41 files changed, 182 insertions, 109 deletions
diff --git a/www/css/style.css b/www/css/style.css index 626fe0ba..c7670e58 100644 --- a/www/css/style.css +++ b/www/css/style.css @@ -1917,8 +1917,7 @@ fill-opacity: 0.8; } .smallThumbs { - - flex-wrap:wrap; + float:right; } @@ -1947,9 +1946,18 @@ body { font-family: sans-serif; height:100%; padding-top: constant(safe-area-inset-top); -} + padding-top: env(safe-area-inset-top); + +} +.notch-ready { + margin-left: constant(safe-area-inset-left); + margin-left: env(safe-area-inset-left); + + margin-right: constant(safe-area-inset-right); + margin-right: env(safe-area-inset-right); +} * { font-family: -apple-system, "Helvetica Neue", sans-serif; diff --git a/www/external/js/ion-pullup.min.js b/www/external/js/ion-pullup.min.js index efbcc552..5cd85289 100644 --- a/www/external/js/ion-pullup.min.js +++ b/www/external/js/ion-pullup.min.js @@ -1 +1 @@ -angular.module("ionic-pullup",[]).constant("ionPullUpFooterState",{COLLAPSED:"COLLAPSED",MINIMIZED:"MINIMIZED",EXPANDED:"EXPANDED"}).constant("ionPullUpFooterBehavior",{HIDE:"HIDE",EXPAND:"EXPAND"}).directive("ionPullUpFooter",[function(){return{restrict:"AE",scope:{state:"=?",onExpand:"&",onCollapse:"&",onMinimize:"&",allowMidRange:"="},controller:["$scope","$element","$attrs","$timeout","$rootScope","$window","$ionicPlatform","ionPullUpFooterState","ionPullUpFooterBehavior",function(t,e,o,n,i,a,s,r,l){function c(){var t=e[0];f=t.closest("ion-tabs"),g=f&&f.classList.contains("tabs-bottom"),E=document.querySelector("ion-nav-bar .nav-bar-block[nav-bar=entering] > .bar-header"),D=f?f.querySelector(".tabs").offsetHeight:0,I=E?E.offsetHeight:0}function u(){n(function(){m.height=m.maxHeight>0?m.maxHeight:a.innerHeight-I-P-D,m.height-=50,"ios"==i.platformOS&&(m.height-=30),e.css({height:m.height+"px"}),m.initialState==r.MINIMIZED?d():p()},300),e.css({transition:"none",padding:0})}function h(){c(),m.height=m.maxHeight>0?m.maxHeight:a.innerHeight-I-P-D,m.height-=50,"ios"==i.platformOS&&(m.height-=30),m.lastPosY=0,e.css({height:m.height+"px","-webkit-transform":"translate3d(0, 0, 0)",transform:"translate3d(0, 0, 0)"}),e.css({transition:"300ms ease-in-out",padding:0}),t.onExpand(),t.state=r.EXPANDED}function p(){m.lastPosY=f?m.height-D:m.height-m.defaultHeight,e.css({"-webkit-transform":"translate3d(0, "+m.lastPosY+"px, 0)",transform:"translate3d(0, "+m.lastPosY+"px, 0)"}),t.onCollapse(),t.state=r.COLLAPSED}function d(){m.lastPosY=m.height,e.css({"-webkit-transform":"translate3d(0, "+m.lastPosY+"px, 0)",transform:"translate3d(0, "+m.lastPosY+"px, 0)"}),t.onMinimize(),t.state=r.MINIMIZED}var f,g,E,D,I,P=0,m={height:0,posY:0,lastPosY:0,defaultHeight:e[0].offsetHeight,maxHeight:parseInt(o.maxHeight,10)||0,initialState:o.initialState?o.initialState.toUpperCase():r.COLLAPSED,defaultBehavior:o.defaultBehavior?o.defaultBehavior.toUpperCase():l.EXPAND};this.$onInit=function(){n(function(){c(),e.css({transition:"300ms ease-in-out",padding:0}),f&&g&&e.css("bottom",D+"px")}),u()},this.setHandleHeight=function(t){P=t},this.getHeight=function(){return e[0].offsetHeight},this.getBackground=function(){return a.getComputedStyle(e[0]).background},this.getInitialState=function(){return m.initialState},this.getDefaultBehavior=function(){return m.defaultBehavior},this.onTap=function(e){e.gesture.srcEvent.preventDefault(),e.gesture.preventDefault(),n(function(){t.state==r.COLLAPSED?m.defaultBehavior==l.HIDE?t.state=r.MINIMIZED:t.state=r.EXPANDED:t.state==r.MINIMIZED?m.defaultBehavior==l.HIDE?t.state=r.COLLAPSED:t.state=r.EXPANDED:t.state=m.initialState==r.MINIMIZED?r.MINIMIZED:r.COLLAPSED})},this.onDrag=function(o){switch(o.gesture.srcEvent.preventDefault(),o.gesture.preventDefault(),o.type){case"dragstart":e.css("transition","none");break;case"drag":if(m.posY=Math.round(o.gesture.deltaY)+m.lastPosY,m.posY<0||m.posY>m.height)return;e.css({"-webkit-transform":"translate3d(0, "+m.posY+"px, 0)",transform:"translate3d(0, "+m.posY+"px, 0)"});break;case"dragend":e.css({transition:"300ms ease-in-out"}),t.allowMidRange?m.lastPosY=m.posY:n(function(){m.lastPosY>m.posY?t.state=r.EXPANDED:m.lastPosY<m.posY&&(t.state=m.initialState==r.MINIMIZED?r.MINIMIZED:r.COLLAPSED)})}};var v=t.$watch("state",function(e,o){if(void 0!==o&&e!=o){switch(e){case r.COLLAPSED:p();break;case r.EXPANDED:h();break;case r.MINIMIZED:d()}i.$broadcast("ionPullUp:tap",t.state,m.defaultBehavior)}});t.$on("$destroy",v),s.ready(function(){a.addEventListener("orientationchange",u),s.on("resume",u)})}],compile:function(t,e){e.defaultHeight&&t.css("height",parseInt(e.defaultHeight,10)+"px"),t.addClass("bar bar-footer")}}}]).component("ionPullUpContent",{require:{FooterController:"^ionPullUpFooter"},controller:["$element","$attrs",function(t,e){this.$onInit=function(){var o=this.FooterController.getHeight();t.css({display:"block","margin-top":o+"px",width:"100%"}),e.scroll&&"TRUE"==e.scroll.toUpperCase()&&t.css({"overflow-y":"scroll","overflow-x":"hidden"})}}]}).component("ionPullUpBar",{require:{FooterController:"^ionPullUpFooter"},controller:["$element",function(t){this.$onInit=function(){var e=this.FooterController.getHeight();t.css({display:"flex",height:e+"px",position:"absolute",right:"0",left:"0"})}}]}).directive("ionPullUpTrigger",["$ionicGesture",function(t){return{restrict:"AE",require:"^ionPullUpFooter",link:function(e,o,n,i){t.on("tap",i.onTap,o),t.on("drag dragstart dragend",i.onDrag,o)}}}]).component("ionPullUpHandle",{require:{FooterController:"^ionPullUpFooter"},controller:["$scope","$element","$attrs","ionPullUpFooterState","ionPullUpFooterBehavior","$ionicGesture","$ionicPlatform","$timeout","$window",function(t,e,o,n,i,a,s,r,l){function c(t,o){d&&f&&(e.find("i").removeClass([d,f].join(" ")),t==n.COLLAPSED?o==i.HIDE?e.find("i").addClass(f):e.find("i").addClass(d):t==n.MINIMIZED?(i.HIDE,e.find("i").addClass(d)):e.find("i").addClass(f))}function u(){r(function(){e.css("left",(l.innerWidth-p)/2+"px")},300)}var h=parseInt(o.height,10)||25,p=parseInt(o.width,10)||100,d=o.iconExpand,f=o.iconCollapse;e.css({display:"block","background-color":"inherit",position:"absolute",top:1-h+"px",left:(l.innerWidth-p)/2+"px",height:h+"px",width:p+"px","text-align":"center"}).append("<i>"),this.$onInit=function(){var t=this.FooterController;a.on("tap",t.onTap,e),a.on("drag dragstart dragend",t.onDrag,e),t.setHandleHeight(h);c(t.getInitialState(),t.getDefaultBehavior()),u()},t.$on("ionPullUp:tap",function(t,e,o){c(e,o)}),s.ready(function(){l.addEventListener("orientationchange",u),s.on("resume",u)})}]}); +angular.module("ionic-pullup",[]).constant("ionPullUpFooterState",{COLLAPSED:"COLLAPSED",MINIMIZED:"MINIMIZED",EXPANDED:"EXPANDED"}).constant("ionPullUpFooterBehavior",{HIDE:"HIDE",EXPAND:"EXPAND"}).directive("ionPullUpFooter",[function(){return{restrict:"AE",scope:{state:"=?",onExpand:"&",onCollapse:"&",onMinimize:"&",allowMidRange:"="},controller:["$scope","$element","$attrs","$timeout","$rootScope","$window","$ionicPlatform","ionPullUpFooterState","ionPullUpFooterBehavior",function(t,e,n,o,i,a,r,s,l){var c,u,h,p,d,f=0,g={height:0,posY:0,lastPosY:0,defaultHeight:e[0].offsetHeight,maxHeight:parseInt(n.maxHeight,10)||0,initialState:n.initialState?n.initialState.toUpperCase():s.COLLAPSED,defaultBehavior:n.defaultBehavior?n.defaultBehavior.toUpperCase():l.EXPAND};function E(){var t=e[0];c=t.closest("ion-tabs"),u=c&&c.classList.contains("tabs-bottom"),h=document.querySelector("ion-nav-bar .nav-bar-block[nav-bar=entering] > .bar-header"),p=c?c.querySelector(".tabs").offsetHeight:0,d=h?h.offsetHeight:0}function D(){o((function(){g.height=g.maxHeight>0?g.maxHeight:a.innerHeight-d-f-p,g.height-=50,"ios"==i.platformOS&&(g.height-=30),e.css({height:g.height+"px"}),g.initialState==s.MINIMIZED?m():P()}),300),e.css({transition:"none",padding:0})}function I(){E(),g.height=g.maxHeight>0?g.maxHeight:a.innerHeight-d-f-p,g.height-=50,"ios"==i.platformOS&&(g.height-=30),g.lastPosY=0,e.css({height:g.height+"px","-webkit-transform":"translate3d(0, 0, 0)",transform:"translate3d(0, 0, 0)"}),e.css({transition:"300ms ease-in-out",padding:0}),t.onExpand(),t.state=s.EXPANDED}function P(){g.lastPosY=c?g.height-p:g.height-g.defaultHeight,e.css({"-webkit-transform":"translate3d(0, "+g.lastPosY+"px, 0)",transform:"translate3d(0, "+g.lastPosY+"px, 0)"}),t.onCollapse(),t.state=s.COLLAPSED}function m(){g.lastPosY=g.height,e.css({"-webkit-transform":"translate3d(0, "+g.lastPosY+"px, 0)",transform:"translate3d(0, "+g.lastPosY+"px, 0)"}),t.onMinimize(),t.state=s.MINIMIZED}this.$onInit=function(){o((function(){E(),e.css({transition:"300ms ease-in-out",padding:0}),c&&u&&e.css("bottom",p+"px")})),D()},this.setHandleHeight=function(t){f=t},this.getHeight=function(){return e[0].offsetHeight},this.getBackground=function(){return a.getComputedStyle(e[0]).background},this.getInitialState=function(){return g.initialState},this.getDefaultBehavior=function(){return g.defaultBehavior},this.onTap=function(e){e.gesture.srcEvent.preventDefault(),e.gesture.preventDefault(),o((function(){t.state==s.COLLAPSED?g.defaultBehavior==l.HIDE?t.state=s.MINIMIZED:t.state=s.EXPANDED:t.state==s.MINIMIZED?g.defaultBehavior==l.HIDE?t.state=s.COLLAPSED:t.state=s.EXPANDED:t.state=g.initialState==s.MINIMIZED?s.MINIMIZED:s.COLLAPSED}))},this.onDrag=function(n){switch(n.gesture.srcEvent.preventDefault(),n.gesture.preventDefault(),n.type){case"dragstart":e.css("transition","none");break;case"drag":if(g.posY=Math.round(n.gesture.deltaY)+g.lastPosY,g.posY<0||g.posY>g.height)return;e.css({"-webkit-transform":"translate3d(0, "+g.posY+"px, 0)",transform:"translate3d(0, "+g.posY+"px, 0)"});break;case"dragend":e.css({transition:"300ms ease-in-out"}),t.allowMidRange?g.lastPosY=g.posY:o((function(){g.lastPosY>g.posY?t.state=s.EXPANDED:g.lastPosY<g.posY&&(t.state=g.initialState==s.MINIMIZED?s.MINIMIZED:s.COLLAPSED)}))}};var v=t.$watch("state",(function(e,n){if(void 0!==n&&e!=n){switch(e){case s.COLLAPSED:P();break;case s.EXPANDED:I();break;case s.MINIMIZED:m()}i.$broadcast("ionPullUp:tap",t.state,g.defaultBehavior)}}));t.$on("$destroy",(function(){a.removeEventListener("orientationchange",D),v()})),r.ready((function(){a.addEventListener("orientationchange",D),r.on("resume",D)}))}],compile:function(t,e){e.defaultHeight&&t.css("height",parseInt(e.defaultHeight,10)+"px"),t.addClass("bar bar-footer")}}}]).component("ionPullUpContent",{require:{FooterController:"^ionPullUpFooter"},controller:["$element","$attrs",function(t,e){this.$onInit=function(){var n=this.FooterController.getHeight();t.css({display:"block","margin-top":n+"px",width:"100%"}),e.scroll&&"TRUE"==e.scroll.toUpperCase()&&t.css({"overflow-y":"scroll","overflow-x":"hidden"})}}]}).component("ionPullUpBar",{require:{FooterController:"^ionPullUpFooter"},controller:["$element",function(t){this.$onInit=function(){var e=this.FooterController.getHeight();t.css({display:"flex",height:e+"px",position:"absolute",right:"0",left:"0"})}}]}).directive("ionPullUpTrigger",["$ionicGesture",function(t){return{restrict:"AE",require:"^ionPullUpFooter",link:function(e,n,o,i){t.on("tap",i.onTap,n),t.on("drag dragstart dragend",i.onDrag,n)}}}]).component("ionPullUpHandle",{require:{FooterController:"^ionPullUpFooter"},controller:["$scope","$element","$attrs","ionPullUpFooterState","ionPullUpFooterBehavior","$ionicGesture","$ionicPlatform","$timeout","$window",function(t,e,n,o,i,a,r,s,l){var c=parseInt(n.height,10)||25,u=parseInt(n.width,10)||100,h=n.iconExpand,p=n.iconCollapse;function d(t,n){h&&p&&(e.find("i").removeClass([h,p].join(" ")),t==o.COLLAPSED?n==i.HIDE?e.find("i").addClass(p):e.find("i").addClass(h):t==o.MINIMIZED?(i.HIDE,e.find("i").addClass(h)):e.find("i").addClass(p))}function f(){s((function(){e.css("left",(l.innerWidth-u)/2+"px")}),300)}e.css({display:"block","background-color":"inherit",position:"absolute",top:1-c+"px",left:(l.innerWidth-u)/2+"px",height:c+"px",width:u+"px","text-align":"center"}).append("<i>"),this.$onInit=function(){var t=this.FooterController;a.on("tap",t.onTap,e),a.on("drag dragstart dragend",t.onDrag,e),t.setHandleHeight(c),d(t.getInitialState(),t.getDefaultBehavior()),f()},t.$on("ionPullUp:tap",(function(t,e,n){d(e,n)})),r.ready((function(){l.addEventListener("orientationchange",f),r.on("resume",f)}))}]}); diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js index d5ec228d..502a568d 100644 --- a/www/js/EventCtrl.js +++ b/www/js/EventCtrl.js @@ -32,7 +32,7 @@ angular.module('zmApp.controllers') }) - .controller('zmApp.EventCtrl', ['$scope', '$rootScope', 'zm', 'NVR', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', '$ionicSlideBoxDelegate', '$ionicPosition', '$ionicPopover', '$ionicPopup', 'EventServer', '$sce', '$cordovaBadge', '$cordovaLocalNotification', '$q', 'carouselUtils', '$translate', '$cordovaFileTransfer', '$cordovaFile', '$ionicListDelegate', 'ionPullUpFooterState', 'SecuredPopups', function ($scope, $rootScope, zm, NVR, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, $ionicSlideBoxDelegate, $ionicPosition, $ionicPopover, $ionicPopup, EventServer, $sce, $cordovaBadge, $cordovaLocalNotification, $q, carouselUtils, $translate, $cordovaFileTransfer, $cordovaFile, $ionicListDelegate, ionPullUpFooterState,SecuredPopups) { + .controller('zmApp.EventCtrl', ['$scope', '$rootScope', 'zm', 'NVR', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', '$ionicSlideBoxDelegate', '$ionicPosition', '$ionicPopover', '$ionicPopup', 'EventServer', '$sce', '$cordovaBadge', '$cordovaLocalNotification', '$q', 'carouselUtils', '$translate', '$cordovaFileTransfer', '$cordovaFile', '$ionicListDelegate', 'ionPullUpFooterState', 'SecuredPopups', '$window', function ($scope, $rootScope, zm, NVR, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, $ionicSlideBoxDelegate, $ionicPosition, $ionicPopover, $ionicPopup, EventServer, $sce, $cordovaBadge, $cordovaLocalNotification, $q, carouselUtils, $translate, $cordovaFileTransfer, $cordovaFile, $ionicListDelegate, ionPullUpFooterState,SecuredPopups, $window) { // events in last 5 minutes // TODO https://server/zm/api/events/consoleEvents/5%20minute.json @@ -78,7 +78,12 @@ angular.module('zmApp.controllers') //--------------------------------------------------- - + $scope.$on('sizechanged', function() { + $timeout (function () { + recomputeThumbSize(); + },10); + + }); //we come here is TZ is updated after the view loads var tzu = $scope.$on('tz-updated', function () { @@ -95,7 +100,6 @@ angular.module('zmApp.controllers') $scope.$on('$ionicView.afterEnter', function () { - window.addEventListener("resize", recomputeThumbSize, false); $ionicListDelegate.canSwipeItems(true); // NVR.debug("enabling options swipe"); @@ -178,11 +182,24 @@ angular.module('zmApp.controllers') $scope.$on('$ionicView.beforeLeave', function () { + //$window.removeEventListener('orientationchange', updateUI); + if ($stateParams.lastCheckTime != undefined && $stateParams.lastCheckTime != '' && moment($stateParams.lastCheckTime).isValid()) { + NVR.debug ("removing montage temporary filter"); + $rootScope.isEventFilterOn = false; + $rootScope.fromDate = ""; + $rootScope.fromTime = ""; + $rootScope.toDate = ""; + $rootScope.toTime = ""; + $rootScope.fromString = ""; + $rootScope.toString = ""; + $rootScope.monitorsFilter=""; + } NVR.debug ("Cancelling page reload timer"); $interval.cancel(intervalReloadEvents); - NVR.debug("EventCtrl: Deregistering resize listener"); - window.removeEventListener("resize", recomputeThumbSize, false); + document.removeEventListener("pause", onPause, false); + + //NVR.debug("EventCtrl: Deregistering broadcast handles"); for (var i = 0; i < broadcastHandles.length; i++) { // broadcastHandles[i](); @@ -192,28 +209,46 @@ angular.module('zmApp.controllers') $scope.$on('$ionicView.beforeEnter', function () { - //console.log ("********* BEFORE ENTER"); - // + /* + It's a bleeding mess trying to get this working on + multiple devices and orientations with flex-box, primarily + because I'm not a CSS guru. + + Plus, collection-repeat offers significant performance benefits + and this requires fixed row sizes across all rows. + + The layout I am using: + a) If you are using large thumbs, it's a single column format + b) If you are using small thumbs, it's a two column format + + The max size of the image is in computeThumbnailSize() + */ - - var ld = NVR.getLogin(); - if (ld.eventViewThumbsSize == 'large') { - NVR.debug ('Switching to big thumbs style'); - $scope.thumbClass = 'large'; - $scope.rowHeightRegular = 450; - $scope.rowHeightExpanded = $scope.rowHeightRegular + 200; + if (ld.eventViewThumbs != 'none') { + if (ld.eventViewThumbsSize == 'large') { + NVR.debug ('Switching to big thumbs style'); + $scope.thumbClass = 'large'; + $scope.rowHeightRegular = 450; + $scope.rowHeightExpanded = $scope.rowHeightRegular + 230; + } else { + NVR.debug ('using small thumbs style'); + $scope.thumbClass = 'small'; + $scope.rowHeightRegular = 250; + $scope.rowHeightExpanded = $scope.rowHeightRegular + 200; + + } } else { - NVR.debug ('using small thumbs style'); - $scope.thumbClass = 'small'; - $scope.rowHeightRegular = 250; - $scope.rowHeightExpanded = $scope.rowHeightRegular + 200; - + NVR.debug ('No thumbs'); + $scope.rowHeightRegular = 170; + $scope.rowHeightExpanded = $scope.rowHeightRegular + 200; } + $scope.rowHeight = $scope.rowHeightRegular; $scope.mid = ''; + $scope.$on ("alarm", function() { NVR.debug ("EventCtrl: new event notification, doing an immediate reload"); // do an immediate display reload and schedule timer again @@ -248,7 +283,13 @@ angular.module('zmApp.controllers') document.addEventListener("pause", onPause, false); //console.log("I got STATE PARAM " + $stateParams.id); $scope.id = parseInt($stateParams.id, 10); - if (isNaN($scope.id)) $scope.id = 0; + if (isNaN($scope.id)) { + $scope.id = 0; + } + + if ($scope.id) + $rootScope.isEventFilterOn = true; + $scope.showEvent = $stateParams.playEvent || false; $scope.monitors = NVR.getMonitorsNow(); @@ -267,6 +308,8 @@ angular.module('zmApp.controllers') //console.log("toString: " + $rootScope.toString); } + + //console.log("BEFORE ENTER >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); NVR.log("EventCtrl called with: E/MID=" + $scope.id + " playEvent = " + $scope.showEvent); @@ -1795,12 +1838,20 @@ angular.module('zmApp.controllers') $scope.filterTapped = function () { //console.log("FILTER TAPPED"); - var myFrom = moment($rootScope.fromString).format("MMM/DD/YYYY " + NVR.getTimeFormat()).toString(); - var toString = moment($rootScope.toString).format("MMM/DD/YYYY " + NVR.getTimeFormat()).toString(); + var myFrom = $translate.instant('kAll'); + var toString = $translate.instant('kAll'); + var monString = ''; + + if (moment($rootScope.fromString).isValid()) + myFrom = moment($rootScope.fromString).format("MMM/DD/YYYY " + NVR.getTimeFormat()).toString(); + if (moment($rootScope.toString).isValid()) + toString = moment($rootScope.toString).format("MMM/DD/YYYY " + NVR.getTimeFormat()).toString(); + if ($rootScope.monitorsFilter != '') + monString = $translate.instant('kFilterEventsSelectiveMon'); $rootScope.zmPopup = $ionicPopup.confirm({ title: $translate.instant('kFilterSettings'), - template: $translate.instant('kFilterEventsBetween1') + ':<br/> <b>' + myFrom + "</b> " + $translate.instant('kTo') + " <b>" + toString + '</b><br/>' + $translate.instant('kFilterEventsBetween2'), + template: $translate.instant('kFilterEventsBetween1') + ':<br/> <b>' + myFrom + "</b> " + $translate.instant('kTo') + " <b>" + toString + '</b> '+ monString+'<br/>' + $translate.instant('kFilterEventsBetween2'), okText: $translate.instant('kButtonOk'), cancelText: $translate.instant('kButtonCancel'), }); @@ -1814,8 +1865,7 @@ angular.module('zmApp.controllers') $rootScope.toTime = ""; $rootScope.fromString = ""; $rootScope.toString = ""; - $rootScope.monitorsFilter = ''; - + $rootScope.monitorsFilter = ""; $scope.id = 0; $scope.showEvent = false; $scope.footerState = ionPullUpFooterState.MINIMIZED; @@ -2995,30 +3045,34 @@ angular.module('zmApp.controllers') function computeThumbnailSize(mw, mh, mo) { + // if ZM is going to rotate the view, lets flip our dimensions if (mo != 0 && mo != 180) { - var tmp = mw; mw = mh; mh = tmp; } var ld = NVR.getLogin(); var landscape = ($rootScope.devWidth > $rootScope.devHeight) ? true:false; - - var maxRowHeight = $scope.rowHeight - 120; + var maxRowHeight; if (ld.eventViewThumbsSize == 'large') { + maxRowHeight = $scope.rowHeight - 170; if (landscape) { - return calculateAspectRatioFit(mw, mh, 0.7* $rootScope.devWidth, maxRowHeight); + // go till 90% of width in large landscape, but restricted to useable row height + return calculateAspectRatioFit(mw, mh, 0.9* $rootScope.devWidth, maxRowHeight); } else { - return calculateAspectRatioFit(mw, mh, 0.4* $rootScope.devWidth, maxRowHeight); + // go till 80% of width in large portrait, but restricted to useable row height + + return calculateAspectRatioFit(mw, mh, 0.8* $rootScope.devWidth, maxRowHeight); } } else { // small - + maxRowHeight = $scope.rowHeight - 150; if (landscape) { + // go till 50% of width in small landscape, but restricted to useable row height return calculateAspectRatioFit(mw, mh, 0.5* $rootScope.devWidth, maxRowHeight); - } else { + // go till 30% of width in small portrait, but restricted to useable row height return calculateAspectRatioFit(mw, mh, 0.3* $rootScope.devWidth, maxRowHeight); } diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js index e91bea99..a6dd87e8 100644 --- a/www/js/EventModalCtrl.js +++ b/www/js/EventModalCtrl.js @@ -1125,6 +1125,11 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro }); + $scope.$on('$ionicView.beforeLeave', function () { + document.removeEventListener("pause", onPause, false); + ddocument.removeEventListener("resume", onResume, false); + }); + $scope.showHideControls = function () { if (videoPlaybarClicked) { diff --git a/www/js/LoginCtrl.js b/www/js/LoginCtrl.js index e64d7a6f..9ba5e8bc 100644 --- a/www/js/LoginCtrl.js +++ b/www/js/LoginCtrl.js @@ -328,6 +328,9 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r $scope.$on('$ionicView.beforeLeave', function () { //console.log("**VIEW ** LoginCtrl Entered"); + document.removeEventListener("pause", onPause, false); + document.removeEventListener("resume", onResume, false); + var newLoginData = JSON.stringify($scope.loginData); if ($scope.loginData.serverName && newLoginData != oldLoginData) { NVR.log("Login data changed, saving..."); diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js index 41b38e8c..8708970d 100644 --- a/www/js/MontageCtrl.js +++ b/www/js/MontageCtrl.js @@ -1734,7 +1734,11 @@ angular.module('zmApp.controllers') NVR.debug("Deregistering handlers for multi-window"); window.MultiWindowPlugin.deregisterOnStop("montage-pause"); + } else { + document.removeEventListener("pause", onPause, false); + } + if ($scope.modal) $scope.modal.remove(); }); @@ -2380,8 +2384,13 @@ angular.module('zmApp.controllers') $state.go(s[0],s[1],s[2]); }); - window.addEventListener("resize", jiggleMontage, false); - + //window.addEventListener("resize", jiggleMontage, false); + $scope.$on('sizechanged', function() { + $timeout (function () { + jiggleMontage(); + },10); + + }); timeInMontage = new Date(); broadcastHandles = []; @@ -2632,7 +2641,7 @@ angular.module('zmApp.controllers') }; $scope.$on('$ionicView.beforeLeave', function () { - window.removeEventListener("resize", jiggleMontage, false); + // window.removeEventListener("resize", jiggleMontage, false); currentStreamState = streamState.STOPPED; viewCleanup(); viewCleaned = true; diff --git a/www/js/MontageHistoryCtrl.js b/www/js/MontageHistoryCtrl.js index 53a27b3c..501c0f48 100644 --- a/www/js/MontageHistoryCtrl.js +++ b/www/js/MontageHistoryCtrl.js @@ -1116,6 +1116,12 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc viewCleanup(); viewCleaned = true; + //$window.removeEventListener('orientationchange', updateUI); + + document.removeEventListener("pause", onPause, false); + document.removeEventListener("resume", onResume, false); + + // if ($scope.modal) $scope.modal.remove(); NVR.log("Cancelling event query timer"); diff --git a/www/js/NVR.js b/www/js/NVR.js index 3eb477f2..99116eb4 100644 --- a/www/js/NVR.js +++ b/www/js/NVR.js @@ -228,7 +228,7 @@ angular.module('zmApp.controllers') 'currentZMGroupNames': [], 'unsupported': {}, 'monitorSpecific': {}, - 'eventViewThumbs': true, + 'eventViewThumbs': 'snapshot', 'eventViewThumbsSize': 'small', diff --git a/www/js/app.js b/www/js/app.js index 8799784d..81977def 100755 --- a/www/js/app.js +++ b/www/js/app.js @@ -1480,6 +1480,10 @@ angular.module('zmApp', [ $rootScope.devWidth = ((window.innerWidth > 0) ? window.innerWidth : screen.width); $rootScope.devHeight = ((window.innerHeight > 0) ? window.innerHeight : screen.height); $rootScope.videoHeight = $rootScope.devHeight - 20; + $rootScope.devWidthIgnorePix = $rootScope.devWidth; + + $rootScope.devWidth *= pixelRatio; + $rootScope.devHeight *= pixelRatio; NVR.debug("resize/orient: " + $rootScope.devWidth + "(w) * " + $rootScope.devHeight+"(h)"); diff --git a/www/lang/locale-de.json b/www/lang/locale-de.json index 6a74ef3a..41f2e6e6 100644 --- a/www/lang/locale-de.json +++ b/www/lang/locale-de.json @@ -113,6 +113,9 @@ "kEventServerVersionTitle" :"Ereignisserver-Version nicht unterstützt", "kEventSingleImageScale" :"Ereignis Einzelbild Maßstab", "kEventStillRecording" :"Aufnahme aktiv", + "kEventViewThumbsSize" :"Vorschaugröße", + "kEventViewThumbsSmall" :"klein", + "kEventViewThumbsLarge" :"groß", "kEvents" :"Ereignisse", "kEventsCap" :"Ereignisse", "kExampleServer" :"z.B. Daheim", @@ -133,6 +136,7 @@ "kFilterEvents" :"Filter Ereignisse", "kFilterEventsBetween1" :"Es werden Ereignisse angezeigt zwischen", "kFilterEventsBetween2" :"Willst Du diesen Filter löschen?", + "kFilterEventsSelectiveMon" :"für die ausgewählten Kameras", "kFilterOn" :"Filter an", "kFilterSettings" :"Filtereinstellungen", "kFitScreen" :"Bild anpassen", diff --git a/www/lang/locale-en.json b/www/lang/locale-en.json index abae59f6..b24ad8ef 100644 --- a/www/lang/locale-en.json +++ b/www/lang/locale-en.json @@ -136,6 +136,7 @@ "kFilterEvents" :"Filter Events", "kFilterEventsBetween1" :"You are viewing events between", "kFilterEventsBetween2" :"Do you want to delete this filter?", + "kFilterEventsSelectiveMon" :"for selective monitors", "kFilterOn" :"Filter On", "kFilterSettings" :"Filter Settings", "kFitScreen" :"fit screen", diff --git a/www/templates/devoptions.html b/www/templates/devoptions.html index 68f605cd..44825a20 100644 --- a/www/templates/devoptions.html +++ b/www/templates/devoptions.html @@ -8,7 +8,7 @@ <ion-nav-buttons side="right"> <button id="devoptions-move-2" class="button button-clear" ng-click="saveDevOptions()">{{'kSave' | translate}}</button> </ion-nav-buttons> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready"> <div class="list list-inset"> <span style="color:rgb(100,100,100)"> <i class="ion-android-settings" style="font-size:150%"></i> {{'kDeveloperOptionsFor'|translate}} diff --git a/www/templates/events-date-time-filter.html b/www/templates/events-date-time-filter.html index 9d7b765d..ad198746 100644 --- a/www/templates/events-date-time-filter.html +++ b/www/templates/events-date-time-filter.html @@ -1,5 +1,5 @@ <ion-view view-title="{{'kFilterEvents' | translate}}"> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready"> <label class="item item-input"> <span class="input-label">{{'kFromDate'|translate}}:</span> <input type="date" ng-model="$root.fromDate" max={{today}}> diff --git a/www/templates/events-modal.html b/www/templates/events-modal.html index d4f23bbb..24df4b1e 100644 --- a/www/templates/events-modal.html +++ b/www/templates/events-modal.html @@ -1,7 +1,7 @@ <div ng-controller="EventModalCtrl"> <!-- style="width: 90%; height: 90%; top: 5%; left: 5%; right: 5%; bottom: 5%;"--> <ion-modal-view cache-view="false"> - <ion-content style="background-color:#000000" ng-cloak> + <ion-content style="background-color:#000000" ng-cloak class="notch-ready"> <!-- alarm frames in snapshot--> @@ -76,7 +76,7 @@ <!-- <div style="max-width:100%; max-height:100%;" on-swipe-left="onSwipeEvent(nextId,1)" on-swipe-right="onSwipeEvent(prevId,-1)" > --> - <div on-swipe-left="onSwipeEvent(nextId,1)" on-swipe-right="onSwipeEvent(prevId,-1)" ng-style="{'height':$root.videoHeight+'px', 'width':$root.devWidth+'px'}"> + <div on-swipe-left="onSwipeEvent(nextId,1)" on-swipe-right="onSwipeEvent(prevId,-1)" ng-style="{'height':$root.videoHeight+'px', 'width':$root.devWidthIgnorePix+'px'}"> <videogular id="testaut_events_playwindow" vg-can-play="onCanPlay()" vg-native-fullscreen="videoObject.config.nativeFullScreen" vg-player-ready="onPlayerReady($API)" diff --git a/www/templates/events-modalgraph.html b/www/templates/events-modalgraph.html index 75f2ec15..dfc84bab 100644 --- a/www/templates/events-modalgraph.html +++ b/www/templates/events-modalgraph.html @@ -1,6 +1,6 @@ <div ng-controller="EventsModalGraphCtrl"> <ion-modal-view cache-view="false" style="width:80%;height:80%; top: 10%; left: 10%; right: 10%; bottom: 10%;"> - <ion-content ng-cloak on-double-tap="closeModal()" delegate-handle="eventgraph-modal-delegate"> + <ion-content class="notch-ready" ng-cloak on-double-tap="closeModal()" delegate-handle="eventgraph-modal-delegate"> <div data-tap-disabled="true"> <canvas id="eventchart" width="auto" height="70%"></canvas> </div> diff --git a/www/templates/events-popover.html b/www/templates/events-popover.html index 8ccc1c8f..923d693f 100644 --- a/www/templates/events-popover.html +++ b/www/templates/events-popover.html @@ -1,5 +1,5 @@ <ion-popover-view class="fit"> - <ion-content> + <ion-content class="notch-ready"> <div class="list" ng-click="popover.hide()"> <a class="item" ng-href="" ng-click="popover.hide();$state.go('app.events-date-time-filter');">{{'kFilterByDateTime' | translate}}</a> diff --git a/www/templates/events.html b/www/templates/events.html index c92bdffa..73b79fd0 100644 --- a/www/templates/events.html +++ b/www/templates/events.html @@ -24,7 +24,7 @@ </ion-header-bar> </div> <!-- collection repeat forces js scrolling, thing to remember --> - <ion-content ng-cloak on-tap="tapped();" delegate-handle="mainScroll" mouse-wheel-scroll on-scroll="scrolling();"> + <ion-content class="notch-ready" ng-cloak on-tap="tapped();" delegate-handle="mainScroll" mouse-wheel-scroll on-scroll="scrolling();" > <ion-refresher pulling-text="Pull to refresh..." on-refresh="doRefresh()"> </ion-refresher> <!-- needed for header-shrink so first item doesn't go below header--> @@ -51,20 +51,10 @@ <i class="ion-clock"></i> {{prettifyDate(event.Event.StartTime)}} {{tzAbbr}} </span> - <div ng-class="::{'row responsive-lg': thumbClass=='large', 'row': thumbClass=='small'}" - style="font-size:80%; color:rgb(110,110,110)"> - - - - - <!--</div>--> - <!--row--> - <!--<div class="row" style="font-size:80%; color:rgb(110,110,110)">--> - <!-- <div class="col">--> - <div class="col"> - <div class="item-text-wrap"> + <div class="row" style="font-size:80%; color:rgb(110,110,110)"> + <div class="col item-text-wrap"> <!-- data --> <!-- this ngswitch displays different icons - depending on the cause of the event --> + depending on the cause of the event --> <span ng-switch on="event.Event.Cause" ng-class="::{'largeThumbsSpan': thumbClass=='large', 'smallThumbsSpan': thumbClass=='small'}"> <span ng-switch-when="Motion"> <i class="ion-android-walk" style="font-size:150%;"></i> @@ -73,45 +63,38 @@ </span> <span ng-switch-when="Signal"> <i class="ion-wifi" style="font-size:150%;"></i> - <!--<i ng-class="(event.Event.DefaultVideo !== undefined && event.Event.DefaultVideo!='')? 'ion-ios-videocam':'ion-images'" style="float:left; padding-left:5px; font-size:100%;"></i>--> - </span> <span ng-switch-default> <i class="ion-ionic" style="font-size:150%;"></i> - - </span> <b><i ng-if="event.Event.Archived=='1'" class="ion-ios-flag" style="color:red"> </i>{{event.Event.MonitorName}}</b> </span> - <span ng-class="::{'largeThumbsSpan': thumbClass=='large', 'smallThumbsSpan': thumbClass=='small'}"> <i class="ion-images"></i> {{event.Event.Frames}} <i class="ion-ios-bell-outline"></i> {{event.Event.AlarmFrames}} <span style="font-size:80%; color:rgb(110,110,110)"> {{humanize(event.Event.Length)}} </span> - </span> - - <span ng-class="::{'largeThumbsSpan': thumbClass=='large', 'smallThumbsSpan': thumbClass=='small'}"> - <i class="ion-ios-pricetags-outline"></i> {{event.Event.Name}} - </span> - + <br/><i class="ion-ios-pricetags-outline"></i> {{event.Event.Name}} + <!-- for largeThumbs show image in this column --> + <div ng-if="loginData.eventViewThumbs!='none' && thumbClass=='large'"> + <br/><img bg-color="#6C7A89" ng-src="{{constructThumbnail(event)}}" + on-tap="closeIfOpen(event);openModalWithSnapshot(event)" width="{{event.Event.thumbWidth}}px" + height="{{event.Event.thumbHeight}}px" fallback-src="img/noimage.png" /> + </div> - <!-- <br/> Default video:{{event.Event.relativePath}}{{event.Event.DefaultVideo}}--> - </div> </div> <!-- col--> - <div class="col"> - <div ng-if="loginData.eventViewThumbs!='none'" - ng-class="::{'largeThumbs': thumbClass=='large', 'smallThumbs': thumbClass=='small'}"> - <img bg-color="#6C7A89" ng-src="{{constructThumbnail(event)}}" + <!-- 2 col format for small, 1 col format for large --> + <span ng-if="thumbClass=='small' && loginData.eventViewThumbs!='none'"> + <div class="col"> + <img bg-color="#6C7A89" ng-src="{{constructThumbnail(event)}}" on-tap="closeIfOpen(event);openModalWithSnapshot(event)" width="{{event.Event.thumbWidth}}px" height="{{event.Event.thumbHeight}}px" fallback-src="img/noimage.png" /> - </div> - </div> - <!--</div>--> - </div> + </div> <!--col---> + </span> <!-- thumbs --> + </div> <!--row--> <div ng-if="event.Event.Notes" class="row" style="font-size:80%; color:rgb(110,110,110)"> <i class="ion-clipboard"></i> {{event.Event.Notes}} </div> @@ -136,10 +119,6 @@ ng-click="closeIfOpen(event);openModal(event)"> <span translate="kFootage"></span> </button> - - - - </div> </span> </div> diff --git a/www/templates/eventserversettings.html b/www/templates/eventserversettings.html index ea5080aa..13803b2a 100644 --- a/www/templates/eventserversettings.html +++ b/www/templates/eventserversettings.html @@ -8,7 +8,7 @@ <ion-nav-buttons side="right"> <button class="button button-clear" ng-click="saveItems()">{{'kSave'|translate}}</button> </ion-nav-buttons> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready"> <div class="list list-inset"> {{'kEventServerConfig1' | translate }} </div> diff --git a/www/templates/help.html b/www/templates/help.html index 8a497c5e..1359dfa9 100644 --- a/www/templates/help.html +++ b/www/templates/help.html @@ -4,7 +4,7 @@ <button data-badge="{{$root.alarmCount}}" class="animated infinite tada button button-icon button-clear ion-ios-bell notification-badge" ng-click="handleAlarms();" ng-if="$root.isAlarm"></button> </ion-nav-buttons> - <ion-content class="padding" delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content class="notch-ready" delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> <p> <small>{{$root.appName}} v{{zmAppVersion}}</small> </p> diff --git a/www/templates/image-modal.html b/www/templates/image-modal.html index c1e0e5e6..b5bdaf9b 100644 --- a/www/templates/image-modal.html +++ b/www/templates/image-modal.html @@ -1,5 +1,5 @@ <ion-modal-view cache-view="false" style="background-color:#444444"> - <ion-content ng-cloak on-double-tap="closeModal();" scroll="false"> + <ion-content ng-cloak on-double-tap="closeModal();" scroll="false" class="notch-ready"> <div id="imagecontainer"> diff --git a/www/templates/important_message.html b/www/templates/important_message.html index 35c449e8..835eb44c 100644 --- a/www/templates/important_message.html +++ b/www/templates/important_message.html @@ -2,7 +2,7 @@ <ion-nav-buttons side="left"> <button class="button button-icon button-clear ion-navicon" ng-click="openMenu()"></button> </ion-nav-buttons> - <ion-content class="pin-background"> + <ion-content class="pin-background notch-ready"> <div style="margin-left:20px; margin-right:20px"> <center> <br /> diff --git a/www/templates/invalidapi.html b/www/templates/invalidapi.html index c73e8be7..1c5f8ddb 100644 --- a/www/templates/invalidapi.html +++ b/www/templates/invalidapi.html @@ -2,7 +2,7 @@ <ion-nav-buttons side="left"> <button class="button button-icon button-clear ion-navicon" ng-click="openMenu()"></button> </ion-nav-buttons> - <ion-content class="pin-background"> + <ion-content class="pin-background notch-ready"> <div style="margin-left:20px; margin-right:20px"> <center> <br /> diff --git a/www/templates/log.html b/www/templates/log.html index 2884c4bb..ae534ab6 100644 --- a/www/templates/log.html +++ b/www/templates/log.html @@ -22,7 +22,7 @@ <a class="button button-icon icon ion-android-download" ng-href="" ng-click="downloadLogs()"> </a> </div> </ion-nav-buttons> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready"> <!-- <h2> iCloud: </h2> {{cloudString}} diff --git a/www/templates/login.html b/www/templates/login.html index 617b79f5..797fde37 100644 --- a/www/templates/login.html +++ b/www/templates/login.html @@ -8,7 +8,7 @@ <ion-nav-buttons side="right"> <button id = 'testaut_settings_save' class="button button-clear" ng-click="saveItems()">{{'kSave' | translate}}</button> </ion-nav-buttons> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready"> <div class="item item-text-wrap item-input-inset"> {{'kServerName' | translate }}: <label class="item-input-wrapper"> diff --git a/www/templates/lowversion.html b/www/templates/lowversion.html index 440406b7..3f6c72cc 100644 --- a/www/templates/lowversion.html +++ b/www/templates/lowversion.html @@ -1,5 +1,5 @@ <ion-view view-title="{{$root.appName}}" hide-nav-bar="true" hide-back-button="true" cache-view="false"> - <ion-content class="pin-background"> + <ion-content class="pin-background notch-ready"> <div style="margin-left:20px; margin-right:20px"> <center> <br /> diff --git a/www/templates/menu.html b/www/templates/menu.html index 2a78bb6e..f71aba5c 100644 --- a/www/templates/menu.html +++ b/www/templates/menu.html @@ -14,7 +14,7 @@ <h1 class="title">{{'kMenuOptions'|translate}}</h1> </button> </ion-header-bar> - <ion-content has-header="true" mouse-wheel-scroll> + <ion-content has-header="true" mouse-wheel-scroll class="notch-ready"> <!-- <ion-scroll scrollbar-y="false" style="height:100%" >--> <ion-list> <!--<ion-item ng-click="navigateView('app.montage')" menu-close>--> diff --git a/www/templates/moment-mask.html b/www/templates/moment-mask.html index 6493e4be..851be5ff 100644 --- a/www/templates/moment-mask.html +++ b/www/templates/moment-mask.html @@ -6,7 +6,7 @@ <button class="button button-icon icon ion-close" ng-click="cancelMask()"></button> </div> </ion-header-bar> - <ion-content> + <ion-content class="notch-ready"> <div class="list"> <span ng-repeat="item in monitors"> diff --git a/www/templates/moment-popover.html b/www/templates/moment-popover.html index 6d2485ca..5d6a87be 100644 --- a/www/templates/moment-popover.html +++ b/www/templates/moment-popover.html @@ -1,5 +1,5 @@ <ion-popover-view class="fit"> - <ion-content> + <ion-content class="notch-ready"> <div class="list" ng-click="popover.remove()"> <a class="item" ng-href="" ng-click="popover.remove();getMoments('StartTime');"> diff --git a/www/templates/moment.html b/www/templates/moment.html index 9852b925..9a31a922 100644 --- a/www/templates/moment.html +++ b/www/templates/moment.html @@ -25,7 +25,7 @@ </div> - <ion-content delegate-handle="moment-delegate" overflow-scroll="false" mouse-wheel-scroll style="background-color:#444444"> + <ion-content delegate-handle="moment-delegate" overflow-scroll="false" mouse-wheel-scroll class="notch-ready" style="background-color:#444444"> <div ng-if="areImagesLoading" class="screen-note"> {{ 'kArrangingImages' | translate }}... </div> diff --git a/www/templates/monitors-modal.html b/www/templates/monitors-modal.html index 0ead585c..84c9049a 100644 --- a/www/templates/monitors-modal.html +++ b/www/templates/monitors-modal.html @@ -1,6 +1,6 @@ <div ng-controller="MonitorModalCtrl" ng-cloak> <ion-modal-view cache-view="false" style="background-color:#444444"> - <ion-content ng-cloak on-double-tap="closeModal();" scroll="false"> + <ion-content ng-cloak on-double-tap="closeModal();" scroll="false" class="notch-ready"> <div id="imagecontainer"> <ion-scroll on-scroll="checkZoom()" delegate-handle="imgscroll" has-bouncing=false min-zoom=1 diff --git a/www/templates/monitors.html b/www/templates/monitors.html index 4770b139..39674023 100644 --- a/www/templates/monitors.html +++ b/www/templates/monitors.html @@ -5,7 +5,7 @@ <button data-badge="{{$root.alarmCount}}" class="animated infinite tada button button-icon button-clear ion-ios-bell notification-badge" ng-click="handleAlarms();" ng-if="$root.isAlarm"></button> </ion-nav-buttons> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready"> <ion-refresher pulling-text="Pull to reload Monitors..." spinner="bubbles" on-refresh="doRefresh()"> </ion-refresher> <div style="float:right;margin-top:3px;margin-right:8px;"> diff --git a/www/templates/montage-history.html b/www/templates/montage-history.html index 82fb70f3..62b7e2a6 100644 --- a/www/templates/montage-history.html +++ b/www/templates/montage-history.html @@ -13,7 +13,7 @@ ng-click="handleAlarms();" ng-if="$root.isAlarm"></button> </ion-nav-buttons> <ion-content has-bouncing="false" style="background-color:#444444" delegate-handle="none" overflow-scroll="false" - mouse-wheel-scroll> + mouse-wheel-scroll class="notch-ready"> <div class="timeline_text"> {{'kFrom' | translate}}:{{prettifyDateTimeFirst(datetimeValueFrom.value)}} ({{humanizeTime(datetimeValueFrom.value)}}) <div ng-if="!isMultiPort">({{'kChromeMax' | translate}})</div> diff --git a/www/templates/montage.html b/www/templates/montage.html index 360e4a4a..62afc9f5 100644 --- a/www/templates/montage.html +++ b/www/templates/montage.html @@ -35,7 +35,7 @@ </button> </ion-nav-buttons> <ion-content ng-cloak has-bouncing="false" style="background-color:#444444" delegate-handle="montage-delegate" - overflow-scroll="false" padding="false"> + overflow-scroll="false" padding="false" class="notch-ready"> <div ng-if="areImagesLoading" class="screen-note"> {{ 'kArrangingImages' | translate }}... </div> diff --git a/www/templates/news.html b/www/templates/news.html index 2512bb4c..4cb13bb9 100644 --- a/www/templates/news.html +++ b/www/templates/news.html @@ -4,7 +4,7 @@ <button data-badge="{{$root.alarmCount}}" class="animated infinite tada button button-icon button-clear ion-ios-bell notification-badge" ng-click="handleAlarms();" ng-if="$root.isAlarm"></button> </ion-nav-buttons> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready"> <div class="list"> diff --git a/www/templates/reorder-modal.html b/www/templates/reorder-modal.html index 8d31ce22..c5f599ff 100644 --- a/www/templates/reorder-modal.html +++ b/www/templates/reorder-modal.html @@ -8,7 +8,7 @@ <button class="button button-small" ng-click="cancelReorder()">{{'kButtonCancel'|translate}}</button> </div> </ion-header-bar> - <ion-content> + <ion-content class="notch-ready"> <div class="list"> <span ng-repeat="item in copyMontage"> <a ng-class="{ 'item item-avatar item-icon-right' : item.Monitor.listDisplay == 'show', 'item item-avatar item-icon-right eye-background-red' : item.Monitor.listDisplay!='show' }" diff --git a/www/templates/state.html b/www/templates/state.html index bdad22d0..7954c7e1 100644 --- a/www/templates/state.html +++ b/www/templates/state.html @@ -4,7 +4,7 @@ <button data-badge="{{$root.alarmCount}}" class="animated infinite tada button button-icon button-clear ion-ios-bell notification-badge" ng-click="handleAlarms();" ng-if="$root.isAlarm"></button> </ion-nav-buttons> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll > + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready" > <ion-refresher pulling-text="{{'kPullToReload' | translate}}..." spinner="bubbles" on-refresh="doRefresh()"></ion-refresher> <ion-item> diff --git a/www/templates/timeline-modal.html b/www/templates/timeline-modal.html index 5b6c8694..ddbef952 100644 --- a/www/templates/timeline-modal.html +++ b/www/templates/timeline-modal.html @@ -1,6 +1,6 @@ <!-- style="width: 90%; height: 90%; top: 5%; left: 5%; right: 5%; bottom: 5%;"--> <ion-modal-view cache-view="false"> - <ion-content ng-cloak on-double-tap="closeModal()" delegate-handle="timeline-modal-delegate"> + <ion-content ng-cloak on-double-tap="closeModal()" delegate-handle="timeline-modal-delegate" class="notch-ready"> <div ng-controller="TimelineModalCtrl"> <br /> <div class="item item-divider">{{mName}} diff --git a/www/templates/timeline-popover.html b/www/templates/timeline-popover.html index e43e0605..f1a19d9a 100644 --- a/www/templates/timeline-popover.html +++ b/www/templates/timeline-popover.html @@ -1,5 +1,5 @@ <ion-popover-view class="fit"> - <ion-content> + <ion-content class="notch-ready"> <div class="list" ng-click="popover.hide()"> diff --git a/www/templates/timeline.html b/www/templates/timeline.html index 73a6c7c5..ca9f31f5 100644 --- a/www/templates/timeline.html +++ b/www/templates/timeline.html @@ -17,7 +17,7 @@ <button class="button button-icon button-clear ion-log-out" ng-click="zoom(0.2)"></button> --> </ion-nav-buttons> <!--<ion-content data-tap-disabled="true">--> - <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> + <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll class="notch-ready"> <div style="padding-left:15px; font-size:10px; color:grey"> {{prettify(fromDate)}} - {{prettify(toDate)}} {{tzAbbr}} ({{'kTimelineOnlyDisplaying1' | translate:translationData}}) diff --git a/www/templates/wizard.html b/www/templates/wizard.html index c929f877..c6dc957a 100644 --- a/www/templates/wizard.html +++ b/www/templates/wizard.html @@ -2,7 +2,7 @@ <ion-nav-buttons side="left"> <button class="button button-icon button-clear ion-navicon" ng-click="openMenu()"></button> </ion-nav-buttons> - <ion-content class="padding" overflow-scroll="false"> + <ion-content class="notch-ready" overflow-scroll="false"> <wizard on-finish="finishedWizard()"> <!-- portal url --> <wz-step wz-title="1" canexit="exitPortal"> diff --git a/www/templates/zm-portal-login.html b/www/templates/zm-portal-login.html index c3431cd4..fdddd042 100644 --- a/www/templates/zm-portal-login.html +++ b/www/templates/zm-portal-login.html @@ -1,5 +1,5 @@ <ion-view view-title="{{$root.appName}}" hide-nav-bar="true" hide-back-button="true" cache-view="false"> - <ion-content class="pin-background" scroll="false"> + <ion-content class="pin-background notch-ready" scroll="false"> <div style="margin-left:20px; margin-right:20px"> <center> <br /> |
