diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2020-05-01 11:02:34 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2020-05-01 11:02:34 -0400 |
| commit | d8953a069365e51000aa0e86e38bdd6bd251f2f4 (patch) | |
| tree | bc94c4e174e08d9462cdb99f5cd922e3fe948f8f | |
| parent | f13ae545e81fee9663a9a06177602efab5cfbdf0 (diff) | |
#933 add back spaces, 1.32 breaks. Make encoding optional in dev settings
| -rw-r--r-- | config.xml | 5 | ||||
| -rw-r--r-- | package.json | 8 | ||||
| -rw-r--r-- | www/js/EventCtrl.js | 2 | ||||
| -rw-r--r-- | www/js/EventDateTimeFilterCtrl.js | 4 | ||||
| -rw-r--r-- | www/js/EventModalCtrl.js | 10 | ||||
| -rw-r--r-- | www/js/MomentCtrl.js | 4 | ||||
| -rw-r--r-- | www/js/MontageCtrl.js | 13 | ||||
| -rw-r--r-- | www/js/MontageHistoryCtrl.js | 4 | ||||
| -rw-r--r-- | www/js/NVR.js | 22 | ||||
| -rw-r--r-- | www/js/TimelineCtrl.js | 6 | ||||
| -rwxr-xr-x | www/js/app.js | 18 | ||||
| -rw-r--r-- | www/lang/locale-en.json | 1 | ||||
| -rw-r--r-- | www/templates/devoptions.html | 6 |
13 files changed, 65 insertions, 38 deletions
@@ -1,5 +1,5 @@ <?xml version='1.0' encoding='utf-8'?> -<widget android-packageName="com.pliablepixels.zmninja_pro" id="com.pliablepixels.zmninja_pro" ios-CFBundleIdentifier="com.pliablepixels.zmninja-pro" version="1.4.004" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0"> +<widget android-packageName="com.pliablepixels.zmninja_pro" id="com.pliablepixels.zmninja_pro" ios-CFBundleIdentifier="com.pliablepixels.zmninja-pro" version="1.4.005" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <name>zmNinja</name> <description> High performance ZoneMinder client @@ -186,9 +186,6 @@ <plugin name="cordova-plugin-app-version" spec="0.1.9" /> <plugin name="cordova-plugin-inappbrowser" spec="https://github.com/apache/cordova-plugin-inappbrowser.git" /> <plugin name="cordova-plugin-statusbar" spec="~2.4.4-dev" /> - <plugin name="cordova-plugin-ionic-webview" spec="https://github.com/pliablepixels/cordova-plugin-ionic-webview.git"> - <variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" /> - </plugin> <plugin name="cordova-plugin-media-pp-fork" spec="^1.0.2-dev" /> <engine name="android" spec="8.0.0" /> <engine name="ios" spec="5.1.1" /> diff --git a/package.json b/package.json index 97cfc2b9..dbae1d5f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "zmninjapro", "description": "Home security mobile app for ZoneMinder", - "version":"1.4.004", + "version": "1.4.005", "displayName": "zmNinja", "author": "Pliable Pixels", "license": "custom see LICENSE.md", @@ -61,9 +61,6 @@ "cordova-plugin-inappbrowser": {}, "cordova-plugin-app-version": {}, "cordova-plugin-statusbar-pp-fork": {}, - "cordova-plugin-ionic-webview": { - "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+" - }, "cordova-plugin-media-pp-fork": {} } }, @@ -89,7 +86,6 @@ "cordova-plugin-inappbrowser": "git+https://github.com/apache/cordova-plugin-inappbrowser.git", "cordova-plugin-insomnia": "^4.3.0", "cordova-plugin-ionic-keyboard": "2.2.0", - "cordova-plugin-ionic-webview": "git+https://github.com/pliablepixels/cordova-plugin-ionic-webview.git", "cordova-plugin-media-pp-fork": "^1.0.2-dev", "cordova-plugin-multi-window": "0.0.3", "cordova-plugin-network-information": "^2.0.2", @@ -228,4 +224,4 @@ ] } } -} +}
\ No newline at end of file diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js index 30c94874..40762f6b 100644 --- a/www/js/EventCtrl.js +++ b/www/js/EventCtrl.js @@ -1875,7 +1875,7 @@ angular.module('zmApp.controllers') //https://server/zm/api/events/consoleEvents/5%20minute.json var ld = NVR.getLogin(); - var af = "/"+"AlarmFrames>=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); + var af = "/"+"AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); if (ld.objectDetectionFilter) { af = af + '/'+'Notes REGEXP:detected:'; diff --git a/www/js/EventDateTimeFilterCtrl.js b/www/js/EventDateTimeFilterCtrl.js index 9e834f67..e2d7b22e 100644 --- a/www/js/EventDateTimeFilterCtrl.js +++ b/www/js/EventDateTimeFilterCtrl.js @@ -154,11 +154,11 @@ angular.module('zmApp.controllers') for (var i=0; i < $scope.monitors.length; i++) { if ($scope.monitors[i].Monitor.isChecked) { totalChecked += 1; - includeString = includeString + '/'+'MonitorId=:'+$scope.monitors[i].Monitor.Id; + includeString = includeString + '/'+'MonitorId =:'+$scope.monitors[i].Monitor.Id; } else { totalUnchecked +=1; - excludeString = excludeString + '/'+'MonitorId!=:'+$scope.monitors[i].Monitor.Id; + excludeString = excludeString + '/'+'MonitorId !=:'+$scope.monitors[i].Monitor.Id; } } if (!totalUnchecked) { diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js index c93bd8f4..228817c5 100644 --- a/www/js/EventModalCtrl.js +++ b/www/js/EventModalCtrl.js @@ -1479,19 +1479,19 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro var loginData = NVR.getLogin(); var nextEvent = loginData.apiurl + "/events/index" + "/StartTime >:" + currentEvent.Event.StartTime + - ($scope.followSameMonitor == '1' ? "/"+"MonitorId=:" + currentEvent.Monitor.Id : "") ; + ($scope.followSameMonitor == '1' ? "/"+"MonitorId =:" + currentEvent.Monitor.Id : "") ; if ($scope.useFilters) { - nextEvent = nextEvent + "/"+"AlarmFrames>=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); + nextEvent = nextEvent + "/"+"AlarmFrames >=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); } nextEvent = nextEvent + ".json?sort=StartTime&direction=asc&limit=1"+$rootScope.authSession; var prevEvent = loginData.apiurl + "/events/index" + - "/"+"StartTime<:" + currentEvent.Event.StartTime + - ($scope.followSameMonitor == '1' ? "/"+"MonitorId=:"+ currentEvent.Monitor.Id : ""); + "/"+"StartTime <:" + currentEvent.Event.StartTime + + ($scope.followSameMonitor == '1' ? "/"+"MonitorId =:"+ currentEvent.Monitor.Id : ""); if ($scope.useFilters) { - prevEvent = prevEvent + "/"+"AlarmFrames>=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); + prevEvent = prevEvent + "/"+"AlarmFrames >=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); } prevEvent = prevEvent + ".json?sort=StartTime&direction=desc&limit=1"+$rootScope.authSession; diff --git a/www/js/MomentCtrl.js b/www/js/MomentCtrl.js index 07f8b09d..a990343a 100644 --- a/www/js/MomentCtrl.js +++ b/www/js/MomentCtrl.js @@ -73,7 +73,7 @@ var masonry = null; excludeMonitorsFilter = ""; for (var i = 0; i < excludeMonitors.length; i++) { - excludeMonitorsFilter = excludeMonitorsFilter + "/"+"MonitorId!=:" + excludeMonitors[i]; + excludeMonitorsFilter = excludeMonitorsFilter + "/"+"MonitorId !=:" + excludeMonitors[i]; } NVR.debug("Constructed Monitor Filter =" + excludeMonitorsFilter); } @@ -785,7 +785,7 @@ var masonry = null; var ld = NVR.getLogin(); // in API, always sort by StartTime so all monitors are represented - var myurl = ld.apiurl + "/events/index/"+"AlarmFrames>=:1" + excludeMonitorsFilter + "/"+"StartTime<=:" + timeTo + "/"+"EndTime>=:" + timeFrom + ".json?sort=" + "StartTime" + "&direction=desc"+$rootScope.authSession; + var myurl = ld.apiurl + "/events/index/"+"AlarmFrames >=:1" + excludeMonitorsFilter + "/"+"StartTime <=:" + timeTo + "/"+"EndTime >=:" + timeFrom + ".json?sort=" + "StartTime" + "&direction=desc"+$rootScope.authSession; NVR.debug("Retrieving " + myurl); diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js index 6facc5be..90cfac1c 100644 --- a/www/js/MontageCtrl.js +++ b/www/js/MontageCtrl.js @@ -583,16 +583,16 @@ angular.module('zmApp.controllers') // https:///zm/api/events/index/MonitorId=:2.json?sort=StartTime&direction=desc&limit=1 var apiurl = ld.apiurl +'/events/index'; // we need some interval or it errors - apiurl += "/"+"MonitorId=:" + monitor.Monitor.Id; + apiurl += "/"+"MonitorId =:" + monitor.Monitor.Id; if (monitor.Monitor.Id in ld.lastEventCheckTimes) { // now is server TZ time var now = ld.lastEventCheckTimes[monitor.Monitor.Id]; - apiurl += "/StartTime>:" + now; + apiurl += "/StartTime >:" + now; } - apiurl += "/"+"AlarmFrames>=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); + apiurl += "/"+"AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); if (ld.objectDetectionFilter) { apiurl +='/'+'Notes REGEXP:detected:'; } @@ -919,6 +919,7 @@ angular.module('zmApp.controllers') if ($scope.MontageMonitors[i].Monitor.listDisplay == 'show') NVR.killLiveStream($scope.MontageMonitors[i].Monitor.connKey, $scope.MontageMonitors[i].Monitor.controlURL); } // in context of timeout + $scope.reorder = { selected:false }; @@ -932,12 +933,18 @@ angular.module('zmApp.controllers') $scope.modal = modal; $scope.reOrderActive = true; $scope.modal.show(); + $scope.reorder = { + selected:false + }; }); }); } else { + $scope.reorder = { + selected:false + }; $ionicModal.fromTemplateUrl('templates/reorder-modal.html', { scope: $scope, animation: 'slide-in-up', diff --git a/www/js/MontageHistoryCtrl.js b/www/js/MontageHistoryCtrl.js index 4363099a..50ed1430 100644 --- a/www/js/MontageHistoryCtrl.js +++ b/www/js/MontageHistoryCtrl.js @@ -264,7 +264,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc function getNextSetHistory() { // grab events that start on or after the time - apiurl = ld.apiurl + "/events/index/"+"StartTime>=:" + TimeObjectFrom + "/"+"AlarmFrames>=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json?sort=StartTime&direction=asc"+$rootScope.authSession; + apiurl = ld.apiurl + "/events/index/"+"StartTime >=:" + TimeObjectFrom + "/"+"AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json?sort=StartTime&direction=asc"+$rootScope.authSession; NVR.log("Grabbing history using: " + apiurl); // make sure there are no more than 5 active streams (noevent is ok) $scope.currentLimit = $scope.monLimit; @@ -357,7 +357,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc for (i = 0; i < $scope.MontageMonitors.length; i++) { //console.log("Fair chance check for " + $scope.MontageMonitors[i].Monitor.Name); if ($scope.MontageMonitors[i].Monitor.eventUrl == 'img/noimage.png') { - var indivGrab = ld.apiurl + "/events/index/MonitorId:" + $scope.MontageMonitors[i].Monitor.Id + "/"+"StartTime>=:" + TimeObjectFrom + "/"+"AlarmFrames>=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json?"+$rootScope.authSession; + var indivGrab = ld.apiurl + "/events/index/MonitorId:" + $scope.MontageMonitors[i].Monitor.Id + "/"+"StartTime >=:" + TimeObjectFrom + "/"+"AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json?"+$rootScope.authSession; NVR.debug("Monitor " + $scope.MontageMonitors[i].Monitor.Id + ":" + $scope.MontageMonitors[i].Monitor.Name + " does not have events, trying " + indivGrab); var p = getExpandedEvents(i, indivGrab); promises.push(p); diff --git a/www/js/NVR.js b/www/js/NVR.js index 2ce30d9b..e6eadfd8 100644 --- a/www/js/NVR.js +++ b/www/js/NVR.js @@ -21,7 +21,7 @@ angular.module('zmApp.controllers') DO NOT TOUCH zmAppVersion It is changed by sync_version.sh */ - var zmAppVersion = "1.4.004"; + var zmAppVersion = "1.4.005"; var isBackground = false; var justResumed = false; @@ -222,6 +222,7 @@ angular.module('zmApp.controllers') 'obfuscationScheme': 'lzs', // or 'aes' 'showAnimation': true, 'montageHideFooter': false, + 'httpCordovaNoEncode': false, }; @@ -1639,6 +1640,11 @@ angular.module('zmApp.controllers') + if (typeof loginData.httpCordovaNoEncode == 'undefined') { + loginData.httpCordovaNoEncode = false; + } + + loginData.canSwipeMonitors = true; loginData.forceImageModePath = false; loginData.enableBlog = true; @@ -2825,7 +2831,7 @@ angular.module('zmApp.controllers') log((forceReload == 1) ? "getMonitors:Force reloading all monitors" : "getMonitors:Loading all monitors"); var apiurl = loginData.apiurl; var myurl = apiurl + "/monitors"; - myurl += "/index/"+"Type!=:WebSite.json" + "?"+$rootScope.authSession; + myurl += "/index/"+"Type !=:WebSite.json" + "?"+$rootScope.authSession; getZmsMultiPortSupport() .then(function (zmsPort) { @@ -3483,11 +3489,11 @@ angular.module('zmApp.controllers') if (monitorId != 0) myurl = myurl + "/"+"MonitorId:" + monitorId; if (startTime) - myurl = myurl + "/"+"StartTime<=:" + endTime; + myurl = myurl + "/"+"StartTime <=:" + endTime; if (endTime) - myurl = myurl + "/"+"EndTime>=:" + startTime; + myurl = myurl + "/"+"EndTime >=:" + startTime; - myurl = myurl + "/"+"AlarmFrames>=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); + myurl = myurl + "/"+"AlarmFrames >=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); //https:///zm/api/events/index/Notes%20REGEXP:detected%3A.json if (loginData.objectDetectionFilter && !noObjectFilter) { @@ -3574,11 +3580,11 @@ angular.module('zmApp.controllers') if (monitorId != 0) myurl = myurl + "/"+"MonitorId:" + monitorId; if (startTime) - myurl = myurl + "/"+"StartTime<=:" + endTime; + myurl = myurl + "/"+"StartTime <=:" + endTime; if (endTime) - myurl = myurl + "/"+"EndTime>=:" + startTime; + myurl = myurl + "/"+"EndTime >=:" + startTime; - myurl = myurl + "/"+"AlarmFrames>=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); + myurl = myurl + "/"+"AlarmFrames >=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); //console.log ('********* MON FILTER '+monListFilter); if (monListFilter) diff --git a/www/js/TimelineCtrl.js b/www/js/TimelineCtrl.js index 9de37c18..82db8b59 100644 --- a/www/js/TimelineCtrl.js +++ b/www/js/TimelineCtrl.js @@ -783,9 +783,9 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla // FIXME: totally ignoring event pages - hoping it wont be more than 100 or 150 whatever // the events per page limit is. Why? laziness. // - var completedEvents = ld.apiurl + '/events/index/'+'EndTime>=:' + from; + var completedEvents = ld.apiurl + '/events/index/'+'EndTime >=:' + from; // we can add alarmCount as this is really for completed events - completedEvents = completedEvents + "/"+"AlarmFrames>=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); + completedEvents = completedEvents + "/"+"AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); if (ld.objectDetectionFilter) { completedEvents = completedEvents + '/'+ 'Notes REGEXP:"detected:"'; @@ -800,7 +800,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla var st = moment(lastTimeForEvent).tz(NVR.getTimeZoneNow()); st = st.subtract(10, 'minutes').locale('en').format("YYYY-MM-DD HH:mm:ss"); - var ongoingEvents = ld.apiurl + '/'+'events/index/StartTime>=:' + st + '/EndTime=:.json'+'?'+$rootScope.authSession; + var ongoingEvents = ld.apiurl + '/'+'events/index/StartTime >=:' + st + '/EndTime =:.json'+'?'+$rootScope.authSession; //NVR.debug("Getting incremental events using: " + completedEvents); NVR.debug("Completed events API:" + completedEvents); diff --git a/www/js/app.js b/www/js/app.js index 9f9898f7..09365be6 100755 --- a/www/js/app.js +++ b/www/js/app.js @@ -1210,6 +1210,11 @@ angular.module('zmApp', [ }; + $rootScope.getLogin = function () { + return NVR.getLogin(); + }; + + $rootScope.proceedWithLogin = function(obj) { return NVR.proceedWithLogin(obj); }; @@ -2096,12 +2101,21 @@ angular.module('zmApp', [ }; if (arguments[0].timeout) options.timeout = arguments[0].timeout; + + // console.log ("**** -->"+method+"<-- using native HTTP with:"+encodeURI(url)+" payload:"+JSON.stringify(options)); // nvr.debug ("cordova: got url "+url); //nvr.debug ("cordova: url after encode "+encodeURI(url)); //cordova.plugin.http.sendRequest(encodeURI(url), options, - cordova.plugin.http.sendRequest(encodeURI(url), options, + + if (!nvr.getLogin().httpCordovaNoEncode) { + url = encodeURI(url); + //nvr.debug("encoded URL="+url); + } + + + cordova.plugin.http.sendRequest(url, options, function (succ) { // automatic JSON parse if no responseType: text // fall back to text if JSON parse fails too @@ -2142,7 +2156,7 @@ angular.module('zmApp', [ }, function (err) { - nvr.debug("*** Inside native HTTP error for url:"+JSON.stringify(url)); + nvr.debug("*** Inside native HTTP error for url:"+JSON.stringify(err)); if (err.status == 401 && !options.skipIntercept && nvr.apiValid) { if (err.error && err.error.indexOf("API is disabled for user") != -1) { nvr.apiValid = false; diff --git a/www/lang/locale-en.json b/www/lang/locale-en.json index bd015405..4c9211ea 100644 --- a/www/lang/locale-en.json +++ b/www/lang/locale-en.json @@ -161,6 +161,7 @@ "kHideTip" :"hide tip", "kHighBWDisplay" :"high bandwidth", "kHours" :"hours", + "kHTTPCordovaNoEncode" :"Don't encode URLs", "kId" :"Id", "kImages" :"Images", "kImportant" :"Important", diff --git a/www/templates/devoptions.html b/www/templates/devoptions.html index d782a654..435c4c40 100644 --- a/www/templates/devoptions.html +++ b/www/templates/devoptions.html @@ -277,6 +277,12 @@ </ion-toggle> </label> + <label> + <ion-toggle ng-if="$root.platformOS!='desktop'" ng-model="loginData.httpCordovaNoEncode" toggle-class="toggle-calm"> + <span class="item-text-wrap">{{'kHTTPCordovaNoEncode' | translate}}</span> + </ion-toggle> + </label> + <div class="item item-text-wrap item-input-inset"> {{'kCycleMonitorsInterval'|translate}}({{'kSec'|translate}}.) <label class="item-input-wrapper"> |
