...
This commit is contained in:
153
pkg2/heroagent/web/templates/admin/vfs_logs.html
Normal file
153
pkg2/heroagent/web/templates/admin/vfs_logs.html
Normal file
@@ -0,0 +1,153 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{.title}} - HeroLauncher</title>
|
||||
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="/static/css/custom.css">
|
||||
<script src="/static/js/jquery.min.js"></script>
|
||||
<script src="/static/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="/static/js/unpoly.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container-fluid p-4">
|
||||
<div class="row mb-4">
|
||||
<div class="col">
|
||||
<h2>{{.managerName}} Logs</h2>
|
||||
<p>View and filter logs from the {{.managerName}} service.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Filter Logs</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="filter-form">
|
||||
<input type="hidden" id="manager" name="manager" value="{{.managerName}}">
|
||||
<input type="hidden" id="endpoint" name="endpoint" value="{{.managerEndpoint}}">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<label for="method-filter">Filter by Method:</label>
|
||||
<select class="form-control" id="method-filter">
|
||||
<option value="">All Methods</option>
|
||||
{{range .methods}}
|
||||
<option value="{{.}}">{{index $.methodDisplayNames .}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<label for="status-filter">Filter by Status:</label>
|
||||
<select class="form-control" id="status-filter">
|
||||
<option value="">All Statuses</option>
|
||||
<option value="success">Success</option>
|
||||
<option value="error">Error</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<label for="date-filter">Filter by Date:</label>
|
||||
<input type="date" class="form-control" id="date-filter">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<label for="limit-filter">Limit Results:</label>
|
||||
<select class="form-control" id="limit-filter">
|
||||
<option value="50">50</option>
|
||||
<option value="100">100</option>
|
||||
<option value="200">200</option>
|
||||
<option value="500">500</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
<button type="button" id="apply-filters" class="btn btn-primary">Apply Filters</button>
|
||||
<button type="button" id="reset-filters" class="btn btn-secondary">Reset Filters</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Logs</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Timestamp</th>
|
||||
<th>Method</th>
|
||||
<th>Status</th>
|
||||
<th>Duration</th>
|
||||
<th>Details</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="logs-table-body">
|
||||
<!-- Logs will be loaded here -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Apply filters when the button is clicked
|
||||
$('#apply-filters').click(function() {
|
||||
const queryParams = new URLSearchParams();
|
||||
|
||||
// Get filter values
|
||||
const methodFilter = $('#method-filter').val();
|
||||
const statusFilter = $('#status-filter').val();
|
||||
const dateFilter = $('#date-filter').val();
|
||||
const limitFilter = $('#limit-filter').val();
|
||||
|
||||
// Add filters to query parameters if they are set
|
||||
if (methodFilter) queryParams.append('method', methodFilter);
|
||||
if (statusFilter) queryParams.append('status', statusFilter);
|
||||
if (dateFilter) queryParams.append('date', dateFilter);
|
||||
if (limitFilter) queryParams.append('limit', limitFilter);
|
||||
|
||||
// Add the manager and endpoint parameters to preserve them when reloading
|
||||
queryParams.append('manager', document.getElementById('manager').value);
|
||||
queryParams.append('endpoint', document.getElementById('endpoint').value);
|
||||
|
||||
// Redirect to the same page with new query parameters
|
||||
window.location.href = '/admin/openrpc/vfs/logs?' + queryParams.toString();
|
||||
});
|
||||
|
||||
// Reset filters when the button is clicked
|
||||
$('#reset-filters').click(function() {
|
||||
// Clear all filter inputs
|
||||
$('#method-filter').val('');
|
||||
$('#status-filter').val('');
|
||||
$('#date-filter').val('');
|
||||
$('#limit-filter').val('50');
|
||||
|
||||
// Redirect to the base URL with only manager and endpoint parameters
|
||||
const queryParams = new URLSearchParams();
|
||||
queryParams.append('manager', document.getElementById('manager').value);
|
||||
queryParams.append('endpoint', document.getElementById('endpoint').value);
|
||||
window.location.href = '/admin/openrpc/vfs/logs?' + queryParams.toString();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user