diff --git a/web/skins/classic/views/timeline.php b/web/skins/classic/views/timeline.php
index 581499aff..445d5453d 100644
--- a/web/skins/classic/views/timeline.php
+++ b/web/skins/classic/views/timeline.php
@@ -37,16 +37,16 @@ define( 'STRF_TL_AXIS_RANGE_YEAR1', '%b %Y' );
define( 'STRF_TL_AXIS_RANGE_YEAR2', STRF_TL_AXIS_RANGE_YEAR1 );
// When the chart range is months
-define( "STRF_TL_AXIS_RANGE_MONTH1", "%b" );
-define( "STRF_TL_AXIS_RANGE_MONTH2", STRF_TL_AXIS_RANGE_MONTH1." %Y" );
+define( 'STRF_TL_AXIS_RANGE_MONTH1', '%b' );
+define( 'STRF_TL_AXIS_RANGE_MONTH2', STRF_TL_AXIS_RANGE_MONTH1.' %Y' );
// When the chart range is days
-define( "STRF_TL_AXIS_RANGE_DAY1", "%d" );
-define( "STRF_TL_AXIS_RANGE_DAY2", STRF_TL_AXIS_RANGE_DAY1." %b %Y" );
+define( 'STRF_TL_AXIS_RANGE_DAY1', '%d' );
+define( 'STRF_TL_AXIS_RANGE_DAY2', STRF_TL_AXIS_RANGE_DAY1.' %b %Y' );
// When the chart range is less than a day
-define( "STRF_TL_AXIS_RANGE_TIME1", "%H:%M" );
-define( "STRF_TL_AXIS_RANGE_TIME2", STRF_TL_AXIS_RANGE_TIME1.", %d %b %Y" );
+define( 'STRF_TL_AXIS_RANGE_TIME1', '%H:%M' );
+define( 'STRF_TL_AXIS_RANGE_TIME2', STRF_TL_AXIS_RANGE_TIME1.', %d %b %Y' );
//
// These are the time axis tick labels
@@ -74,56 +74,56 @@ $minEventWidth = 3;
$maxEventWidth = 6;
$chart = array(
- "width"=>700,
- "height"=>460,
- "image" => array(
- "width"=>264,
- "height"=>220,
- "topOffset"=>20,
+ 'width'=>700,
+ 'height'=>460,
+ 'image' => array(
+ 'width'=>264,
+ 'height'=>220,
+ 'topOffset'=>20,
),
- "imageText" => array(
- "width"=>400,
- "height"=>30,
- "topOffset"=>20,
+ 'imageText' => array(
+ 'width'=>400,
+ 'height'=>30,
+ 'topOffset'=>20,
),
- "graph" => array(
- "width"=>600,
- "height"=>160,
- "topOffset"=>30,
+ 'graph' => array(
+ 'width'=>600,
+ 'height'=>160,
+ 'topOffset'=>30,
),
- "title" => array(
- "topOffset"=>50
+ 'title' => array(
+ 'topOffset'=>50
),
- "key" => array(
- "topOffset"=>50
+ 'key' => array(
+ 'topOffset'=>50
),
- "axes" => array(
- "x" => array(
- "height" => 20,
+ 'axes' => array(
+ 'x' => array(
+ 'height' => 20,
),
- "y" => array(
- "width" => 30,
+ 'y' => array(
+ 'width' => 30,
),
),
- "grid" => array(
- "x" => array(
- "major" => array(
- "max" => 12,
- "min" => 4,
+ 'grid' => array(
+ 'x' => array(
+ 'major' => array(
+ 'max' => 12,
+ 'min' => 4,
),
- "minor" => array(
- "max" => 48,
- "min" => 12,
+ 'minor' => array(
+ 'max' => 48,
+ 'min' => 12,
),
),
- "y" => array(
- "major" => array(
- "max" => 8,
- "min" => 1,
+ 'y' => array(
+ 'major' => array(
+ 'max' => 8,
+ 'min' => 1,
),
- "minor" => array(
- "max" => 0,
- "min" => 0,
+ 'minor' => array(
+ 'max' => 0,
+ 'min' => 0,
),
),
),
@@ -152,7 +152,7 @@ if ( !empty($user['MonitorIds']) ) {
}
if ( isset($_REQUEST['filter']) )
- $tree = parseFilterToTree( $_REQUEST['filter'] );
+ $tree = parseFilterToTree( $_REQUEST['filter']['Query'] );
else
$tree = false;
@@ -253,16 +253,16 @@ if ( $tree ) {
}
$scales = array(
- array( "name"=>"year", "factor"=>60*60*24*365, "align"=>1, "zoomout"=>2, "label"=>STRF_TL_AXIS_LABEL_YEAR ),
- array( "name"=>"month", "factor"=>60*60*24*30, "align"=>1, "zoomout"=>12, "label"=>STRF_TL_AXIS_LABEL_MONTH ),
- array( "name"=>"week", "factor"=>60*60*24*7, "align"=>1, "zoomout"=>4.25, "label"=>STRF_TL_AXIS_LABEL_WEEK, "labelCheck"=>"%W" ),
- array( "name"=>"day", "factor"=>60*60*24, "align"=>1, "zoomout"=>7, "label"=>STRF_TL_AXIS_LABEL_DAY ),
- array( "name"=>"hour4", "factor"=>60*60, "align"=>4, "zoomout"=>6, "label"=>STRF_TL_AXIS_LABEL_4HOUR, "labelCheck"=>"%H" ),
- array( "name"=>"hour", "factor"=>60*60, "align"=>1, "zoomout"=>4, "label"=>STRF_TL_AXIS_LABEL_HOUR, "labelCheck"=>"%H" ),
- array( "name"=>"minute10", "factor"=>60, "align"=>10, "zoomout"=>6, "label"=>STRF_TL_AXIS_LABEL_10MINUTE, "labelCheck"=>"%M" ),
- array( "name"=>"minute", "factor"=>60, "align"=>1, "zoomout"=>10, "label"=>STRF_TL_AXIS_LABEL_MINUTE, "labelCheck"=>"%M" ),
- array( "name"=>"second10", "factor"=>1, "align"=>10, "zoomout"=>6, "label"=>STRF_TL_AXIS_LABEL_10SECOND ),
- array( "name"=>"second", "factor"=>1, "align"=>1, "zoomout"=>10, "label"=>STRF_TL_AXIS_LABEL_SECOND ),
+ array( 'name'=>"year", 'factor'=>60*60*24*365, 'align'=>1, 'zoomout'=>2, 'label'=>STRF_TL_AXIS_LABEL_YEAR ),
+ array( 'name'=>"month", 'factor'=>60*60*24*30, 'align'=>1, 'zoomout'=>12, 'label'=>STRF_TL_AXIS_LABEL_MONTH ),
+ array( 'name'=>"week", 'factor'=>60*60*24*7, 'align'=>1, 'zoomout'=>4.25, 'label'=>STRF_TL_AXIS_LABEL_WEEK, 'labelCheck'=>"%W" ),
+ array( 'name'=>"day", 'factor'=>60*60*24, 'align'=>1, 'zoomout'=>7, 'label'=>STRF_TL_AXIS_LABEL_DAY ),
+ array( 'name'=>"hour4", 'factor'=>60*60, 'align'=>4, 'zoomout'=>6, 'label'=>STRF_TL_AXIS_LABEL_4HOUR, 'labelCheck'=>"%H" ),
+ array( 'name'=>"hour", 'factor'=>60*60, 'align'=>1, 'zoomout'=>4, 'label'=>STRF_TL_AXIS_LABEL_HOUR, 'labelCheck'=>"%H" ),
+ array( 'name'=>"minute10", 'factor'=>60, 'align'=>10, 'zoomout'=>6, 'label'=>STRF_TL_AXIS_LABEL_10MINUTE, 'labelCheck'=>"%M" ),
+ array( 'name'=>"minute", 'factor'=>60, 'align'=>1, 'zoomout'=>10, 'label'=>STRF_TL_AXIS_LABEL_MINUTE, 'labelCheck'=>"%M" ),
+ array( 'name'=>"second10", 'factor'=>1, 'align'=>10, 'zoomout'=>6, 'label'=>STRF_TL_AXIS_LABEL_10SECOND ),
+ array( 'name'=>"second", 'factor'=>1, 'align'=>1, 'zoomout'=>10, 'label'=>STRF_TL_AXIS_LABEL_SECOND ),
);
$majXScale = getDateScale( $scales, $range, $chart['grid']['x']['major']['min'], $chart['grid']['x']['major']['max'] );
@@ -291,17 +291,17 @@ if ( isset($minTime) && isset($maxTime) ) {
$eventsSql .= " and EndTime >= '$minTime' and StartTime <= '$maxTime'";
}
-$eventsSql .= " order by Id asc";
+$eventsSql .= ' order by Id asc';
//echo "ESQL: $eventsSql
";
$chart['data'] = array(
- "x" => array(
- "lo" => strtotime( $minTime ),
- "hi" => strtotime( $maxTime ),
+ 'x' => array(
+ 'lo' => strtotime( $minTime ),
+ 'hi' => strtotime( $maxTime ),
),
- "y" => array(
- "lo" => 0,
- "hi" => 0,
+ 'y' => array(
+ 'lo' => 0,
+ 'hi' => 0,
)
);
@@ -311,95 +311,105 @@ $chart['data']['x']['density'] = $chart['data']['x']['range']/$chart['graph']['w
$monEventSlots = array();
$monFrameSlots = array();
$monitorIds = array();
-foreach( dbFetchAll( $eventsSql ) as $event ) {
- if ( !isset($monitorIds[$event['MonitorId']]) )
- $monitorIds[$event['MonitorId']] = true;
+$events_result = dbQuery( $eventsSql );
+if ( ! $events_result ) {
+ Fatal( "SQL-ERR");
+ return;
+}
- if ( !isset($monEventSlots[$event['MonitorId']]) )
- $monEventSlots[$event['MonitorId']] = array();
+$first_event = $event = $events_result->fetch( PDO::FETCH_ASSOC );
+if ( $event ) {
+ do {
- if ( !isset($monFrameSlots[$event['MonitorId']]) )
- $monFrameSlots[$event['MonitorId']] = array();
+ if ( !isset($monitorIds[$event['MonitorId']]) )
+ $monitorIds[$event['MonitorId']] = true;
- $currEventSlots = &$monEventSlots[$event['MonitorId']];
- $currFrameSlots = &$monFrameSlots[$event['MonitorId']];
+ if ( !isset($monEventSlots[$event['MonitorId']]) )
+ $monEventSlots[$event['MonitorId']] = array();
- $startTimeT = strtotime($event['StartTime']);
- $startIndex = $rawStartIndex = (int)(($startTimeT - $chart['data']['x']['lo']) / $chart['data']['x']['density']);
- if ( $startIndex < 0 )
- $startIndex = 0;
+ if ( !isset($monFrameSlots[$event['MonitorId']]) )
+ $monFrameSlots[$event['MonitorId']] = array();
- if ( isset($event['EndTime']) )
- $endTimeT = strtotime($event['EndTime']);
- else
- $endTimeT = time();
- $endIndex = $rawEndIndex = (int)(($endTimeT - $chart['data']['x']['lo']) / $chart['data']['x']['density']);
+ $currEventSlots = &$monEventSlots[$event['MonitorId']];
+ $currFrameSlots = &$monFrameSlots[$event['MonitorId']];
- if ( $endIndex >= $chart['graph']['width'] )
- $endIndex = $chart['graph']['width'] - 1;
+ $startTimeT = strtotime($event['StartTime']);
+ $startIndex = $rawStartIndex = (int)(($startTimeT - $chart['data']['x']['lo']) / $chart['data']['x']['density']);
+ if ( $startIndex < 0 )
+ $startIndex = 0;
- for ( $i = $startIndex; $i <= $endIndex; $i++ ) {
- if ( !isset($currEventSlots[$i]) ) {
- if ( $rawStartIndex == $rawEndIndex ) {
- $offset = 1;
- } else {
- $offset = 1 + ($event['Frames']?((int)(($event['Frames']-1)*(($i-$rawStartIndex)/($rawEndIndex-$rawStartIndex)))):0);
- }
- $currEventSlots[$i] = array( "count"=>0, "width"=>1, "offset"=>$offset, "event"=>$event );
- } else {
- $currEventSlots[$i]['count']++;
- }
- }
- if ( $event['MaxScore'] > 0 ) {
- if ( $startIndex == $endIndex ) {
- $framesSql = 'SELECT FrameId,Score FROM Frames WHERE EventId = ? AND Score > 0 ORDER BY Score DESC LIMIT 1';
- $frame = dbFetchOne( $framesSql, NULL, array($event['Id']) );
+ if ( isset($event['EndTime']) )
+ $endTimeT = strtotime($event['EndTime']);
+ else
+ $endTimeT = time();
+ $endIndex = $rawEndIndex = (int)(($endTimeT - $chart['data']['x']['lo']) / $chart['data']['x']['density']);
- $i = $startIndex;
- if ( !isset($currFrameSlots[$i]) ) {
- $currFrameSlots[$i] = array( 'count'=>1, 'value'=>$event['MaxScore'], 'event'=>$event, 'frame'=>$frame );
- } else {
- $currFrameSlots[$i]['count']++;
- if ( $event['MaxScore'] > $currFrameSlots[$i]['value'] ) {
- $currFrameSlots[$i]['value'] = $event['MaxScore'];
- $currFrameSlots[$i]['event'] = $event;
- $currFrameSlots[$i]['frame'] = $frame;
- }
- }
- if ( $event['MaxScore'] > $chart['data']['y']['hi'] ) {
- $chart['data']['y']['hi'] = $event['MaxScore'];
- }
- } else {
- $framesSql = 'SELECT FrameId,Delta,unix_timestamp(TimeStamp) AS TimeT,Score FROM Frames WHERE EventId = ? AND Score > 0';
- $result = dbQuery( $framesSql, array( $event['Id'] ) );
- while( $frame = dbFetchNext( $result ) ) {
- if ( $frame['Score'] == 0 )
- continue;
- $frameTimeT = $frame['TimeT'];
- $frameTimeT = $startTimeT + $frame['Delta'];
- $frameIndex = (int)(($frameTimeT - $chart['data']['x']['lo']) / $chart['data']['x']['density']);
- if ( $frameIndex < 0 )
- continue;
- if ( $frameIndex >= $chart['graph']['width'] )
- continue;
+ if ( $endIndex >= $chart['graph']['width'] )
+ $endIndex = $chart['graph']['width'] - 1;
- if ( !isset($currFrameSlots[$frameIndex]) ) {
- $currFrameSlots[$frameIndex] = array( 'count'=>1, 'value'=>$frame['Score'], 'event'=>$event, 'frame'=>$frame );
+ for ( $i = $startIndex; $i <= $endIndex; $i++ ) {
+ if ( !isset($currEventSlots[$i]) ) {
+ if ( $rawStartIndex == $rawEndIndex ) {
+ $offset = 1;
} else {
- $currFrameSlots[$frameIndex]['count']++;
- if ( $frame['Score'] > $currFrameSlots[$frameIndex]['value'] ) {
- $currFrameSlots[$frameIndex]['value'] = $frame['Score'];
- $currFrameSlots[$frameIndex]['event'] = $event;
- $currFrameSlots[$frameIndex]['frame'] = $frame;
+ $offset = 1 + ($event['Frames']?((int)(($event['Frames']-1)*(($i-$rawStartIndex)/($rawEndIndex-$rawStartIndex)))):0);
+ }
+ $currEventSlots[$i] = array( 'count'=>0, 'width'=>1, 'offset'=>$offset, 'event'=>$event );
+ } else {
+ $currEventSlots[$i]['count']++;
+ }
+ }
+ if ( $event['MaxScore'] > 0 ) {
+ if ( $startIndex == $endIndex ) {
+ $framesSql = 'SELECT FrameId,Score FROM Frames WHERE EventId = ? AND Score > 0 ORDER BY Score DESC LIMIT 1';
+ $frame = dbFetchOne( $framesSql, NULL, array($event['Id']) );
+
+ $i = $startIndex;
+ if ( !isset($currFrameSlots[$i]) ) {
+ $currFrameSlots[$i] = array( 'count'=>1, 'value'=>$event['MaxScore'], 'event'=>$event, 'frame'=>$frame );
+ } else {
+ $currFrameSlots[$i]['count']++;
+ if ( $event['MaxScore'] > $currFrameSlots[$i]['value'] ) {
+ $currFrameSlots[$i]['value'] = $event['MaxScore'];
+ $currFrameSlots[$i]['event'] = $event;
+ $currFrameSlots[$i]['frame'] = $frame;
}
}
- if ( $frame['Score'] > $chart['data']['y']['hi'] ) {
- $chart['data']['y']['hi'] = $frame['Score'];
+ if ( $event['MaxScore'] > $chart['data']['y']['hi'] ) {
+ $chart['data']['y']['hi'] = $event['MaxScore'];
}
- } // end foreach frame
- }
- } // end if MaxScore > 0
-} // end foreach event
+ } else {
+ $framesSql = 'SELECT FrameId,Delta,unix_timestamp(TimeStamp) AS TimeT,Score FROM Frames WHERE EventId = ? AND Score > 0';
+ $result = dbQuery( $framesSql, array( $event['Id'] ) );
+ while( $frame = dbFetchNext( $result ) ) {
+ if ( $frame['Score'] == 0 )
+ continue;
+ $frameTimeT = $frame['TimeT'];
+ $frameTimeT = $startTimeT + $frame['Delta'];
+ $frameIndex = (int)(($frameTimeT - $chart['data']['x']['lo']) / $chart['data']['x']['density']);
+ if ( $frameIndex < 0 )
+ continue;
+ if ( $frameIndex >= $chart['graph']['width'] )
+ continue;
+
+ if ( !isset($currFrameSlots[$frameIndex]) ) {
+ $currFrameSlots[$frameIndex] = array( 'count'=>1, 'value'=>$frame['Score'], 'event'=>$event, 'frame'=>$frame );
+ } else {
+ $currFrameSlots[$frameIndex]['count']++;
+ if ( $frame['Score'] > $currFrameSlots[$frameIndex]['value'] ) {
+ $currFrameSlots[$frameIndex]['value'] = $frame['Score'];
+ $currFrameSlots[$frameIndex]['event'] = $event;
+ $currFrameSlots[$frameIndex]['frame'] = $frame;
+ }
+ }
+ if ( $frame['Score'] > $chart['data']['y']['hi'] ) {
+ $chart['data']['y']['hi'] = $frame['Score'];
+ }
+ } // end foreach frame
+ }
+ } // end if MaxScore > 0
+ } while( $event = $events_result->fetch( PDO::FETCH_ASSOC ) );
+} # end if have first event
ksort( $monitorIds, SORT_NUMERIC );
ksort( $monEventSlots, SORT_NUMERIC );
@@ -707,7 +717,7 @@ xhtmlHeaders(__FILE__, translate('Timeline') );
?>
@@ -854,6 +864,6 @@ foreach( array_keys($monEventSlots) as $monitorId ) {
-
+