summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/js/PortalLoginCtrl.js64
-rw-r--r--www/js/ionicUtils.js12
-rw-r--r--www/templates/devoptions.html58
-rw-r--r--www/templates/events-date-time-filter.html37
-rw-r--r--www/templates/events-modal.html77
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>&nbsp;" + $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>&nbsp;" + $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}}.)&nbsp;
-
<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 }}&nbsp;
<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&nbsp;
@@ -69,28 +55,24 @@
</label>
</div>
-->
-
<div class="item item-input-inset">
{{'kMontageImageScale' | translate}}(%)&nbsp;
<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}}(%)&nbsp;
<label class="item-input-wrapper">
<input type="tel" placeholder="" ng-model="loginData.singleImageQuality">
</label>
</div>
-
<div class="item item-input-inset">
{{'kMonitorSingleImageScale' | translate}}(%)&nbsp;
<label class="item-input-wrapper">
<input type="tel" placeholder="" ng-model="loginData.monSingleImageQuality">
</label>
</div>
-
<!--<div class="item item-input-inset">
{{'kResumeDelay' | translate}}(ms)&nbsp;
<label class="item-input-wrapper">
@@ -99,91 +81,69 @@
</label>
</div>-->
-
<div class="item item-input-inset">
{{'kEventMontageImageScale'|translate}}(%)&nbsp;
<label class="item-input-wrapper">
<input type="tel" placeholder="" ng-model="loginData.montageHistoryQuality">
</label>
</div>
-
<div class="item item-input-inset">
{{'kMaxItemsForTimeline' | translate}}&nbsp;
<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}}&nbsp;
<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}}.)&nbsp;
<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">
&nbsp;<i class="ion-pause"></i> {{'kPaused' | translate}}&nbsp;
</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}}&nbsp;<i class="ion-arrow-right-b"></i>&nbsp;{{humanizeTime}} ({{d_eventId}}) </div>
-
- <div id="flyoutmenu" style="position:absolute;bottom:100px;left:10px">
+ <div class="events-range-modal-text">{{mName}}&nbsp;<i class="ion-arrow-right-b"></i>&nbsp;{{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>