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]; Event = events[Frame.EventId];
var storage = Storage[Event.StorageId]; 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 // monitorServerId may be 0, which gives us the default Server entry
var server = storage.ServerId ? Servers[storage.ServerId] : Servers[monitorServerId[monId]]; var server = storage.ServerId ? Servers[storage.ServerId] : Servers[monitorServerId[monId]];
return server.PathToIndex + return server.PathToIndex +
@ -500,7 +505,8 @@ HTMLCanvasElement.prototype.relMouseCoords = relMouseCoords;
var mouseisdown=false; var mouseisdown=false;
function mdown(event) { function mdown(event) {
mouseisdown=true; mmove(event); mouseisdown=true;
mmove(event);
} }
function mup(event) { function mup(event) {
mouseisdown=false; mouseisdown=false;
@ -509,7 +515,8 @@ function mout(event) {
mouseisdown=false; mouseisdown=false;
} // if we go outside treat it as release } // if we go outside treat it as release
function tmove(event) { function tmove(event) {
mouseisdown=true; mmove(event); mouseisdown=true;
mmove(event);
} }
function mmove(event) { function mmove(event) {
@ -910,6 +917,13 @@ function initPage() {
} }
if ( !liveMode ) { if ( !liveMode ) {
canvas = $("timeline"); 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'); ctx = canvas.getContext('2d');
drawGraph(); drawGraph();
} }

View File

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