diff options
Diffstat (limited to 'www')
| -rw-r--r-- | www/js/PortalLoginCtrl.js | 64 | ||||
| -rw-r--r-- | www/js/ionicUtils.js | 12 | ||||
| -rw-r--r-- | www/templates/devoptions.html | 58 | ||||
| -rw-r--r-- | www/templates/events-date-time-filter.html | 37 | ||||
| -rw-r--r-- | www/templates/events-modal.html | 77 |
5 files changed, 68 insertions, 180 deletions
diff --git a/www/js/PortalLoginCtrl.js b/www/js/PortalLoginCtrl.js index 7c1936b1..f99932a2 100644 --- a/www/js/PortalLoginCtrl.js +++ b/www/js/PortalLoginCtrl.js @@ -3,11 +3,11 @@ /*This is for the loop closure I am using in line 143 */ /* jslint browser: true*/ /* global vis,cordova,StatusBar,angular,console,moment */ -angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionicPlatform', '$scope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', 'zmAutoLogin', '$ionicHistory', '$cordovaTouchID', 'EventServer', '$translate', function ($ionicPlatform, $scope, zm, NVRDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, zmAutoLogin, $ionicHistory, $cordovaTouchID, EventServer, $translate) { +angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionicPlatform', '$scope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', 'zmAutoLogin', '$ionicHistory', '$cordovaTouchID', 'EventServer', '$translate', function($ionicPlatform, $scope, zm, NVRDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, zmAutoLogin, $ionicHistory, $cordovaTouchID, EventServer, $translate) { $scope.$on('$ionicView.enter', - function () { + function() { NVRDataModel.debug("Inside Portal login Enter handler"); loginData = NVRDataModel.getLogin(); @@ -34,19 +34,19 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic // You can login either via touch ID or typing in your code if ($ionicPlatform.is('ios') && loginData.usePin) { $cordovaTouchID.checkSupport() - .then(function () { + .then(function() { // success, TouchID supported $cordovaTouchID.authenticate("") - .then(function () { + .then(function() { NVRDataModel.log("Touch Success"); // Don't assign pin as it may be alphanum unlock(true); }, - function () { + function() { NVRDataModel.log("Touch Failed"); }); - }, function (error) { + }, function(error) { NVRDataModel.log("TouchID not supported"); }); } else // touch was not used @@ -99,7 +99,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic // remove status is pin is empty //------------------------------------------------------------------------------- - $scope.pinChange = function () { + $scope.pinChange = function() { if ($scope.pindata.pin == null) { $scope.pindata.status = ""; } @@ -108,7 +108,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic //------------------------------------------------------------------------------- // unlock app if PIN is correct //------------------------------------------------------------------------------- - $scope.unlock = function () { + $scope.unlock = function() { // call with false meaning check for pin unlock(false); }; @@ -122,11 +122,11 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic var d = $q.defer(); zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0;color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i> " + $translate.instant('kAuthenticating') + "...</button>") - .then(function (data) // success + .then(function(data) // success { NVRDataModel.debug("2nd auth login worked"); NVRDataModel.getAPIversion() - .then(function (data) { + .then(function(data) { NVRDataModel.getKeyConfigParams(1); NVRDataModel.log("2nd auth:Got API version: " + data); $rootScope.apiVersion = data; @@ -158,9 +158,9 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic } // coming here means continue EventServer.refresh(); - - - + + + var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'montage'; //NVRDataModel.debug ("logging state transition"); NVRDataModel.debug("2nd Auth: Transitioning state to: " + @@ -169,7 +169,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic return; }, - function (error) { + function(error) { NVRDataModel.debug("2nd auth API failed, going to login"); d.reject("failed 2nd auth"); return (d.promise); @@ -178,7 +178,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic }, - function (error) { + function(error) { NVRDataModel.debug("2nd auth hack failed, going to login"); d.reject("failed 2nd auth"); return (d.promise); @@ -202,16 +202,16 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic // PIN is fine, or not set so lets login zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0;color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i> " + $translate.instant('kAuthenticating') + "...</button>") - .then(function (data) // success + .then(function(data) // success { NVRDataModel.debug("PortalLogin: auth success"); - + NVRDataModel.getKeyConfigParams(1); NVRDataModel.getTimeZone(); // $state.go("login" ,{"wizard": false}); //login was ok, so get API details NVRDataModel.getAPIversion() - .then(function (data) { + .then(function(data) { NVRDataModel.log("Got API version: " + data); $rootScope.apiVersion = data; var ld = NVRDataModel.getLogin(); @@ -225,7 +225,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic if (NVRDataModel.versionCompare(data, zm.recommendedAppVersion) == -1 && data != "0.0.0") { - // console.log (">>>>>>>>>>>>> HERE AND VERSION SAYS " +NVRDataModel.versionCompare(data, zm.recommendedAppVersion)); + // console.log (">>>>>>>>>>>>> HERE AND VERSION SAYS " +NVRDataModel.versionCompare(data, zm.recommendedAppVersion)); //console.log ("GOING TO IMPORTANT"); $state.go('importantmessage', { "ver": data @@ -246,25 +246,25 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic // coming here means continue // console.log (">>>>>>>>>>>>>>>>>>>>>>>>>NEVER"); EventServer.refresh(); - - - + + + var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'montage'; NVRDataModel.debug("logging state transition"); NVRDataModel.debug("Transitioning state to: " + statetoGo + " with param " + JSON.stringify($rootScope.lastStateParam)); - - + + $state.go(statetoGo, $rootScope.lastStateParam); return; - + }, - function (error) { // API Error + function(error) { // API Error NVRDataModel.log("API Error handler: going to login getAPI returned error: " + JSON.stringify(error)); //NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed']); NVRDataModel.debug("Doing the Aaron Hack after 1 sec...."); - $timeout(function () { + $timeout(function() { tryLoggingSecondTimeHack() .then(function success(s) { NVRDataModel.log("2nd time login hack worked!, nothing to do"); @@ -275,7 +275,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic "wizard": false }); }); - return; + return; }, 1000); @@ -304,7 +304,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic NVRDataModel.debug("Going to events"); $state.go("events", { "id": 0, - "playEvent":false + "playEvent": false }, { reload: true }); @@ -323,7 +323,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic }, // coming here means auth error // so go back to login - function (error) { + function(error) { NVRDataModel.debug("PortalLogin: error authenticating " + JSON.stringify(error)); if (!$rootScope.userCancelledAuth) { @@ -353,7 +353,7 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic element.addClass("animated shake") .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', - function () { + function() { element.removeClass("animated shake"); }); } @@ -369,4 +369,4 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic - }]);
\ No newline at end of file +}]);
\ No newline at end of file diff --git a/www/js/ionicUtils.js b/www/js/ionicUtils.js index 9b8a21ff..ae05293b 100644 --- a/www/js/ionicUtils.js +++ b/www/js/ionicUtils.js @@ -6,13 +6,11 @@ angular.module('ionic.utils', []) -.factory('$localstorage', ['$window', function($window) { +.factory('$localstorage', ['$window', function($window) { return { - - init: function() - { - }, - + + init: function() {}, + set: function(key, value) { $window.localStorage[key] = value; }, @@ -26,4 +24,4 @@ angular.module('ionic.utils', []) return JSON.parse($window.localStorage[key] || '{}'); } }; -}]); +}]);
\ No newline at end of file diff --git a/www/templates/devoptions.html b/www/templates/devoptions.html index ceca335c..cf207327 100644 --- a/www/templates/devoptions.html +++ b/www/templates/devoptions.html @@ -1,45 +1,33 @@ <ion-view view-title="{{'kDevOptions' | translate}}"> <ion-nav-buttons side="left"> <button class="button button-icon button-clear ion-navicon" ng-click="openMenu()"></button> - <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-nav-buttons side="right"> <button class="button button-clear" ng-click="saveDevOptions()">Save</button> </ion-nav-buttons> - - - <ion-content scroll-sista delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll > + <ion-content scroll-sista delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> <div class="list list-inset"> <span style="color:rgb(100,100,100)"> <i class="ion-android-settings" style="font-size:150%"></i> {{'kDeveloperOptionsFor'|translate}} {{loginData.serverName}} </span> - <div class="item item-input-inset"> {{'kFrameUpdate'|translate}} ({{'kSec'|translate}}.) - <label class="item-input-wrapper"> <input type="tel" placeholder="min is 1s" ng-model="loginData.refreshSec"> </label> </div> - - <label> <ion-toggle ng-model="loginData.use24hr" ng-checked="{{loginData.use24hr}}" toggle-class="toggle-calm">{{'kEnable24hr' | translate}}</ion-toggle> </label> - <label> <ion-toggle ng-model="loginData.useLocalTimeZone" ng-checked="{{loginData.useLocalTimeZone}}" ng-disabled="!isTzSupported()" toggle-class="toggle-calm">{{'kLocalTimeZone' | translate}}<span ng-if="!isTzSupported()"><p>{{'kTimeZoneNotSupported' | translate}}</p></span><span ng-if="isTzSupported()"><p>{{'kServerTimeZone' | translate}}:{{getTimeZoneNow()}}</p></span></ion-toggle> </label> - <div ng-if="$root.platformOS=='android'"> <label> <ion-toggle ng-model="loginData.exitOnSleep" ng-checked="{{loginData.exitOnSleep}}" toggle-class="toggle-calm">{{'kExitAppBackground' | translate}}</ion-toggle> </label> </div> - <!-- <label> <ion-toggle ng-model="loginData.useNphZms" @@ -53,14 +41,12 @@ toggle-class="toggle-calm">use ZMS for events footage</ion-toggle> </label> --> - <div class="item item-input-inset"> {{'kMaxMonitorsMontage' | translate }} <label class="item-input-wrapper"> <input type="tel" placeholder="be careful" ng-model="loginData.maxMontage"> </label> </div> - <!-- <div class="item item-input-inset"> maxfps for streaming @@ -69,28 +55,24 @@ </label> </div> --> - <div class="item item-input-inset"> {{'kMontageImageScale' | translate}}(%) <label class="item-input-wrapper"> <input type="tel" placeholder="max is 70" ng-model="loginData.montageQuality"> </label> </div> - <div class="item item-input-inset"> {{'kEventSingleImageScale' | translate}}(%) <label class="item-input-wrapper"> <input type="tel" placeholder="" ng-model="loginData.singleImageQuality"> </label> </div> - <div class="item item-input-inset"> {{'kMonitorSingleImageScale' | translate}}(%) <label class="item-input-wrapper"> <input type="tel" placeholder="" ng-model="loginData.monSingleImageQuality"> </label> </div> - <!--<div class="item item-input-inset"> {{'kResumeDelay' | translate}}(ms) <label class="item-input-wrapper"> @@ -99,91 +81,69 @@ </label> </div>--> - <div class="item item-input-inset"> {{'kEventMontageImageScale'|translate}}(%) <label class="item-input-wrapper"> <input type="tel" placeholder="" ng-model="loginData.montageHistoryQuality"> </label> </div> - <div class="item item-input-inset"> {{'kMaxItemsForTimeline' | translate}} <label class="item-input-wrapper"> <input type="tel" placeholder="" ng-model="loginData.graphSize"> <br/> - </label> <br/> </div> - <div class="item item-input-inset"> {{'kMinAlarmCount' | translate}} <label class="item-input-wrapper"> <input type="tel" placeholder="" ng-model="loginData.minAlarmCount"> <br/> - </label> <br/> </div> - <div class="item" style="background-color:#C8F7C5" ng-if="loginData.graphSize > 5000"> <label class="animated fadeInDown item-text-wrap"> - {{'kWarningLargeTimeline' | translate}} - </label> </div> - <label> - <ion-toggle ng-model="loginData.disableAlarmCheckMontage" ng-checked="loginData.disableAlarmCheckMontage" toggle-class="toggle-calm">{{'kDisableAlarmMontage' | translate}}<p>{{'kDisableAlarmMontageSub' | translate}}</p></ion-toggle> + <ion-toggle ng-model="loginData.disableAlarmCheckMontage" ng-checked="loginData.disableAlarmCheckMontage" toggle-class="toggle-calm">{{'kDisableAlarmMontage' | translate}} + <p>{{'kDisableAlarmMontageSub' | translate}}</p> + </ion-toggle> </label> - <label> <ion-toggle ng-model="loginData.enableLogs" ng-checked="{{loginData.enableLogs}}" toggle-class="toggle-calm">{{'kEnableLogs' | translate}}</ion-toggle> </label> - - - - <div class="item item-input-inset" > + <div class="item item-input-inset"> {{'kCycleMonitorsInterval'|translate}}({{'kSec'|translate}}.) <label class="item-input-wrapper"> <input type="tel" placeholder="" ng-model="loginData.cycleMonitorsInterval"> </label> </div> - <label> - <ion-toggle ng-if="loginData.enableLogs" ng-model="loginData.enableDebug" ng-checked="{{loginData.enableDebug}}" toggle-class="toggle-calm">{{'kEnableDebug' | translate}}</ion-toggle> </label> - <label> <ion-toggle ng-model="loginData.canSwipeMonitors" ng-checked="{{loginData.canSwipeMonitors}}" toggle-class="toggle-calm">{{'kSwipeToChangeMon' | translate}}</ion-toggle> </label> - <label> <ion-toggle ng-model="loginData.forceImageModePath" ng-checked="{{loginData.forceImageModePath}}" toggle-class="toggle-calm"> {{'kForceImagePath' | translate}}</ion-toggle> </label> - - - <!-- <label> <ion-toggle ng-model="loginData.reachability" ng-checked="{{loginData.reachability}}" toggle-class="toggle-calm"> {{'kReachability' | translate}}</ion-toggle> </label> --> - <label> <ion-toggle ng-model="loginData.enableBlog" ng-checked="{{loginData.enableBlog}}" toggle-class="toggle-calm"> {{'kEnableNewsUpdates' | translate}}</ion-toggle> </label> - - - <label ng-if = "$root.platformOS != 'desktop'"> - <ion-toggle ng-model="loginData.disableNative" ng-checked="{{loginData.disableNative}}" toggle-class="toggle-calm"> {{'kDisableNative' | translate}}<p>{{'kDisableNativeSub' | translate}}</p></ion-toggle> - + <label ng-if="$root.platformOS != 'desktop'"> + <ion-toggle ng-model="loginData.disableNative" ng-checked="{{loginData.disableNative}}" toggle-class="toggle-calm"> {{'kDisableNative' | translate}} + <p>{{'kDisableNativeSub' | translate}}</p> + </ion-toggle> </label> - - </div> </ion-content> </ion-view> diff --git a/www/templates/events-date-time-filter.html b/www/templates/events-date-time-filter.html index af97ad60..33370ba8 100644 --- a/www/templates/events-date-time-filter.html +++ b/www/templates/events-date-time-filter.html @@ -1,38 +1,27 @@ <ion-view view-title="{{'kFilterEvents' | translate}}"> - - - - <ion-content scroll-sista delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll > + <ion-content scroll-sista delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> <label class="item item-input"> <span class="input-label">{{'kFromDate'|translate}}:</span> <input type="date" ng-model="$root.fromDate" max={{today}}> </label> <label class="item item-input"> - <span class="input-label">{{'kFromTime'|translate}}</span> - <input type="time" ng-model="$root.fromTime"> + <span class="input-label">{{'kFromTime'|translate}}</span> + <input type="time" ng-model="$root.fromTime"> </label> <label class="item item-input"> - <span class="input-label">{{'kToDate'|translate}}</span> - <input type="date" ng-model="$root.toDate" max={{today}}> + <span class="input-label">{{'kToDate'|translate}}</span> + <input type="date" ng-model="$root.toDate" max={{today}}> </label> <label class="item item-input"> - <span class="input-label">{{'kToTime'|translate}}</span> - <input type="time" ng-model="$root.toTime"> - </label> - + <span class="input-label">{{'kToTime'|translate}}</span> + <input type="time" ng-model="$root.toTime"> + </label> <br/> <center> - <button class="button" - ng-click="saveFilters();" > {{'kSave'|translate}} - </button> - <button class="button" - ng-click="removeFilters();" > {{'kReset'|translate}} - </button> - - - -</center> - + <button class="button" ng-click="saveFilters();"> {{'kSave'|translate}} + </button> + <button class="button" ng-click="removeFilters();"> {{'kReset'|translate}} + </button> + </center> </ion-content> - </ion-view> diff --git a/www/templates/events-modal.html b/www/templates/events-modal.html index b71cf751..6574ea9e 100644 --- a/www/templates/events-modal.html +++ b/www/templates/events-modal.html @@ -1,51 +1,30 @@ <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:#444444" ng-cloak> - + <ion-content style="background-color:#444444" ng-cloak> <ion-scroll has-bouncing=false min-zoom=1 zooming="true" direction="xy" style="width: 100%; " delegate-handle="imgscroll" on-swipe-left="onSwipeEvent(nextId,1)" on-swipe-right="onSwipeEvent(prevId,-1)" overflow-scroll="false"> <div id="full-screen-event" style="height: 100vh;"> - - - - <!-- route via ZMS --> - <div ng-if="( (defaultVideo=='') || (loginData.enableh264==false)) && (loginData.useNphZmsForEvents==true)"> - <!--<div style="color:white">connkey:{{connKey}}</div>--> <div style="width:100vw; height:100vh;"> <img image-spinner-src="{{loginData.streamingurl}}/nph-zms?source=event&mode=jpeg&event={{eventId}}&frame=1&replay={{currentStreamMode}}&rate=100&connkey={{connKey}}&scale={{singleImageQuality}}{{$root.authSession}}" ng-class="{'object-fit_cover':imageFit==false, 'object-fit_contain':imageFit==true}" on-double-tap="closeModal();" /> - <div ng-if="isPaused" style="position:absolute; top:50%; left:50%;white-space:nowrap;overflow:hidden;z-index:999" class="header-paused"> <i class="ion-pause"></i> {{'kPaused' | translate}} </div> - </div> - - </div> - <!-- no default video --> - <div ng-if="defaultVideo!==undefined && defaultVideo!='' && loginData.enableh264 == true"> - <div ng-if="videoIsReady" class="videogular-full-container" > - - <!--<video width="320" height="240" controls> + <div ng-if="videoIsReady" class="videogular-full-container"> + <!--<video width="320" height="240" controls> <source src="" dynamic-url dynamic-url-src="{{video_url}}"> </video>--> - - - - <videogular vg-theme="videoObject.config.theme" vg-complete="playbackFinished()" on-double-tap="closeModal();" vg-autoplay="true" vg-responsive="true"> - + <videogular vg-theme="videoObject.config.theme" vg-complete="playbackFinished()" on-double-tap="closeModal();" vg-autoplay="true" vg-responsive="true"> <vg-media vg-src="videoObject.config.sources" vg-native-controls="false"> </vg-media> - <vg-overlay-play></vg-overlay-play> - - <vg-controls> <vg-play-pause-button></vg-play-pause-button> <vg-scrub-bar> @@ -57,24 +36,15 @@ <vg-mute-button></vg-mute-button> </vg-volume> </vg-controls> - - </videogular> - </div> - <div id="event_canvas_video"> + <div id="event_canvas_video"> <canvas id="eventchart" width="100%" height="20px"></canvas> </div> - </div> - - - - </div> <!-- 100vh --> - </ion-scroll> - + </ion-scroll> <div ng-if="( (defaultVideo=='') || (loginData.enableh264==false)) && (loginData.useNphZmsForEvents==true)"> <div id="event_canvas"> <canvas style="padding-left:23px; @@ -89,64 +59,35 @@ @{{currentRate}}x {{'kAt' | translate}}:{{currentProgress.progress}}s </div> </div> - </ion-content> - - - </ion-modal-view> - - <nav mfb-menu position="tr" effect="zoomin" label="{{'kCollapse'|translate}}" active-icon="ion-chevron-up" resting-icon="ion-chevron-down" toggling-method="click"> - <a mfb-button icon="ion-arrow-right-c" label="{{'kNextEvent'|translate}}" ng-click="jumpToEvent(nextId,1);"></a> <a mfb-button icon="ion-arrow-left-c" label="{{'kPrevEvent'|translate}}" ng-click="jumpToEvent(prevId,-1);"></a> <a mfb-button icon="ion-arrow-resize" label="{{imageFit?'fill screen':'fit screen'}}" ng-click="scaleImage();"></a> - <a mfb-button icon="ion-close" label="{{'kExitEventView' | translate}}" ng-click="closeModal()"> </a> - </nav> - <nav ng-if="loginData.useNphZmsForEvents" mfb-menu position="br" effect="zoomin" label="collapse" active-icon="ion-chevron-down" resting-icon="ion-chevron-up" toggling-method="click"> - - <a mfb-button icon="ion-skip-backward" label="{{'kFastRewind'|translate}}" ng-click="adjustSpeed('fr');"></a> <a mfb-button icon="ion-skip-forward" label="{{'kFastForward'|translate}}" ng-click="adjustSpeed('ff');"></a> <a mfb-button icon="ion-play" label="{{'kNormalPlay'|translate}}" ng-click="adjustSpeed('np');"></a> - - - - <a mfb-button icon="ion-pause" label="{{'kPause'|translate}}" ng-click="adjustSpeed('p');"> </a> - </nav> - - - - <div class="events-range-modal-text">{{mName}} <i class="ion-arrow-right-b"></i> {{humanizeTime}} ({{d_eventId}}) </div> - - <div id="flyoutmenu" style="position:absolute;bottom:100px;left:10px"> + <div class="events-range-modal-text">{{mName}} <i class="ion-arrow-right-b"></i> {{humanizeTime}} ({{d_eventId}}) </div> + <div id="flyoutmenu" style="position:absolute;bottom:100px;left:10px"> <ul> <li ng-if="defaultVideo==''"> <a href="" ng-click="toggleGapless()"> <i class="ion-ios-loop-strong"></i>-{{loginData.gapless? ('kOn' | translate): ('kOff' | translate)}}</a> </li> - <li ng-if="defaultVideo==''"> <a href="" ng-click="saveEventImageToPhoneWithPerms(false)"> <i class="ion-ios-camera"></i></a> </li> - <li ng-if="defaultVideo==''"> <a href="" ng-click="saveEventImageToPhoneWithPerms(true)"> <i class="ion-android-notifications"></i></a> </li> - <li ng-if="$root.isAlarm"> <a data-badge="{{$root.alarmCount}}" class="notification-badge animated infinite tada" href="" ng-click="handleAlarms()"><i class="ion-ios-bell"></i></a> </li> - - - </ul> - </div> - -</div>
\ No newline at end of file +</div> |
