diff options
| author | lucas_nz <lucas_nz@outlook.com> | 2020-10-10 23:53:13 +1300 |
|---|---|---|
| committer | lucas_nz <lucas_nz@outlook.com> | 2020-10-10 23:53:13 +1300 |
| commit | 958ff8c24307c097b47ee6135f5e76fea3b279a8 (patch) | |
| tree | 212bddd2a16f7af8432ec7e8f3e5b0d7540129d2 /www/js | |
| parent | 2bf676cb16d1477f3cac47c5fa905ab95e467222 (diff) | |
| parent | 0711179c6e1104f4e1954c7a0685f40ed25c0851 (diff) | |
Merge branch 'master' of git@github.com:pliablepixels/zmNinja.git
Diffstat (limited to 'www/js')
| -rw-r--r-- | www/js/EventCtrl.js | 54 | ||||
| -rw-r--r-- | www/js/EventModalCtrl.js | 106 | ||||
| -rw-r--r-- | www/js/MonitorModalCtrl.js | 52 | ||||
| -rw-r--r-- | www/js/NVR.js | 4 | ||||
| -rwxr-xr-x | www/js/app.js | 9 |
5 files changed, 149 insertions, 76 deletions
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js index b37613f2..ed0d457b 100644 --- a/www/js/EventCtrl.js +++ b/www/js/EventCtrl.js @@ -781,13 +781,15 @@ angular.module('zmApp.controllers') } - function saveNow(imgsrc) { + function saveNow(imgsrc,eid) { + + NVR.debug ("saveNow in EventCtrl called with "+imgsrc+" and "+ eid); + var fname; + //var timestamp=moment().format('-MMM-Do-YY-HH-mm-ss'); - var fname = "zmninja.jpg"; var fn = "cordova.plugins.photoLibrary.saveImage"; var loginData = NVR.getLogin(); - - + fname = "zmNinja-eid-"+eid+".jpg"; $ionicLoading.show({ template: $translate.instant('kSavingSnapshot') + "...", noBackdrop: true, @@ -828,7 +830,7 @@ angular.module('zmApp.controllers') function (entry) { NVR.debug("local download complete: " + entry.toURL()); NVR.debug("Now trying to move it to album"); - var pluginName = (fname == "zmNinja.mp4" ? "saveVideo" : "saveImage"); + var pluginName = ((fname.indexOf('.mp4') != -1) ? "saveVideo" : "saveImage"); cordova.plugins.photoLibrary[pluginName](entry.toURL(), album, @@ -882,12 +884,39 @@ angular.module('zmApp.controllers') //desktop $ionicLoading.hide(); + $ionicLoading.show({ + template: $translate.instant('kPleaseWait') + "...", + noBackdrop: true + }); - $rootScope.zmPopup = SecuredPopups.show('alert', { - title: $translate.instant('kNote'), - template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download>" + " " + $translate.instant('kDownload') + "</a></center>", - okText: $translate.instant('kDismiss'), - okType: 'button-stable' + fname = "zmninja-eid-"+eid+".jpg"; + fetch(url).then(function (resp) { + return resp.blob(); + }).then(function (blob) { + $ionicLoading.hide(); + var url = window.URL.createObjectURL(blob); + $rootScope.zmPopup = SecuredPopups.show('alert', { + title: $translate.instant('kNote'), + template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download='"+fname+"'>" + " " + $translate.instant('kDownload') + "</a></center>", + okText: $translate.instant('kDismiss'), + okType: 'button-stable' + }); + + $rootScope.zmPopup.then (function (res) { + //console.log ('DONE RELEASE'); + NVR.debug ('download successful'); + window.URL.revokeObjectURL(url); + $ionicLoading.hide(); + + + }); + }).catch(function () { + $ionicLoading.hide(); + $ionicLoading.show({ + template: $translate.instant('kErrorSave'), + noBackdrop: true, + duration: 2000 + }); }); @@ -1138,7 +1167,7 @@ angular.module('zmApp.controllers') }; $scope.showImage = function (p, f, fid, e, imode, id, parray, ndx) { - var img; + var eid = e; // console.log ("P="+p+" F="+f+" E="+e+" imode="+imode+" id="+id+" parray="+JSON.stringify(parray)+" ndx="+ndx); @@ -1198,7 +1227,7 @@ angular.module('zmApp.controllers') type: 'button-assertive button-small ion-camera', onTap: function (e) { e.preventDefault(); - saveNow($scope.imgsrc); + saveNow($scope.imgsrc,eid); } }, @@ -3247,6 +3276,7 @@ angular.module('zmApp.controllers') if (now - loadMoreTime > 1500) { NVR.debug("$scope.loadMore > loadMore() ... delta: " + (now - loadMoreTime)); loadMore(); + loadMoreTime = Date.now(); $scope.$broadcast('scroll.infiniteScrollComplete'); } else { diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js index a6dd87e8..20d24531 100644 --- a/www/js/EventModalCtrl.js +++ b/www/js/EventModalCtrl.js @@ -544,10 +544,10 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro }; - $scope.saveEventVideoToPhoneWithPerms = function () { + $scope.saveEventVideoWithPerms = function (eid) { if ($rootScope.platformOS != 'android') { - saveNow(); + saveEvent("video", eid); return; } @@ -563,7 +563,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro } function succ(s) { - saveNow(); + saveEvent("video", eid); } function err(e) { @@ -577,10 +577,10 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro // Saves a snapshot of the monitor image to phone storage //----------------------------------------------------------------------- - $scope.saveEventImageToPhoneWithPerms = function (onlyAlarms) { + $scope.saveEventImageWithPerms = function (onlyAlarms,eid) { if ($rootScope.platformOS != 'android') { - processSaveEventImageToPhone(onlyAlarms); + saveEventImage(onlyAlarms, eid); return; } @@ -597,7 +597,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro } function succ(s) { - processSaveEventImageToPhone(onlyAlarms); + saveEventImage(onlyAlarms, eid); } function err(e) { @@ -605,32 +605,18 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro } }; - function processSaveEventImageToPhone(onlyAlarms) { - - + function saveEventImage(onlyAlarms, eid) { if ($scope.isSnapShot()) { - - $scope.selectEventUrl = $scope.constructStream(); NVR.debug("just saving current snapshot:" + $scope.selectEventUrl); - saveNow("image"); - return; - - } - - if ($scope.loginData.useNphZmsForEvents) { - NVR.log("Use ZMS stream to save to phone"); - - saveEventImageToPhoneZms(onlyAlarms); - + saveEvent("image", eid); } else { - saveEventImageToPhone(onlyAlarms); + selectFrameAndSave(onlyAlarms,eid); } - } - function saveEventImageToPhoneZms(onlyAlarms) { + function selectFrameAndSave(onlyAlarms, eid) { // The strategy here is to build the array now so we can grab frames // $scope.currentProgress.progress is the seconds where we are // $scope.eventId is the event Id @@ -645,7 +631,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro sendCommand('1', $scope.connKey). then(function (resp) { - console.log("PAUSE ANSWER IS " + JSON.stringify(resp)); + // console.log("PAUSE ANSWER IS " + JSON.stringify(resp)); if (resp && resp.data && resp.data.status) $scope.currentProgress.progress = resp.data.status.progress; @@ -735,7 +721,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro //console.log ("I PUSHED:" + p+" BUT SLIDE LENGHT BEFORE DISPLAY:"+$scope.slides.length); // console.log ("STEP 2 : calling Save Event To Phone"); $ionicLoading.hide(); - saveEventImageToPhone(onlyAlarms); + saveEventImageToPhone(onlyAlarms, eid); }, function (err) { @@ -760,8 +746,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro } // don't think this is used anymore - function saveEventImageToPhone(onlyAlarms) { - // console.log ("________________UNUSED?_______________________"); + function saveEventImageToPhone(onlyAlarms, eid) { var curState = carouselUtils.getStop(); carouselUtils.setStop(true); var url; @@ -772,7 +757,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro - NVR.debug("ModalCtrl: SaveEventImageToPhone called"); + NVR.debug("EventModalCtrl: SaveEventImageToPhone called"); var canvas, context, imageDataUrl, imageData; var loginData = NVR.getLogin(); @@ -780,12 +765,6 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro if (onlyAlarms || ($scope.defaultVideo !== undefined && $scope.defaultVideo != '')) $scope.mycarousel.index = 1; - - - - console.log("SLIDES " + JSON.stringify($scope.slides)); - console.log("CAROUSEL " + JSON.stringify($scope.mycarousel)); - url = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.mycarousel.index - 1].id + $rootScope.authSession; @@ -908,7 +887,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro text: '', type: 'button-positive button-small ion-checkmark-round', onTap: function (e) { - saveNow("image"); + saveEvent("image",eid); } } @@ -919,9 +898,10 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro } - function saveNow(t) { + function saveEvent(t,eid) { - var fname = "zmninja.jpg"; + NVR.debug ("saveEvent in EventModalCtrl called with "+t+" and "+ eid); + var fname; var fn = "cordova.plugins.photoLibrary.saveImage"; var loginData = NVR.getLogin(); @@ -933,17 +913,17 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '' && t != "image") { $scope.selectEventUrl = $scope.video_url; - fname = "zmNinja.mp4"; + fname = "zmNinja-eid-"+eid+".mp4"; fn = "cordova.plugins.photoLibrary.saveVideo"; - - + } else { + fname = "zmNinja-eid-"+eid+".jpg"; } NVR.debug("-->Going to try and download " + $scope.selectEventUrl); var url = $scope.selectEventUrl; - NVR.log(">>saveNow: File path to grab is " + url); + NVR.log(">>saveEvent: File path to grab is " + url); if ($rootScope.platformOS != 'desktop') { @@ -977,7 +957,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro function (entry) { NVR.debug("local download complete: " + entry.toURL()); NVR.debug("Now trying to move it to album"); - var pluginName = (fname == "zmNinja.mp4" ? "saveVideo" : "saveImage"); + var pluginName = ((fname.indexOf('.mp4') != -1) ? "saveVideo" : "saveImage"); cordova.plugins.photoLibrary[pluginName](entry.toURL(), album, @@ -1031,14 +1011,42 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro //desktop $ionicLoading.hide(); - - $rootScope.zmPopup = SecuredPopups.show('alert', { - title: $translate.instant('kNote'), - template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download>" + " " + $translate.instant('kDownload') + "</a></center>", - okText: $translate.instant('kDismiss'), - okType: 'button-stable' + $ionicLoading.show({ + template: $translate.instant('kPleaseWait') + "...", + noBackdrop: true }); + fetch(url).then(function (resp) { + return resp.blob(); + }).then(function (blob) { + $ionicLoading.hide(); + + // console.log (blob); + var url = window.URL.createObjectURL(blob); + $rootScope.zmPopup = SecuredPopups.show('alert', { + title: $translate.instant('kNote'), + template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download='"+fname+"'>" + " " + $translate.instant('kDownload') + "</a></center>", + okText: $translate.instant('kDismiss'), + okType: 'button-stable' + }); + + $rootScope.zmPopup.then (function (res) { + //console.log ('DONE RELEASE'); + NVR.debug ('download successful'); + window.URL.revokeObjectURL(url); + $ionicLoading.hide(); + + + }); + }).catch(function () { + $ionicLoading.hide(); + $ionicLoading.show({ + template: $translate.instant('kErrorSave'), + noBackdrop: true, + duration: 2000 + }); + }); + } diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js index 4b58de4f..b9812a67 100644 --- a/www/js/MonitorModalCtrl.js +++ b/www/js/MonitorModalCtrl.js @@ -1181,9 +1181,9 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ // Saves a snapshot of the monitor image to phone storage //----------------------------------------------------------------------- - $scope.saveImageToPhoneWithPerms = function (mid) { + $scope.saveLiveImageToPhoneWithPerms = function (mid) { if ($rootScope.platformOS != 'android') { - saveImageToPhone(mid); + saveLiveImageToPhone(mid); return; } @@ -1199,7 +1199,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ } function succ(s) { - saveImageToPhone(mid); + saveLiveImageToPhone(mid); } function err(e) { @@ -1207,14 +1207,14 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ } }; - function saveImageToPhone(mid) { + function saveLiveImageToPhone(mid) { $ionicLoading.show({ template: $translate.instant('kSavingSnapshot') + '...', noBackdrop: true, duration: zm.httpTimeout }); - NVR.debug("ModalCtrl: SaveImageToPhone called"); + NVR.debug("ModalCtrl: SaveLiveImageToPhone called"); var canvas, context, imageDataUrl, imageData; var loginData = NVR.getLogin(); var url = loginData.streamingurl + @@ -1235,8 +1235,9 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ var fileTransfer = new FileTransfer(); var urle = encodeURI(url); - var fname = "zmninja.jpg"; - + var timestamp=moment().format('MMM-Do-YY-HH-mm-ss'); + var fname = "zmninja-mid-"+mid+'-'+timestamp+".jpg"; + fileTransfer.download(urle, cordova.file.dataDirectory + fname, function (entry) { NVR.debug("local download complete: " + entry.toURL()); @@ -1289,13 +1290,40 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ $ionicLoading.hide(); //SaveSuccess(); - $rootScope.zmPopup = SecuredPopups.show('alert', { - title: $translate.instant('kNote'), - template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download=\"balls.jpg\">" + " " + $translate.instant('kDownload') + "</a></center>", - okText: $translate.instant('kDismiss'), - okType: 'button-stable' + $ionicLoading.show({ + template: $translate.instant('kPleaseWait') + "...", + noBackdrop: true }); + var timestamp=moment().format('MMM-Do-YY-HH-mm-ss'); + var fname = "zmninja-mid-"+mid+'-'+timestamp+".jpg"; + fetch(url).then(function (resp) { + return resp.blob(); + }).then(function (blob) { + console.log (blob); + var url = window.URL.createObjectURL(blob); + $rootScope.zmPopup = SecuredPopups.show('alert', { + title: $translate.instant('kNote'), + template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download='"+fname+"'>" + " " + $translate.instant('kDownload') + "</a></center>", + okText: $translate.instant('kDismiss'), + okType: 'button-stable' + }); + + $rootScope.zmPopup.then (function (res) { + //console.log ('DONE RELEASE'); + NVR.debug ('download successful'); + $ionicLoading.hide(); + window.URL.revokeObjectURL(url); + }); + }).catch(function () { + $ionicLoading.hide(); + $ionicLoading.show({ + template: $translate.instant('kErrorSave'), + noBackdrop: true, + duration: 2000 + }); + }); + } } diff --git a/www/js/NVR.js b/www/js/NVR.js index ff438892..301091a6 100644 --- a/www/js/NVR.js +++ b/www/js/NVR.js @@ -2643,6 +2643,10 @@ angular.module('zmApp.controllers') return (loginData.use24hr ? "HH:mm:ss" : "hh:mm:ss a"); }, + getTimeFormatMilliSec: function() { + return (loginData.use24hr ? "HH:mm:ss:sss" : "hh:mm:ss:sss a"); + + }, //------------------------------------------------------------------ // switches screen to 'always on' or 'auto' //------------------------------------------------------------------ diff --git a/www/js/app.js b/www/js/app.js index 57eb9a3f..c6ed9644 100755 --- a/www/js/app.js +++ b/www/js/app.js @@ -1119,12 +1119,12 @@ angular.module('zmApp', [ $ionicPlatform.ready(function () { + //console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>INSIDE RUN"); NVR.log("******* app .run device ready"); - $fileLogger.setStorageFilename(zm.logFile); - $fileLogger.setTimestampFormat('MMM d, y ' + NVR.getTimeFormatSec()); + $fileLogger.setTimestampFormat('MMM d, y ' + NVR.getTimeFormatMilliSec()); $fileLogger.checkFile().then(function (resp) { if (parseInt(resp.size) > zm.logFileMaxSize) { @@ -1480,7 +1480,6 @@ angular.module('zmApp', [ // http://stackoverflow.com/questions/1649086/detect-rotation-of-android-phone-in-the-browser-with-javascript var checkOrientation = function () { - // give rotation time to actually rotate, or width/height will be bogus $timeout ( function() { @@ -1945,6 +1944,8 @@ angular.module('zmApp', [ NVR.log ("-->Re-registering online/offine"); document.addEventListener("offline", onOffline, false); document.addEventListener("online", onOnline, false); + window.addEventListener("resize", checkOrientation, false); + $rootScope.isDownloading = false; @@ -1998,6 +1999,8 @@ angular.module('zmApp', [ NVR.log ("-->Clearing online/offine"); document.removeEventListener("offline", onOffline, false); document.removeEventListener("online", onOnline, false); + window.removeEventListener("resize", checkOrientation, false); + NVR.setBackground(true); NVR.setJustResumed(false); |
