Merge branch 'master' of github.com:ZoneMinder/zoneminder
This commit is contained in:
commit
ad137adb4c
|
@ -114,7 +114,7 @@ function queryRequest($search, $advsearch, $sort, $offset, $order, $limit) {
|
||||||
// The table we want our data from
|
// The table we want our data from
|
||||||
$table = 'Events';
|
$table = 'Events';
|
||||||
|
|
||||||
// The names of the dB columns in the log table we are interested in
|
// The names of the dB columns in the events table we are interested in
|
||||||
$columns = array('Id', 'MonitorId', 'StorageId', 'Name', 'Cause', 'StartTime', 'EndTime', 'Length', 'Frames', 'AlarmFrames', 'TotScore', 'AvgScore', 'MaxScore', 'Archived', 'Emailed', 'Notes', 'DiskSpace');
|
$columns = array('Id', 'MonitorId', 'StorageId', 'Name', 'Cause', 'StartTime', 'EndTime', 'Length', 'Frames', 'AlarmFrames', 'TotScore', 'AvgScore', 'MaxScore', 'Archived', 'Emailed', 'Notes', 'DiskSpace');
|
||||||
|
|
||||||
// The names of columns shown in the event view that are NOT dB columns in the database
|
// The names of columns shown in the event view that are NOT dB columns in the database
|
||||||
|
@ -124,6 +124,14 @@ function queryRequest($search, $advsearch, $sort, $offset, $order, $limit) {
|
||||||
ZM\Fatal('Invalid sort field: ' . $sort);
|
ZM\Fatal('Invalid sort field: ' . $sort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$col_str = '';
|
||||||
|
foreach ( $columns as $key => $col ) {
|
||||||
|
if ( $col == 'Name' ) {
|
||||||
|
$columns[$key] = 'Monitors.'.$col;
|
||||||
|
} else {
|
||||||
|
$columns[$key] = $table.'.'.$col;
|
||||||
|
}
|
||||||
|
}
|
||||||
$col_str = implode(', ', $columns);
|
$col_str = implode(', ', $columns);
|
||||||
$data = array();
|
$data = array();
|
||||||
$query = array();
|
$query = array();
|
||||||
|
@ -140,8 +148,7 @@ function queryRequest($search, $advsearch, $sort, $offset, $order, $limit) {
|
||||||
ZM\Error("'$col' is not a sortable column name");
|
ZM\Error("'$col' is not a sortable column name");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//Don't use wildcards. Let the user specify them if needed.
|
$text = '%' .$text. '%';
|
||||||
//$text = '%' .$text. '%';
|
|
||||||
array_push($likes, $col.' LIKE ?');
|
array_push($likes, $col.' LIKE ?');
|
||||||
array_push($query['values'], $text);
|
array_push($query['values'], $text);
|
||||||
}
|
}
|
||||||
|
@ -159,7 +166,7 @@ function queryRequest($search, $advsearch, $sort, $offset, $order, $limit) {
|
||||||
$where = ' WHERE (' .implode(' OR ', $likes). ')';
|
$where = ' WHERE (' .implode(' OR ', $likes). ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
$query['sql'] = 'SELECT ' .$col_str. ' FROM `' .$table. '` ' .$where. ' ORDER BY ' .$sort. ' ' .$order. ' LIMIT ?, ?';
|
$query['sql'] = 'SELECT ' .$col_str. ' FROM `' .$table. '` INNER JOIN Monitors ON Events.MonitorId = Monitors.Name' .$where. ' ORDER BY LENGTH(' .$sort. '), ' .$sort. ' ' .$order. ' LIMIT ?, ?';
|
||||||
array_push($query['values'], $offset, $limit);
|
array_push($query['values'], $offset, $limit);
|
||||||
|
|
||||||
ZM\Warning('Calling the following sql query: ' .$query['sql']);
|
ZM\Warning('Calling the following sql query: ' .$query['sql']);
|
||||||
|
@ -196,7 +203,7 @@ function queryRequest($search, $advsearch, $sort, $offset, $order, $limit) {
|
||||||
$row['Name'] = validHtmlStr($row['Name']);
|
$row['Name'] = validHtmlStr($row['Name']);
|
||||||
$row['Archived'] = $row['Archived'] ? translate('Yes') : translate('No');
|
$row['Archived'] = $row['Archived'] ? translate('Yes') : translate('No');
|
||||||
$row['Emailed'] = $row['Emailed'] ? translate('Yes') : translate('No');
|
$row['Emailed'] = $row['Emailed'] ? translate('Yes') : translate('No');
|
||||||
$row['Monitor'] = ( $row['MonitorId'] and isset($MonitorById[$row['MonitorId']]) ) ? $MonitorById[$row['MonitorId']]->Name() : '';
|
//$row['Monitor'] = ( $row['MonitorId'] and isset($MonitorById[$row['MonitorId']]) ) ? $MonitorById[$row['MonitorId']]->Name() : '';
|
||||||
$row['Cause'] = validHtmlStr($row['Cause']);
|
$row['Cause'] = validHtmlStr($row['Cause']);
|
||||||
$row['StartTime'] = strftime(STRF_FMT_DATETIME_SHORTER, strtotime($row['StartTime']));
|
$row['StartTime'] = strftime(STRF_FMT_DATETIME_SHORTER, strtotime($row['StartTime']));
|
||||||
$row['EndTime'] = strftime(STRF_FMT_DATETIME_SHORTER, strtotime($row['StartTime']));
|
$row['EndTime'] = strftime(STRF_FMT_DATETIME_SHORTER, strtotime($row['StartTime']));
|
||||||
|
|
|
@ -54,7 +54,7 @@ function processRows(rows) {
|
||||||
row.Id = '<a href="?view=event&eid=' + eid + filterQuery + sortQuery + '&page=1">' + eid + '</a>';
|
row.Id = '<a href="?view=event&eid=' + eid + filterQuery + sortQuery + '&page=1">' + eid + '</a>';
|
||||||
row.Name = '<a href="?view=event&eid=' + eid + filterQuery + sortQuery + '&page=1">' + row.Name + '</a>'
|
row.Name = '<a href="?view=event&eid=' + eid + filterQuery + sortQuery + '&page=1">' + row.Name + '</a>'
|
||||||
+ '<br/><div class="small text-nowrap text-muted">' + archived + emailed + '</div>';
|
+ '<br/><div class="small text-nowrap text-muted">' + archived + emailed + '</div>';
|
||||||
if ( canEditMonitors ) row.Monitor = '<a href="?view=monitor&mid=' + mid + '">' + row.Monitor + '</a>';
|
if ( canEditMonitors ) row.Name = '<a href="?view=monitor&mid=' + mid + '">' + row.Name + '</a>';
|
||||||
if ( canEditEvents ) row.Cause = '<a href="#" title="' + row.Notes + '" class="eDetailLink" data-eid="' + eid + '">' + row.Cause + '</a>';
|
if ( canEditEvents ) row.Cause = '<a href="#" title="' + row.Notes + '" class="eDetailLink" data-eid="' + eid + '">' + row.Cause + '</a>';
|
||||||
if ( row.Notes.indexOf('detected:') >= 0 ) {
|
if ( row.Notes.indexOf('detected:') >= 0 ) {
|
||||||
row.Cause = row.Cause + '<a href="#?view=image&eid=' + eid + '&fid=objdetect"><div class="small text-nowrap text-muted"><u>' + row.Notes + '</u></div></a>';
|
row.Cause = row.Cause + '<a href="#?view=image&eid=' + eid + '&fid=objdetect"><div class="small text-nowrap text-muted"><u>' + row.Notes + '</u></div></a>';
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
<?php
|
||||||
|
//
|
||||||
|
// ZoneMinder web events view file, $Date$, $Revision$
|
||||||
|
// Copyright (C) 2001-2008 Philip Coombes
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License
|
||||||
|
// as published by the Free Software Foundation; either version 2
|
||||||
|
// of the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
if ( !canView('Events') || (!empty($_REQUEST['execute']) && !canEdit('Events')) ) {
|
||||||
|
$view = 'error';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
xhtmlHeaders(__FILE__, translate('Events'));
|
||||||
|
getBodyTopHTML();
|
||||||
|
|
||||||
|
?>
|
||||||
|
<?php echo getNavBarHTML() ?>
|
||||||
|
<div id="page" class="container-fluid p-3">
|
||||||
|
<!-- Toolbar button placement and styling handled by bootstrap-tables -->
|
||||||
|
<div id="toolbar">
|
||||||
|
<button id="backBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Back') ?>" disabled><i class="fa fa-arrow-left"></i></button>
|
||||||
|
<button id="refreshBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Refresh') ?>" ><i class="fa fa-refresh"></i></button>
|
||||||
|
<button id="tlineBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('ShowTimeline') ?>" ><i class="fa fa-history"></i></button>
|
||||||
|
<button id="filterBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Filter') ?>"><i class="fa fa-filter"></i></button>
|
||||||
|
<button id="viewBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('View') ?>" disabled><i class="fa fa-binoculars"></i></button>
|
||||||
|
<button id="archiveBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Archive') ?>" disabled><i class="fa fa-archive"></i></button>
|
||||||
|
<button id="unarchiveBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Unarchive') ?>" disabled><i class="fa fa-file-archive-o"></i></button>
|
||||||
|
<button id="editBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Edit') ?>" disabled><i class="fa fa-pencil"></i></button>
|
||||||
|
<button id="exportBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Export') ?>" disabled><i class="fa fa-external-link"></i></button>
|
||||||
|
<button id="downloadBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('DownloadVideo') ?>" disabled><i class="fa fa-download"></i></button>
|
||||||
|
<button id="deleteBtn" class="btn btn-danger" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Delete') ?>" disabled><i class="fa fa-trash"></i></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Table styling handled by bootstrap-tables -->
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<table
|
||||||
|
id="eventTable"
|
||||||
|
data-locale="<?php echo i18n() ?>"
|
||||||
|
data-side-pagination="server"
|
||||||
|
data-ajax="ajaxRequest"
|
||||||
|
data-pagination="true"
|
||||||
|
data-show-pagination-switch="true"
|
||||||
|
data-page-list="[10, 25, 50, 100, 200, All]"
|
||||||
|
data-search="true"
|
||||||
|
data-cookie="true"
|
||||||
|
data-cookie-id-table="zmEventsTable"
|
||||||
|
data-cookie-expire="2y"
|
||||||
|
data-click-to-select="true"
|
||||||
|
data-remember-order="true"
|
||||||
|
data-show-columns="true"
|
||||||
|
data-show-export="true"
|
||||||
|
data-uncheckAll="true"
|
||||||
|
data-toolbar="#toolbar"
|
||||||
|
data-show-fullscreen="true"
|
||||||
|
data-click-to-select="true"
|
||||||
|
data-maintain-meta-data="true"
|
||||||
|
data-mobile-responsive="true"
|
||||||
|
data-buttons-class="btn btn-normal"
|
||||||
|
data-show-jump-to="true"
|
||||||
|
data-show-refresh="true"
|
||||||
|
class="table-sm table-borderless"
|
||||||
|
style="display:none;"
|
||||||
|
>
|
||||||
|
<thead>
|
||||||
|
<!-- Row styling is handled by bootstrap-tables -->
|
||||||
|
<tr>
|
||||||
|
<th data-sortable="false" data-field="toggleCheck" data-checkbox="true"></th>
|
||||||
|
<th data-sortable="true" data-field="Id"><?php echo translate('Id') ?></th>
|
||||||
|
<th data-sortable="true" data-field="Name"><?php echo translate('Name') ?></th>
|
||||||
|
<th data-sortable="true" data-field="Archived"><?php echo translate('Archived') ?></th>
|
||||||
|
<th data-sortable="true" data-field="Emailed"><?php echo translate('Emailed') ?></th>
|
||||||
|
<th data-sortable="true" data-field="Name"><?php echo translate('Monitor') ?></th>
|
||||||
|
<th data-sortable="true" data-field="Cause"><?php echo translate('Cause') ?></th>
|
||||||
|
<th data-sortable="true" data-field="StartTime"><?php echo translate('AttrStartTime') ?></th>
|
||||||
|
<th data-sortable="true" data-field="EndTime"><?php echo translate('AttrEndTime') ?></th>
|
||||||
|
<th data-sortable="true" data-field="Length"><?php echo translate('Duration') ?></th>
|
||||||
|
<th data-sortable="true" data-field="Frames"><?php echo translate('Frames') ?></th>
|
||||||
|
<th data-sortable="true" data-field="AlarmFrames"><?php echo translate('AlarmBrFrames') ?></th>
|
||||||
|
<th data-sortable="true" data-field="TotScore"><?php echo translate('TotalBrScore') ?></th>
|
||||||
|
<th data-sortable="true" data-field="AvgScore"><?php echo translate('AvgBrScore') ?></th>
|
||||||
|
<th data-sortable="true" data-field="MaxScore"><?php echo translate('MaxBrScore') ?></th>
|
||||||
|
<th data-sortable="false" data-field="Storage"><?php echo translate('Storage') ?></th>
|
||||||
|
<th data-sortable="true" data-field="DiskSpace"><?php echo translate('DiskSpace') ?></th>
|
||||||
|
<th data-sortable="false" data-field="Thumbnail"><?php echo translate('Thumbnail') ?></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
<!-- Row data populated via Ajax -->
|
||||||
|
</tbody>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php xhtmlFooter() ?>
|
Loading…
Reference in New Issue