summaryrefslogtreecommitdiff
path: root/www/js/LogCtrl.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js/LogCtrl.js')
-rw-r--r--www/js/LogCtrl.js193
1 files changed, 84 insertions, 109 deletions
diff --git a/www/js/LogCtrl.js b/www/js/LogCtrl.js
index 78a02992..01566750 100644
--- a/www/js/LogCtrl.js
+++ b/www/js/LogCtrl.js
@@ -2,7 +2,7 @@
/* jslint browser: true*/
/* global saveAs, cordova,StatusBar,angular,console,moment */
-angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$rootScope', 'zm', '$ionicModal', 'NVRDataModel', '$ionicSideMenuDelegate', '$fileLogger', '$cordovaEmailComposer', '$ionicPopup', '$timeout', '$ionicHistory', '$state', '$interval', '$ionicLoading', '$translate', '$http', function ($scope, $rootScope, zm, $ionicModal, NVRDataModel, $ionicSideMenuDelegate, $fileLogger, $cordovaEmailComposer, $ionicPopup, $timeout, $ionicHistory, $state, $interval, $ionicLoading, $translate, $http) {
+angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$rootScope', 'zm', '$ionicModal', 'NVRDataModel', '$ionicSideMenuDelegate', '$fileLogger', '$cordovaEmailComposer', '$ionicPopup', '$timeout', '$ionicHistory', '$state', '$interval', '$ionicLoading', '$translate', '$http', 'SecuredPopups', function ($scope, $rootScope, zm, $ionicModal, NVRDataModel, $ionicSideMenuDelegate, $fileLogger, $cordovaEmailComposer, $ionicPopup, $timeout, $ionicHistory, $state, $interval, $ionicLoading, $translate, $http, SecuredPopups) {
$scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
};
@@ -11,20 +11,9 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
// Controller main
//---------------------------------------------------------------
- var intervalLogUpdateHandle;
- document.addEventListener("pause", onPause, false);
- document.addEventListener("resume", onResume, false);
- function onPause() {
- NVRDataModel.debug("LogCtrl: pause called, killing log timer");
- // $interval.cancel(intervalLogUpdateHandle);
- }
- function onResume() {
- // NVRDataModel.debug("LogCtrl: resume called, starting log timer");
- loadLogs();
- }
$scope.flipLogs = function () {
if ($scope.logEntity == 'ZoneMinder')
@@ -76,115 +65,84 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
}
};
- //--------------------------------------------------------------------------
- // Make sure user knows information masking is best effort
- //--------------------------------------------------------------------------
-
- $scope.sendEmail = function (logstring) {
- logstring = logstring.substring(0, 20000);
- $ionicPopup.confirm({
- title: $translate.instant('kSensitiveTitle'),
- template: $rootScope.appName + ' ' + $translate.instant('kSensitiveBody'),
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- })
- .then(function (res) {
- if (res) {
-
- logstring = "zmNinja version:" + $scope.zmAppVersion +
- " (" + $rootScope.platformOS + ")\n" +
- "ZoneMinder version:" + NVRDataModel.getCurrentServerVersion() + "\n" +
- logstring;
- sendEmailReally(logstring);
- }
- });
- };
+ // desktop download
+ $scope.downloadLogs = function () {
+ var body = "zmNinja version:" + $scope.zmAppVersion +
+ " (" + $rootScope.platformOS + ")\n" +
+ "ZoneMinder version:" + NVRDataModel.getCurrentServerVersion()+"\n\n";
- //--------------------------------------------------------------------------
- // Convenience function to send logs via email
- //--------------------------------------------------------------------------
- function sendEmailReally(logstring) {
-
- //console.log ("LOGSTRING:"+logstring);
- if (window.cordova) {
-
- // do my best to replace sensitive information
- var loginData = NVRDataModel.getLogin();
-
- // We don't need this anymore as log and debug now strip passwords
- /*if (loginData.password !="")
- {
- var re1 = new RegExp(loginData.password, "g");
- logstring = logstring.replace(re1, "<deleted>");
- }*/
- // keep the protocol, helps to debug
- var urlNoProtocol = loginData.url.replace(/.*?:\/\//, "");
- if (urlNoProtocol != "") {
- var re2 = new RegExp(urlNoProtocol, "g");
- // just replacing baseurl - that will take care of
- // masking api but may not be cgi
- logstring = logstring.replace(re2, "<server>");
- }
- urlNoProtocol = loginData.streamingurl.replace(/.*?:\/\//, "");
- if (urlNoProtocol != "") {
- var re3 = new RegExp(urlNoProtocol, "g");
- logstring = logstring.replace(re3, "<server>");
- }
+ body = $translate.instant('kSensitiveBody') + '\n\n\n' + body;
+ var fname = $rootScope.appName + "-logs-" +
+ moment().format('MMM-DD-YY_HH-mm-ss') + ".txt";
- urlNoProtocol = loginData.eventServer.replace(/.*?:\/\//, "");
- if (urlNoProtocol != "") {
- var re4 = new RegExp(urlNoProtocol, "g");
- logstring = logstring.replace(re4, "<server>");
- }
+ $fileLogger.checkFile()
+ .then(function (d) {
- //console.log ("NEW LOGSTRING:"+logstring);
- /* window.plugins.emailComposer.showEmailComposerWithCallback(callback, $rootScope.appName + ' logs', logstring, [zm.authoremail]);*/
-
-
- cordova.plugins.email.isAvailable(
- function (isAvailable) {
-
- if (isAvailable) {
- // body encapsulation requires br :^
- // see https://github.com/katzer/cordova-plugin-email-composer/issues/150
- logstring = logstring.split('\n').join('<br/>');
- cordova.plugins.email.open({
- to: zm.authoremail,
- subject: $rootScope.appName + ' logs',
- body: logstring
- });
- } else {
- // kEmailNotConfigured
- $rootScope.zmPopup = SecuredPopups.show('alert', {
- title: $translate.instant('kError'),
- template: $translate.instant('kEmailNotConfigured'),
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- });
+ body = body + window.localStorage[d.name];
+ var file = new Blob([body], {
+ type: 'text/plain'
+ });
+ var url = URL.createObjectURL(file);
+
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
+ title: $translate.instant('kNote'),
+ template: $translate.instant('kTapDownloadLogs') + "<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'
+ },
+ function (e) {
+ NVRDataModel.debug("Error getting log file:" + JSON.stringify(e));
}
- });
+ );
+ });
- } else {
- // console.log("Using default email client to send data");
- var fname = $rootScope.appName + "-logs-" +
- moment().format('MMM-DD-YY_HH-mm-ss') + ".txt";
+ };
- var blob = new Blob([logstring], {
- type: "text/plain;charset=utf-8"
- });
- saveAs(blob, fname);
- }
+ // mobile - picks up applogs on the FS and sends an email with it
+
+ $scope.attachLogs = function () {
+ var body = "zmNinja version:" + $scope.zmAppVersion +
+ " (" + $rootScope.platformOS + ")<br/>" +
+ "ZoneMinder version:" + NVRDataModel.getCurrentServerVersion() + "<br/>";
+ body = '<b>' + $translate.instant('kSensitiveBody') + '</b><br/><br/>' + body;
+
+ $fileLogger.checkFile()
+ .then(function (d) {
+ var fileWithPath = cordova.file.dataDirectory + d.name;
+ NVRDataModel.log("file location:" + fileWithPath);
+
+ var onSuccess = function (result) {
+ NVRDataModel.log("Share completed? " + result.completed);
+ NVRDataModel.log("Shared to app: " + result.app);
+ };
+
+ var onError = function (msg) {
+ NVRDataModel.log("Sharing failed with message: " + msg);
+ };
+
+ window.plugins.socialsharing.shareViaEmail(
+ body, //body
+ 'zmNinja Logs attached', // subject
+ [zm.authoremail], //to
+ null, // cc
+ null, //bcc
+ [fileWithPath],
+ onSuccess,
+ onError
+ );
- }
+ },
+ function (e) {
+ NVRDataModel.debug("Error attaching log file:" + JSON.stringify(e));
+ });
+
+
+ };
- function callback() {
- // console.log ("EMAIL SENT");
- NVRDataModel.debug("Email sent callback called");
- }
function loadZMlogs() {
var ld = NVRDataModel.getLogin();
@@ -257,6 +215,22 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
// reset power state on exit as if it is called after we enter another
// state, that effectively overwrites current view power management needs
//------------------------------------------------------------------------
+
+
+ $scope.$on('$ionic.beforeEnter', function () {
+
+ $scope.$on("process-push", function () {
+ NVRDataModel.debug(">> LogCtrl: push handler");
+ var s = NVRDataModel.evaluateTappedNotification();
+ NVRDataModel.debug("tapped Notification evaluation:" + JSON.stringify(s));
+ $ionicHistory.nextViewOptions({
+ disableAnimate: true,
+ disableBack: true
+ });
+ $state.go(s[0], s[1], s[2]);
+ });
+ });
+
$scope.$on('$ionicView.enter', function () {
//console.log("**VIEW ** Log Ctrl Entered");
@@ -280,6 +254,7 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
};
$scope.zmAppVersion = NVRDataModel.getAppVersion();
+ $scope.zmVersion = NVRDataModel.getCurrentServerVersion();
/* intervalLogUpdateHandle = $interval(function ()
{