Paginated logs page
By default, displaying 10 logs per page
This commit is contained in:
parent
fb305a3010
commit
2d5ee82731
3 changed files with 107 additions and 8 deletions
|
@ -15,10 +15,22 @@ $autobuild_directory = "/var/autobuild";
|
|||
$autobuild_repos_directory = "$autobuild_directory/repo";
|
||||
$autobuild_builds_directory = "$autobuild_directory/builds";
|
||||
|
||||
function get_build_logs() {
|
||||
function get_build_logs($offset = 0, $limit = null) {
|
||||
global $log_directory;
|
||||
return array_filter(glob("$log_directory/*.log"), 'file_not_empty');
|
||||
$log_list = array_filter(glob("$log_directory/*.log"), 'file_not_empty');
|
||||
|
||||
$log_list = array_slice($log_list, $offset, $limit);
|
||||
|
||||
return $log_list;
|
||||
}
|
||||
|
||||
function get_number_of_build_logs() {
|
||||
global $log_directory;
|
||||
$log_list = array_filter(glob("$log_directory/*.log"), 'file_not_empty');
|
||||
|
||||
return count($log_list);
|
||||
}
|
||||
|
||||
function get_log_file($log_number) {
|
||||
global $log_directory;
|
||||
$log_file = "$log_directory/$log_number.log";
|
||||
|
|
77
web/logs.php
77
web/logs.php
|
@ -8,16 +8,34 @@
|
|||
|
||||
require_once "global.php";
|
||||
|
||||
$page = 1;
|
||||
$logs_per_page = 10;
|
||||
|
||||
if (isset($_GET["page"]) && is_numeric($_GET["page"])) {
|
||||
$page = intval($_GET["page"]);
|
||||
}
|
||||
|
||||
if (isset($_GET["logs-per-page"]) && is_numeric($_GET["logs-per-page"])) {
|
||||
$logs_per_page = intval($_GET["logs-per-page"]);
|
||||
}
|
||||
|
||||
/* Are we deleting logs? */
|
||||
if (isset($_GET["delete-all"])) {
|
||||
if (isset($_GET["delete-all"]) && !isset($_GET["error"])) {
|
||||
delete_all_logs();
|
||||
} else if (isset($_GET["delete"])) {
|
||||
} else if (isset($_GET["delete-all-on-page"]) && !isset($_GET["error"])) {
|
||||
$build_logs = get_build_logs(($page - 1) * $logs_per_page, $logs_per_page);
|
||||
foreach ($build_logs as $log_file) {
|
||||
$log_number = str_replace(".log", "", basename($log_file));
|
||||
delete_log($log_number);
|
||||
}
|
||||
} else if (isset($_GET["delete"]) && !isset($_GET["error"])) {
|
||||
foreach ($_GET["delete"] as $log_number) {
|
||||
delete_log($log_number);
|
||||
}
|
||||
}
|
||||
|
||||
$build_logs = get_build_logs();
|
||||
$build_logs = get_build_logs(($page - 1) * $logs_per_page, $logs_per_page);
|
||||
|
||||
$job_ids = array();
|
||||
|
||||
foreach ($build_logs as $log_file) {
|
||||
|
@ -47,9 +65,11 @@ display_error_message();
|
|||
<div style="width: 100%; overflow: hidden;">
|
||||
<h2>Build Logs</h2>
|
||||
<form action="logs.php" method="get" style="display: inline-block;">
|
||||
<button type="submit" class="no-decoration">Delete selected logs</button>
|
||||
<input type="hidden" name="page" value="<?php echo $page; ?>">
|
||||
<input type="hidden" name="logs-per-page" value="<?php echo $logs_per_page; ?>">
|
||||
<button type="submit" class="no-decoration">Delete selected logs</button> <a href="logs.php?delete-all=true" class="button-no-decoration">Delete all logs</a>
|
||||
<br><br>
|
||||
<input type="checkbox" class="unhide" name="delete-all" value="true"> Select all
|
||||
<input type="checkbox" class="unhide" name="delete-all-on-page" value="true"> Select all
|
||||
<br>
|
||||
<?php
|
||||
$all_selected = "";
|
||||
|
@ -67,6 +87,53 @@ display_error_message();
|
|||
</div>".PHP_EOL;
|
||||
?>
|
||||
</form>
|
||||
|
||||
<!-- List pagination -->
|
||||
<?php
|
||||
$logs_count = get_number_of_build_logs();
|
||||
$pages = ceil($logs_count / $logs_per_page);
|
||||
$prev_page = $page - 1;
|
||||
$next_page = $page + 1;
|
||||
$show_prev = $prev_page >= 1;
|
||||
$show_next = $next_page <= $pages;
|
||||
|
||||
if ($show_prev || $show_next) {
|
||||
echo "<br><br>Page: ";
|
||||
if ($show_prev) {
|
||||
echo "<a href=\"logs.php?page=$prev_page&logs-per-page=$logs_per_page\"><</a> ";
|
||||
} else {
|
||||
echo "< ";
|
||||
}
|
||||
for ($i = 1; $i <= $pages; $i++) {
|
||||
if ($i == $page) {
|
||||
echo "<b>$i</b> ";
|
||||
} else {
|
||||
echo "<a href=\"logs.php?page=$i&logs-per-page=$logs_per_page\">$i</a> ";
|
||||
}
|
||||
}
|
||||
if ($show_next) {
|
||||
echo "<a href=\"logs.php?page=$next_page&logs-per-page=$logs_per_page\">></a>";
|
||||
} else {
|
||||
echo ">";
|
||||
}
|
||||
}
|
||||
?>
|
||||
<br><br>
|
||||
<form action="logs.php" method="get" style="display: inline-block;">
|
||||
<input type="hidden" name="page" value="<?php echo $page; ?>">
|
||||
Logs per page:
|
||||
<select name="logs-per-page" id="logs-per-page" class="small">
|
||||
<?php
|
||||
for ($i = 10; $i <= 100; $i += 10) {
|
||||
$selected = $i == $logs_per_page ? " selected" : "";
|
||||
echo "<option value=\"$i\"$selected>$i</option>";
|
||||
}
|
||||
?>
|
||||
|
||||
</select>
|
||||
|
||||
<button type="submit" class="no-decoration">Apply</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
@ -352,7 +352,27 @@ button.no-decoration {
|
|||
color: #069;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
button.no-decoration:hover {
|
||||
filter: brightness(120%);
|
||||
}
|
||||
|
||||
a.button-no-decoration {
|
||||
background: none!important;
|
||||
border: none;
|
||||
padding: 0!important;
|
||||
color: #069;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select.small {
|
||||
width: 25%;
|
||||
padding: 0.5rem;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
|
|
Loading…
Reference in a new issue