Skip to content

Commit

Permalink
ZoneMinder#724 cleanup and making sure we take recordingURL for playback
Browse files Browse the repository at this point in the history
  • Loading branch information
pliablepixels committed Oct 20, 2018
1 parent 8d42918 commit 89211bb
Show file tree
Hide file tree
Showing 13 changed files with 116 additions and 288 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "zmninjapro",
"description": "Home security mobile app for ZoneMinder",
"version": "1.3.026",
"version":"1.3.026",
"displayName": "zmNinja",
"author": "Pliable Pixels",
"license": "custom see LICENSE.md",
Expand Down Expand Up @@ -175,4 +175,4 @@
]
}
}
}
}
24 changes: 16 additions & 8 deletions www/js/DataModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -2156,7 +2156,7 @@ angular.module('zmApp.controllers')
var streamingurl = "";


st += (s.scheme ? s.scheme : p.scheme) + "://"; // server scheme overrides
st += (s.scheme ? s.scheme : p.scheme) + "://"; // server scheme overrides



Expand Down Expand Up @@ -2246,13 +2246,7 @@ angular.module('zmApp.controllers')
monitors[i].Monitor.baseURL = loginData.url;
monitors[i].Monitor.imageMode = (versionCompare($rootScope.apiVersion, "1.30") == -1) ? "path" : "fid";

// but now check if forced path
if (loginData.forceImageModePath) {
debug("Overriding, setting image mode to true as you have requested force enable");
monitors[i].Monitor.imageMode = 'path';
}

// debug("API " + $rootScope.apiVersion + ": Monitor " + monitors[i].Monitor.Id + " will use " + monitors[i].Monitor.imageMode + " for direct image access");

}
}
// now get packery hide if applicable
Expand Down Expand Up @@ -2849,6 +2843,20 @@ angular.module('zmApp.controllers')

},


getRecordingURL: function (id) {
var idnum = parseInt(id);
for (var i = 0; i < monitors.length; i++) {
if (parseInt(monitors[i].Monitor.Id) == idnum) {
// console.log ("Matched, exiting getMonitorname");
//console.log ("!!!"+monitors[i].Monitor.controlURL);
return monitors[i].Monitor.controlURL;
}

}
return "(Unknown)";
},

getBaseURL: function (id) {
var idnum = parseInt(id);
for (var i = 0; i < monitors.length; i++) {
Expand Down
200 changes: 49 additions & 151 deletions www/js/EventCtrl.js

Large diffs are not rendered by default.

59 changes: 21 additions & 38 deletions www/js/EventModalCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -762,17 +762,15 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.mycarousel.index = 1;


if ($scope.event.Event.imageMode == 'path') {
url = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.mycarousel.index].img;
} else {


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;
}


if ($rootScope.authSession != 'undefined') {
url += $rootScope.authSession;
Expand Down Expand Up @@ -803,11 +801,9 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
onTap: function (e) {
if ($scope.slideIndex > 0) $scope.slideIndex--;

if ($scope.event.Event.imageMode == 'path') {
$scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
} else {

$scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
}

if ($rootScope.authSession != 'undefined') {
$scope.selectEventUrl += $rootScope.authSession;

Expand All @@ -831,11 +827,9 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
onTap: function (e) {
if ($scope.slideIndex < $scope.slideLastIndex) $scope.slideIndex++;

if ($scope.event.Event.imageMode == 'path') {
$scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
} else {

$scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
}

if ($rootScope.authSession != 'undefined') {
$scope.selectEventUrl += $rootScope.authSession;

Expand All @@ -860,11 +854,9 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
if (tempVar < 0) tempVar = 0;
$scope.slideIndex = tempVar;

if ($scope.event.Event.imageMode == 'path') {
$scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
} else {

$scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
}

if ($rootScope.authSession != 'undefined') {
$scope.selectEventUrl += $rootScope.authSession;

Expand All @@ -889,11 +881,9 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.slideIndex = tempVar;
if ($scope.slideIndex < $scope.slideLastIndex) $scope.slideIndex++;

if ($scope.event.Event.imageMode == 'path') {
$scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
} else {

$scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
}

if ($rootScope.authSession != 'undefined') {
$scope.selectEventUrl += $rootScope.authSession;

Expand Down Expand Up @@ -1170,10 +1160,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.singleImageQuality = (NVRDataModel.getBandwidth() == "lowbw") ? zm.eventSingleImageQualityLowBW : ld.singleImageQuality;
$scope.blockSlider = false;
$scope.checkEventOn = false;
//$scope.singleImageQuality = 100;

//$scope.commandURL = $scope.currentEvent.Event.baseURL+"/index.php";
// NVRDataModel.log (">>>>>>>>>>>>>>>>>>ZMS url command is " + $scope.commandURL);


currentEvent = $scope.currentEvent;

Expand Down Expand Up @@ -1924,7 +1911,10 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
function computeAlarmFrames(data) {
$scope.alarm_images = [];
tempAlarms = [];
$scope.FrameArray = data.event.Frame;
$scope.FrameArray = [];

console.log ("FRAME ARRAY: "+JSON.stringify(data));
if (data.event && data.event.Frame) $scope.FrameArray = data.event.Frame;
var ts = 0;

for (i = 0; i < data.event.Frame.length; i++) {
Expand Down Expand Up @@ -1953,7 +1943,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.constructFrame = function (fid) {

var frame = "";
frame = currentEvent.Event.baseURL + "/index.php?view=image" +
frame = currentEvent.Event.recordingURL + "/index.php?view=image" +
"&eid=" + currentEvent.Event.Id +
"&fid=" + fid +
"&height=" + 200;
Expand Down Expand Up @@ -1985,15 +1975,14 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.mName = "...";
$scope.liveFeedMid = '';


$http.get(myurl)
.then(function (success) {

var event = success.data.event;
currentEvent = event;
$scope.event = event;


console.log ("prepareModal DATA:"+JSON.stringify(success.data));
computeAlarmFrames(success.data);
$scope.eventWarning = '';

Expand All @@ -2008,8 +1997,8 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
event.Event.relativePath = computeRelativePath(event);

event.Event.streamingURL = NVRDataModel.getStreamingURL(event.Event.MonitorId);
// event.Event.baseURL = NVRDataModel.getBaseURL (event.Event.MonitorId);
event.Event.baseURL = loginData.url;

event.Event.recordingURL = loginData.url;
event.Event.imageMode = NVRDataModel.getImageMode(event.Event.MonitorId);

//console.log (JSON.stringify( success));
Expand Down Expand Up @@ -2056,10 +2045,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
event.Event.video = {};
var videoURL;

if ((event.Event.imageMode == 'path') || NVRDataModel.getLogin().forceImageModePath)
videoURL = event.Event.baseURL + "/events/" + event.Event.relativePath + event.Event.DefaultVideo;
else
videoURL = event.Event.baseURL + "/index.php?view=view_video&eid=" + event.Event.Id;
videoURL = event.Event.recordingURL + "/index.php?view=view_video&eid=" + event.Event.Id;

if ($rootScope.authSession != 'undefined') videoURL += $rootScope.authSession;
if ($rootScope.basicAuthToken) videoURL = videoURL + "&basicauth=" + $rootScope.basicAuthToken;
Expand All @@ -2073,10 +2059,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro

NVRDataModel.debug("Video url passed to player is: " + videoURL);

// console.log (">>>>>>>>>>>>>"+loginData.url+"-VS-"+event.Event.baseURL);

//console.log("************** VIDEO IS " + videoURL);


$scope.videoObject = {
config: {
autoPlay: true,
Expand Down
3 changes: 1 addition & 2 deletions www/js/LogCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,7 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
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(/.*?:\/\//, "");
Expand Down
7 changes: 3 additions & 4 deletions www/js/MomentCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,8 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$

data.events[i].Event.hide = false;
data.events[i].Event.icon = "ion-code-working";
//data.events[i].Event.baseURL = NVRDataModel.getBaseURL(data.events[i].Event.MonitorId);
// huh? why did I need the above? eventCtrl reverses it with below...
data.events[i].Event.baseURL = NVRDataModel.getLogin().url;

data.events[i].Event.recordingURL = NVRDataModel.getLogin().url;

data.events[i].Event.monitorName = NVRDataModel.getMonitorName(data.events[i].Event.MonitorId);
data.events[i].Event.dateObject = new Date(data.events[i].Event.StartTime);
Expand Down Expand Up @@ -267,7 +266,7 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$
$scope.constructFrame = function (moment) {
var stream = "";
// console.log ($scope.isMaxScoreFramePresent);
stream = moment.Event.baseURL + "/index.php?view=image" +
stream = moment.Event.recordingURL + "/index.php?view=image" +
($scope.isMaxScoreFramePresent ? "&fid=" + moment.Event.MaxScoreFrameId : "&eid=" + moment.Event.Id + "&fid=1") +
"&width=" + moment.Event.thumbWidth * 2 +
"&height=" + moment.Event.thumbHeight * 2;
Expand Down
5 changes: 1 addition & 4 deletions www/js/MonitorCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -412,10 +412,7 @@ angular.module('zmApp.controllers')
$scope.monitors[j].Monitor.char = "ion-checkmark-circled";
apiMonCheck = loginData.apiurl + "/monitors/daemonStatus/id:" + $scope.monitors[j].Monitor.Id + "/daemon:zmc.json";

//apiMonCheck = apiMonCheck.replace(loginData.url, $scope.monitors[j].Monitor.baseURL);

// in multiserver replace apiurl with baseurl


NVRDataModel.debug("MonitorCtrl:monitorStateCheck: " + apiMonCheck);
//console.log("**** ZMC CHECK " + apiMonCheck);
$http.get(apiMonCheck)
Expand Down
16 changes: 7 additions & 9 deletions www/js/TimelineCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -864,11 +864,11 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
myevents[j].Event.MonitorName = NVRDataModel.getMonitorName(myevents[j].Event.MonitorId);

myevents[j].Event.streamingURL = NVRDataModel.getStreamingURL(myevents[j].Event.MonitorId);
myevents[j].Event.baseURL = NVRDataModel.getBaseURL(myevents[j].Event.MonitorId);
myevents[j].Event.recordingURL = NVRDataModel.getRecordingURL(myevents[j].Event.MonitorId);
myevents[j].Event.imageMode = NVRDataModel.getImageMode(myevents[j].Event.MonitorId);
if (NVRDataModel.getLogin().url != myevents[j].Event.baseURL) {
if (NVRDataModel.getLogin().url != myevents[j].Event.recordingURL) {

myevents[j].Event.baseURL = NVRDataModel.getLogin().url;
myevents[j].Event.recordingURL = NVRDataModel.getLogin().url;
}

if (typeof myevents[j].Event.DefaultVideo === 'undefined')
Expand Down Expand Up @@ -1168,16 +1168,14 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
// now construct base path

myevents[i].Event.streamingURL = NVRDataModel.getStreamingURL(myevents[i].Event.MonitorId);
myevents[i].Event.baseURL = NVRDataModel.getBaseURL(myevents[i].Event.MonitorId);
myevents[i].Event.recordingURL = NVRDataModel.getRecordingURL(myevents[i].Event.MonitorId);
myevents[i].Event.imageMode = NVRDataModel.getImageMode(myevents[i].Event.MonitorId);
if (NVRDataModel.getLogin().url != myevents[i].Event.baseURL) {
if (NVRDataModel.getLogin().url != myevents[i].Event.recordingURL) {
//NVRDataModel.debug ("Multi server, changing base");
myevents[i].Event.baseURL = NVRDataModel.getLogin().url;
myevents[i].Event.recordingURL = NVRDataModel.getLogin().url;

}
// console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);

// console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);


if (idfound) {

Expand Down
Loading

0 comments on commit 89211bb

Please sign in to comment.