Make montagereview more robust when the storage area of an event has been deleted. Add the onmouse events using javascript instead of in the html canvas element so that our CSP policy works.

pull/2505/head
Isaac Connor 2019-02-06 11:46:48 -05:00
parent 8e62c93f5f
commit edaf582eb4
2 changed files with 26 additions and 4 deletions

View File

@ -122,6 +122,11 @@ function getImageSource( monId, time ) {
Event = events[Frame.EventId];
var storage = Storage[Event.StorageId];
if ( ! storage ) {
// Storage[0] is guaranteed to exist as we make sure it is there in montagereview.js.php
console.log("No storage area for id " + Event.StorageId);
storage = Storage[0];
}
// monitorServerId may be 0, which gives us the default Server entry
var server = storage.ServerId ? Servers[storage.ServerId] : Servers[monitorServerId[monId]];
return server.PathToIndex +
@ -500,7 +505,8 @@ HTMLCanvasElement.prototype.relMouseCoords = relMouseCoords;
var mouseisdown=false;
function mdown(event) {
mouseisdown=true; mmove(event);
mouseisdown=true;
mmove(event);
}
function mup(event) {
mouseisdown=false;
@ -509,7 +515,8 @@ function mout(event) {
mouseisdown=false;
} // if we go outside treat it as release
function tmove(event) {
mouseisdown=true; mmove(event);
mouseisdown=true;
mmove(event);
}
function mmove(event) {
@ -910,6 +917,13 @@ function initPage() {
}
if ( !liveMode ) {
canvas = $("timeline");
canvas.addEventListener('mousemove', mmove, false);
canvas.addEventListener('touchmove', tmove, false);
canvas.addEventListener('mousedown', mdown, false);
canvas.addEventListener('mouseup', mup, false);
canvas.addEventListener('mouseout', mout, false);
ctx = canvas.getContext('2d');
drawGraph();
}

View File

@ -119,13 +119,21 @@ echo " };\n";
} // end if initialmodeislive
echo "\nvar Storage = [];\n";
$have_storage_zero = 0;
foreach ( Storage::find() as $Storage ) {
echo 'Storage[' . $Storage->Id() . '] = ' . json_encode($Storage). ";\n";
echo 'Storage[' . $Storage->Id() . '] = ' . $Storage->to_json(). ";\n";
if ( $Storage->Id() == 0 )
$have_storage_zero = true;
}
if ( !$have_storage_zero ) {
$Storage = new Storage();
echo 'Storage[0] = ' . $Storage->to_json(). ";\n";
}
echo "\nvar Servers = [];\n";
// Fall back to get Server paths, etc when no using multi-server mode
$Server = new Server();
echo 'Servers[0] = new Server(' . json_encode($Server). ");\n";
echo 'Servers[0] = new Server(' . $Server->to_json(). ");\n";
foreach ( Server::find() as $Server ) {
echo 'Servers[' . $Server->Id() . '] = new Server(' . $Server->to_json(). ");\n";
}