add group filter to montagereview
This commit is contained in:
parent
bc1b770c14
commit
d69b16df24
|
@ -166,13 +166,12 @@ function drawSliderOnGraph(val) {
|
||||||
|
|
||||||
// If we have data already saved first restore it from LAST time
|
// If we have data already saved first restore it from LAST time
|
||||||
|
|
||||||
if(typeof underSlider !== 'undefined')
|
if(typeof underSlider !== 'undefined') {
|
||||||
{
|
|
||||||
ctx.putImageData(underSlider,underSliderX, 0, 0, 0, sliderWidth, sliderHeight);
|
ctx.putImageData(underSlider,underSliderX, 0, 0, 0, sliderWidth, sliderHeight);
|
||||||
underSlider=undefined;
|
underSlider=undefined;
|
||||||
}
|
}
|
||||||
if(liveMode==0) // we get rid of the slider if we switch to live (since it may not be in the "right" place)
|
if ( liveMode == 0 ) {
|
||||||
{
|
// we get rid of the slider if we switch to live (since it may not be in the "right" place)
|
||||||
// Now save where we are putting it THIS time
|
// Now save where we are putting it THIS time
|
||||||
underSlider=ctx.getImageData(sliderX, 0, sliderWidth, sliderHeight);
|
underSlider=ctx.getImageData(sliderX, 0, sliderWidth, sliderHeight);
|
||||||
// And add in the slider'
|
// And add in the slider'
|
||||||
|
@ -183,13 +182,10 @@ function drawSliderOnGraph(val) {
|
||||||
underSliderX=sliderX;
|
underSliderX=sliderX;
|
||||||
}
|
}
|
||||||
var o = $('scruboutput');
|
var o = $('scruboutput');
|
||||||
if(liveMode==1)
|
if(liveMode==1) {
|
||||||
{
|
|
||||||
o.innerHTML="Live Feed @ " + (1000 / currentDisplayInterval).toFixed(1) + " fps";
|
o.innerHTML="Live Feed @ " + (1000 / currentDisplayInterval).toFixed(1) + " fps";
|
||||||
o.style.color="red";
|
o.style.color="red";
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
o.innerHTML=secs2dbstr(val);
|
o.innerHTML=secs2dbstr(val);
|
||||||
o.style.color="blue";
|
o.style.color="blue";
|
||||||
}
|
}
|
||||||
|
@ -494,7 +490,7 @@ function clicknav(minSecs,maxSecs,arch,live) {// we use the current time if we c
|
||||||
|
|
||||||
var uri = "?view=" + currentView + fitStr + groupStr + minStr + maxStr + currentStr + intervalStr + liveStr + zoomStr + "&scale=" + scale[$j("#scaleslider")[0].value] + "&speed=" + speeds[$j("#speedslider")[0].value];
|
var uri = "?view=" + currentView + fitStr + groupStr + minStr + maxStr + currentStr + intervalStr + liveStr + zoomStr + "&scale=" + scale[$j("#scaleslider")[0].value] + "&speed=" + speeds[$j("#speedslider")[0].value];
|
||||||
window.location = uri;
|
window.location = uri;
|
||||||
}
|
} // end function clickNav
|
||||||
|
|
||||||
function lastHour() {
|
function lastHour() {
|
||||||
var now = new Date() / 1000;
|
var now = new Date() / 1000;
|
||||||
|
@ -690,6 +686,14 @@ function clickMonitor(event,monId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function changeGroup() {
|
||||||
|
var group_id = $('group').get('value');
|
||||||
|
Cookie.write( 'zmMontageReviewGroup', group_id, { duration: 10*365 } );
|
||||||
|
var url = window.location.href;
|
||||||
|
url = url.replace(/group=\d+/, 'group='+group_id);
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
|
|
||||||
// >>>>>>>>> Initialization that runs on window load by being at the bottom
|
// >>>>>>>>> Initialization that runs on window load by being at the bottom
|
||||||
|
|
||||||
function initPage() {
|
function initPage() {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
|
|
||||||
var currentScale=<?php echo $defaultScale?>;
|
var currentScale=<?php echo $defaultScale?>;
|
||||||
var liveMode=<?php echo $initialModeIsLive?>;
|
var liveMode=<?php echo $initialModeIsLive?>;
|
||||||
console.log("Live mode?"+liveMode);
|
|
||||||
var fitMode=<?php echo $fitMode?>;
|
var fitMode=<?php echo $fitMode?>;
|
||||||
var currentSpeed=<?php echo $speeds[$speedIndex]?>; // slider scale, which is only for replay and relative to real time
|
var currentSpeed=<?php echo $speeds[$speedIndex]?>; // slider scale, which is only for replay and relative to real time
|
||||||
var speedIndex=<?php echo $speedIndex?>;
|
var speedIndex=<?php echo $speedIndex?>;
|
||||||
|
@ -18,7 +17,7 @@ var eId = [];
|
||||||
var eStartSecs = [];
|
var eStartSecs = [];
|
||||||
var eEndSecs = [];
|
var eEndSecs = [];
|
||||||
var eventFrames = []; // this is going to presume all frames equal durationlength
|
var eventFrames = []; // this is going to presume all frames equal durationlength
|
||||||
var groupStr=<?php if($group=="") echo '""'; else echo "\"&group=$group\""; ?>;
|
var groupStr=<?php echo $group_id ? "'&group=$group_id'" : '""'; ?>;
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
|
@ -48,51 +48,6 @@
|
||||||
// It takes very high bandwidth to the server, and a pretty fast client to keep up with the image rate. To reduce the rate
|
// It takes very high bandwidth to the server, and a pretty fast client to keep up with the image rate. To reduce the rate
|
||||||
// change the playback slider to 0 and then it does not try to play at the same time it is scrubbing.
|
// change the playback slider to 0 and then it does not try to play at the same time it is scrubbing.
|
||||||
//
|
//
|
||||||
// Jul 23 2015 update:
|
|
||||||
// - Correct problem propagating selected playback speed
|
|
||||||
// - Change from blank monitor to specific message about no data in times with no recording
|
|
||||||
// - Enlarge and better center fonts on labels for lines.
|
|
||||||
// - Add support for monitor groups in selecting criteria from console
|
|
||||||
// - Fix some no-update conditions when playback was off but scale changed or refreshed.
|
|
||||||
// - Added translate call around buttons so as to facilitate possible translations later
|
|
||||||
// - Removed range from/to labels on very small graphs to keep from overlapping slider
|
|
||||||
// - Changed initial (from other page) position of slider to be in the middle to be more obvious
|
|
||||||
//
|
|
||||||
// Jul 29 2015 update
|
|
||||||
// - Add live mode shots from cameras via single frame pull mode
|
|
||||||
// - Added dynamic refresh rate based on how fast we can upload images
|
|
||||||
// - Closed some gaps in playback frames due to time rounding in retrieval.
|
|
||||||
// - Consolidated frame in-memory records to contiguous time rather than individual frame-seconds (still requires a good deal of browser memory)
|
|
||||||
// - Took out a lot of the integral second rounding so that it works better at subsequent replay speeds
|
|
||||||
//
|
|
||||||
// Jul 30 2015 update
|
|
||||||
// - Smoother adjustment of frame rate, fixed upper/lower limits (caching can cause runaway) (and a display, probably temporary, at the bottom)
|
|
||||||
// - Change to using index.php?view= instead of direct access so image access is authenticated
|
|
||||||
// - Add fractional speed for replay, and non-linear speed slider, and update current setting as slider moves (not when done)
|
|
||||||
// - Experimenting with a black background for monitors (this should be replaced with proper CSS later)
|
|
||||||
//
|
|
||||||
// Aug 02, 2015 update
|
|
||||||
// - Add max fit, make it default
|
|
||||||
// - Remove timeline in live mode, and restore when switched back (live button becomes toggle)
|
|
||||||
// - Add +/- zooms to individual monitors so you can adjust size, persist across reload buttons (only)
|
|
||||||
// - Change default to 1 hour and live mode (reduce workload on initial load, let people ask for huge history amounts)
|
|
||||||
// - Since this may be run as a standalone window for shortcuts, etc., add a "console" link to get back to the console
|
|
||||||
//
|
|
||||||
// August 6, 2015 update
|
|
||||||
// - Fix regression on linkage to events when starting and staying in live mode
|
|
||||||
// - Remove zoom/pan buttons in live mode as they are meaningless
|
|
||||||
// - Change "fit" to a button, and remove scale when fit is in use (this means fit/live has no sliders)
|
|
||||||
//
|
|
||||||
// August 8, 2015 update:
|
|
||||||
// - Optimize events query to significantly decrease load times
|
|
||||||
// - Consolidate frames to 10 seconds not 1 for faster load and less memory usage
|
|
||||||
// - Replace graphic image for no-data with text-on-canvas (faster)
|
|
||||||
// - Correct sorting issue related to normalized scale so biggest goes to top left more reliably
|
|
||||||
// - Corrections to Safari which won't support inline-flex (thanks Apple, really?!)
|
|
||||||
//
|
|
||||||
// August 9, 2015 updates:
|
|
||||||
// - Add auth tokens to zms call for those using authorization
|
|
||||||
//
|
|
||||||
|
|
||||||
if ( !canView( 'Events' ) ) {
|
if ( !canView( 'Events' ) ) {
|
||||||
$view = 'error';
|
$view = 'error';
|
||||||
|
@ -100,15 +55,22 @@ if ( !canView( 'Events' ) ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once( 'includes/Monitor.php' );
|
require_once( 'includes/Monitor.php' );
|
||||||
|
require_once( 'includes/Group.php' );
|
||||||
|
|
||||||
|
$groupSql = '';
|
||||||
|
$group_id = null;
|
||||||
|
if ( !empty($_REQUEST['group']) ) {
|
||||||
|
$group_id = $_REQUEST['group'];
|
||||||
|
} elseif ( isset( $_COOKIE['zmMontageReviewGroup'] ) ) {
|
||||||
|
$group_id = $_COOKIE['zmMontageReviewGroup'];
|
||||||
|
}
|
||||||
|
|
||||||
# FIXME THere is no way to select group at this time.
|
# FIXME THere is no way to select group at this time.
|
||||||
if ( !empty($_REQUEST['group']) ) {
|
if ( isset( $group_id ) and $group_id ) {
|
||||||
$group = $_REQUEST['group'];
|
$row = dbFetchOne( 'SELECT * FROM Groups WHERE Id = ?', NULL, array($group_id) );
|
||||||
$row = dbFetchOne( 'SELECT * FROM Groups WHERE Id = ?', NULL, array($_REQUEST['group']) );
|
|
||||||
$monitorsSql = "SELECT * FROM Monitors WHERE Function != 'None' AND find_in_set( Id, '".$row['MonitorIds']."' ) ";
|
$monitorsSql = "SELECT * FROM Monitors WHERE Function != 'None' AND find_in_set( Id, '".$row['MonitorIds']."' ) ";
|
||||||
} else {
|
} else {
|
||||||
$monitorsSql = "SELECT * FROM Monitors WHERE Function != 'None'";
|
$monitorsSql = "SELECT * FROM Monitors WHERE Function != 'None'";
|
||||||
$group = '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note that this finds incomplete events as well, and any frame records written, but still cannot "see" to the end frame
|
// Note that this finds incomplete events as well, and any frame records written, but still cannot "see" to the end frame
|
||||||
|
@ -197,14 +159,13 @@ for ( $i = 0; $i < count($speeds); $i++ ) {
|
||||||
if ( isset($_REQUEST['current']) )
|
if ( isset($_REQUEST['current']) )
|
||||||
$defaultCurrentTime = validHtmlStr($_REQUEST['current']);
|
$defaultCurrentTime = validHtmlStr($_REQUEST['current']);
|
||||||
|
|
||||||
|
|
||||||
$initialModeIsLive = 1;
|
$initialModeIsLive = 1;
|
||||||
if ( isset($_REQUEST['live']) && $_REQUEST['live']=='0' )
|
if ( isset($_REQUEST['live']) && $_REQUEST['live']=='0' )
|
||||||
$initialModeIsLive=0;
|
$initialModeIsLive=0;
|
||||||
|
|
||||||
$initialDisplayInterval=1000;
|
$initialDisplayInterval = 1000;
|
||||||
if ( isset($_REQUEST['displayinterval']) )
|
if ( isset($_REQUEST['displayinterval']) )
|
||||||
$initialDisplayInterval=validHtmlStr($_REQUEST['displayinterval']);
|
$initialDisplayInterval = validHtmlStr($_REQUEST['displayinterval']);
|
||||||
|
|
||||||
$eventsSql .= ' GROUP BY E.Id,E.Name,E.StartTime,E.Length,E.Frames,E.MaxScore,E.Cause,E.Notes,E.Archived,E.MonitorId';
|
$eventsSql .= ' GROUP BY E.Id,E.Name,E.StartTime,E.Length,E.Frames,E.MaxScore,E.Cause,E.Notes,E.Archived,E.MonitorId';
|
||||||
|
|
||||||
|
@ -242,6 +203,17 @@ input[type=range]::-ms-tooltip {
|
||||||
<a href="#" onclick="closeWindow();"><?php echo translate('Close') ?></a>
|
<a href="#" onclick="closeWindow();"><?php echo translate('Close') ?></a>
|
||||||
</div>
|
</div>
|
||||||
<h2><?php echo translate('MontageReview') ?></h2>
|
<h2><?php echo translate('MontageReview') ?></h2>
|
||||||
|
<div id="headerControl">
|
||||||
|
<span id="groupControl"><label><?php echo translate('Group') ?>:</label>
|
||||||
|
<?php
|
||||||
|
$groups = array(0=>'All');
|
||||||
|
foreach ( Group::find_all() as $Group ) {
|
||||||
|
$groups[$Group->Id()] = $Group->Name();
|
||||||
|
}
|
||||||
|
echo htmlSelect( 'group', $groups, $group_id, 'changeGroup(this);' );
|
||||||
|
?>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="ScaleDiv">
|
<div id="ScaleDiv">
|
||||||
<label for="scaleslider"><?php echo translate('Scale')?></label>
|
<label for="scaleslider"><?php echo translate('Scale')?></label>
|
||||||
|
|
|
@ -260,7 +260,9 @@ elseif ( $tab == "users" )
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div id="contentButtons">
|
<div id="contentButtons">
|
||||||
<input type="button" value="<?php echo translate('AddNewStorage') ?>" onclick="createPopup( '?view=storage&id=0', 'zmStorage', 'storage' );"<?php if ( !canEdit( 'System' ) ) { ?> disabled="disabled"<?php } ?>/><input type="submit" name="deleteBtn" value="<?php echo translate('Delete') ?>" disabled="disabled"/><input type="button" value="<?php echo translate('Cancel') ?>" onclick="closeWindow();"/>
|
<input type="button" value="<?php echo translate('AddNewStorage') ?>" onclick="createPopup( '?view=storage&id=0', 'zmStorage', 'storage' );"<?php if ( !canEdit( 'System' ) ) { ?> disabled="disabled"<?php } ?>/>
|
||||||
|
<input type="submit" name="deleteBtn" value="<?php echo translate('Delete') ?>" disabled="disabled"/>
|
||||||
|
<input type="button" value="<?php echo translate('Cancel') ?>" onclick="closeWindow();"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<?php
|
<?php
|
||||||
|
|
Loading…
Reference in New Issue