Fixes bugs in components view
parent
2d8bc53195
commit
eb8104595e
|
@ -9,7 +9,7 @@ class Component {
|
||||||
|
|
||||||
|
|
||||||
// list of component events
|
// list of component events
|
||||||
public function jitsiComponents($jitsi_component, $component_id, $from_time, $until_time, $offset=0, $items_per_page='') {
|
public function jitsiComponents($jitsi_component, $component_id, $event_type, $from_time, $until_time, $offset=0, $items_per_page='') {
|
||||||
|
|
||||||
// time period drill-down
|
// time period drill-down
|
||||||
// FIXME make it similar to the bash version
|
// FIXME make it similar to the bash version
|
||||||
|
@ -31,7 +31,13 @@ FROM
|
||||||
WHERE
|
WHERE
|
||||||
jitsi_component = %s
|
jitsi_component = %s
|
||||||
AND
|
AND
|
||||||
component_id = %s
|
component_id = %s";
|
||||||
|
if ($event_type != '' && $event_type != 'event_type') {
|
||||||
|
$sql .= "
|
||||||
|
AND
|
||||||
|
event_type LIKE '%%%s%%'";
|
||||||
|
}
|
||||||
|
$sql .= "
|
||||||
AND
|
AND
|
||||||
(time >= '%s 00:00:00' AND time <= '%s 23:59:59')
|
(time >= '%s 00:00:00' AND time <= '%s 23:59:59')
|
||||||
ORDER BY
|
ORDER BY
|
||||||
|
@ -42,7 +48,14 @@ ORDER BY
|
||||||
$sql .= ' LIMIT ' . $offset . ',' . $items_per_page;
|
$sql .= ' LIMIT ' . $offset . ',' . $items_per_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME this needs to be done with bound params instead of sprintf
|
||||||
|
if ($event_type != '' && $event_type != 'event_type') {
|
||||||
|
$sql = sprintf($sql, $jitsi_component, $component_id, $event_type, $from_time, $until_time);
|
||||||
|
$sql = str_replace("LIKE '%'", "LIKE '%", $sql);
|
||||||
|
$sql = str_replace("'%'\nAND", "%' AND", $sql);
|
||||||
|
} else {
|
||||||
$sql = sprintf($sql, $jitsi_component, $component_id, $from_time, $until_time);
|
$sql = sprintf($sql, $jitsi_component, $component_id, $from_time, $until_time);
|
||||||
|
}
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
$query->execute();
|
$query->execute();
|
||||||
|
|
|
@ -3,14 +3,17 @@
|
||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
<?php
|
<?php
|
||||||
$param = '';
|
$param = '';
|
||||||
if (isset($_GET['id'])) {
|
if (isset($_REQUEST['id'])) {
|
||||||
$param .= '&id=' . $_GET['id'];
|
$param .= '&id=' . $_REQUEST['id'];
|
||||||
}
|
}
|
||||||
if (isset($_GET['name'])) {
|
if (isset($_REQUEST['name'])) {
|
||||||
$param .= '&name=' . $_GET['name'];
|
$param .= '&name=' . $_REQUEST['name'];
|
||||||
}
|
}
|
||||||
if (isset($_GET['ip'])) {
|
if (isset($_REQUEST['ip'])) {
|
||||||
$param .= '&ip=' . $_GET['ip'];
|
$param .= '&ip=' . $_REQUEST['ip'];
|
||||||
|
}
|
||||||
|
if (isset($_REQUEST['event'])) {
|
||||||
|
$param .= '&event=' . $_REQUEST['event'];
|
||||||
}
|
}
|
||||||
if ($browse_page > 1) {
|
if ($browse_page > 1) {
|
||||||
echo '<span><a href="' . $url . '&p=1">first</a></span>';
|
echo '<span><a href="' . $url . '&p=1">first</a></span>';
|
||||||
|
|
|
@ -10,17 +10,10 @@ include '../app/helpers/time_range.php';
|
||||||
|
|
||||||
// jitsi component events list
|
// jitsi component events list
|
||||||
// we use $_REQUEST, so that both links and forms work
|
// we use $_REQUEST, so that both links and forms work
|
||||||
if (isset($_REQUEST['name']) && $_REQUEST['name'] != '') {
|
// if it's there, but empty, we make it same as the field name; otherwise assign the value
|
||||||
$jitsi_component = "'" . $_REQUEST['name'] . "'";
|
$jitsi_component = !empty($_REQUEST['name']) ? "'" . $_REQUEST['name'] . "'" : 'jitsi_component';
|
||||||
$component_id = 'component_id';
|
$component_id = !empty($_REQUEST['id']) ? "'" . $_REQUEST['id'] . "'" : 'component_id';
|
||||||
} elseif (isset($_REQUEST['id']) && $_REQUEST['id'] != '') {
|
$event_type = !empty($_REQUEST['event']) ? "'" . $_REQUEST['event'] . "'" : 'event_type';
|
||||||
$component_id = "'" . $_REQUEST['id'] . "'";
|
|
||||||
$jitsi_component = 'jitsi_component';
|
|
||||||
} else {
|
|
||||||
// we need the variables to use them later in sql for columnname = columnname
|
|
||||||
$jitsi_component = 'jitsi_component';
|
|
||||||
$component_id = 'component_id';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -38,8 +31,8 @@ $browse_page = (int)$browse_page;
|
||||||
$offset = ($browse_page -1) * $items_per_page;
|
$offset = ($browse_page -1) * $items_per_page;
|
||||||
|
|
||||||
// prepare the result
|
// prepare the result
|
||||||
$search = $componentObject->jitsiComponents($jitsi_component, $component_id, $from_time, $until_time, $offset, $items_per_page);
|
$search = $componentObject->jitsiComponents($jitsi_component, $component_id, $event_type, $from_time, $until_time, $offset, $items_per_page);
|
||||||
$search_all = $componentObject->jitsiComponents($jitsi_component, $component_id, $from_time, $until_time);
|
$search_all = $componentObject->jitsiComponents($jitsi_component, $component_id, $event_type, $from_time, $until_time);
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
// we get total items and number of pages
|
// we get total items and number of pages
|
||||||
|
@ -68,8 +61,6 @@ if (!empty($search)) {
|
||||||
// prepare the widget
|
// prepare the widget
|
||||||
$widget['full'] = false;
|
$widget['full'] = false;
|
||||||
$widget['name'] = 'AllComponents';
|
$widget['name'] = 'AllComponents';
|
||||||
$widget['collapsible'] = false;
|
|
||||||
$widget['collapsed'] = false;
|
|
||||||
$widget['filter'] = true;
|
$widget['filter'] = true;
|
||||||
$widget['pagination'] = true;
|
$widget['pagination'] = true;
|
||||||
|
|
||||||
|
@ -89,6 +80,6 @@ if (!empty($components['records'])) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// display the widget
|
// display the widget
|
||||||
include '../app/templates/widget.php';
|
include '../app/templates/event-list-components.php';
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="card w-auto bg-light border-light card-body" style="flex-direction: row;"><?= $widget['title'] ?></div>
|
||||||
|
|
||||||
|
<!-- Results filter -->
|
||||||
|
<div class="card w-auto bg-light border-light card-body text-right" style="text-align: right;">
|
||||||
|
<form method="POST" id="filter_form" action="?platform=<?= $platform_id?>&page=<?= $page ?>">
|
||||||
|
<label for="from_time">from</label>
|
||||||
|
<input type="date" id="from_time" name="from_time"<?php if (isset($_REQUEST['from_time'])) echo " value=\"" . $_REQUEST['from_time'] . "\"" ?> />
|
||||||
|
<label for="until_time">until</label>
|
||||||
|
<input type="date" id="until_time" name="until_time"<?php if (isset($_REQUEST['until_time'])) echo " value=\"" . $_REQUEST['until_time'] . "\"" ?> />
|
||||||
|
<input type="text" name="id" placeholder="component ID"<?php if (isset($_REQUEST['id'])) echo " value=\"" . $_REQUEST['id'] . "\"" ?> />
|
||||||
|
<input type="text" name="name" placeholder="component name"<?php if (isset($_REQUEST['name'])) echo " value=\"" . $_REQUEST['name'] . "\"" ?> />
|
||||||
|
<input type="text" name="event" placeholder="event name"<?php if (isset($_REQUEST['event'])) echo " value=\"" . $_REQUEST['event'] . "\"" ?> />
|
||||||
|
<input type="button" onclick="clearFilter()" value="clear" />
|
||||||
|
<input type="submit" value="search" />
|
||||||
|
</form>
|
||||||
|
<script>
|
||||||
|
function clearFilter() {
|
||||||
|
document.getElementById("filter_form").reset();
|
||||||
|
const filterFields = document.querySelectorAll("#filter_form input");
|
||||||
|
filterFields.forEach(input => {
|
||||||
|
if (input.type === 'text' ||input.type === 'date') {
|
||||||
|
input.value = '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
<!-- /Results filter -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- widget "<?= $widget['name']; ?>" -->
|
||||||
|
<div class="collapse show" id="collapse<?= $widget['name'] ?>">
|
||||||
|
<?php if ($time_range_specified) { ?>
|
||||||
|
<p class="m-3">time period: <strong><?= $from_time ?> - <?= $until_time ?></strong></p>
|
||||||
|
<?php } ?>
|
||||||
|
<div class="mb-5">
|
||||||
|
<?php if ($widget['full'] === true) { ?>
|
||||||
|
<table class="table table-striped table-hover table-bordered">
|
||||||
|
<thead class="thead-dark">
|
||||||
|
<tr>
|
||||||
|
<?php foreach ($widget['table_headers'] as $header) { ?>
|
||||||
|
<th scope="col"><?= htmlspecialchars($header) ?></th>
|
||||||
|
<?php } ?>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($widget['table_records'] as $row) { ?>
|
||||||
|
<tr>
|
||||||
|
<?php foreach ($row as $key => $column) { ?>
|
||||||
|
<?php if ($key === 'component ID') { ?>
|
||||||
|
<td><a href="<?= $app_root ?>?platform=<?= $platform_id?>&page=components&id=<?= htmlspecialchars($column ?? '') ?>"><?= htmlspecialchars($column ?? '') ?></a></td>
|
||||||
|
<?php } elseif ($key === 'component') { ?>
|
||||||
|
<td><a href="<?= $app_root ?>?platform=<?= $platform_id?>&page=components&name=<?= htmlspecialchars($column ?? '') ?>"><?= htmlspecialchars($column ?? '') ?></a></td>
|
||||||
|
<?php } else { ?>
|
||||||
|
<td><?= htmlspecialchars($column ?? '') ?></td>
|
||||||
|
<?php }
|
||||||
|
} ?>
|
||||||
|
</tr>
|
||||||
|
<?php } ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php
|
||||||
|
if ($widget['pagination'] && $item_count > $items_per_page) {
|
||||||
|
$url = "$app_root?platform=$platform_id&page=$page";
|
||||||
|
include '../app/helpers/pagination.php';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<?php } else { ?>
|
||||||
|
<p class="m-3">No matching records found.</p>
|
||||||
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /widget "<?= $widget['name']; ?>" -->
|
Loading…
Reference in New Issue