new_functions_and_fixes #1
@@ -3,6 +3,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
const filterStatus = document.getElementById('filter_status');
|
const filterStatus = document.getElementById('filter_status');
|
||||||
const filterMethod = document.getElementById('filter_method');
|
const filterMethod = document.getElementById('filter_method');
|
||||||
const filterThreats = document.getElementById('filter_threats');
|
const filterThreats = document.getElementById('filter_threats');
|
||||||
|
const filterHideStats = document.getElementById('filter_hide_stats');
|
||||||
const resetBtn = document.getElementById('reset_filters');
|
const resetBtn = document.getElementById('reset_filters');
|
||||||
|
|
||||||
const logsTable = document.getElementById('logs_table');
|
const logsTable = document.getElementById('logs_table');
|
||||||
@@ -16,6 +17,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
const statusValue = filterStatus.value;
|
const statusValue = filterStatus.value;
|
||||||
const methodValue = filterMethod.value;
|
const methodValue = filterMethod.value;
|
||||||
const showThreats = filterThreats.checked;
|
const showThreats = filterThreats.checked;
|
||||||
|
const hideStats = filterHideStats.checked;
|
||||||
|
|
||||||
let visibleCount = 0;
|
let visibleCount = 0;
|
||||||
let threatCount = 0;
|
let threatCount = 0;
|
||||||
@@ -27,6 +29,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
const status = row.dataset.status;
|
const status = row.dataset.status;
|
||||||
const method = row.dataset.method;
|
const method = row.dataset.method;
|
||||||
const hasThreat = row.dataset.threats === '1';
|
const hasThreat = row.dataset.threats === '1';
|
||||||
|
const url = row.querySelector('td:nth-child(4)').textContent.trim();
|
||||||
|
|
||||||
let show = true;
|
let show = true;
|
||||||
|
|
||||||
@@ -53,6 +56,11 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
show = false;
|
show = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hide /stats filter
|
||||||
|
if (hideStats && url.includes('/stats')) {
|
||||||
|
show = false;
|
||||||
|
}
|
||||||
|
|
||||||
row.style.display = show ? '' : 'none';
|
row.style.display = show ? '' : 'none';
|
||||||
|
|
||||||
if (show) {
|
if (show) {
|
||||||
@@ -79,6 +87,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
filterStatus.addEventListener('change', applyFilters);
|
filterStatus.addEventListener('change', applyFilters);
|
||||||
filterMethod.addEventListener('change', applyFilters);
|
filterMethod.addEventListener('change', applyFilters);
|
||||||
filterThreats.addEventListener('change', applyFilters);
|
filterThreats.addEventListener('change', applyFilters);
|
||||||
|
filterHideStats.addEventListener('change', applyFilters);
|
||||||
|
|
||||||
// Reset button
|
// Reset button
|
||||||
resetBtn.addEventListener('click', function() {
|
resetBtn.addEventListener('click', function() {
|
||||||
@@ -86,9 +95,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
filterStatus.value = '';
|
filterStatus.value = '';
|
||||||
filterMethod.value = '';
|
filterMethod.value = '';
|
||||||
filterThreats.checked = true;
|
filterThreats.checked = true;
|
||||||
|
filterHideStats.checked = true;
|
||||||
applyFilters();
|
applyFilters();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Initial stats
|
|
||||||
applyFilters();
|
applyFilters();
|
||||||
});
|
});
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% set active_page = "" %}
|
{% set active_page = "" %}
|
||||||
{% block title %}HAProxy • Edit{% endblock %}
|
{% block title %}HAProxy • Edit{% endblock %}
|
||||||
{% block breadcrumb %}<nav aria-label="breadcrumb" class="mb-3"><ol class="breadcrumb mb-0"><li class="breadcrumb-item"><a href="{{ url_for('main.index') }}"><i class="bi bi-house"></i></a></li><li class="breadcrumb-item active" aria-current="page">Edytor</li></ol></nav>{% endblock %}
|
{% block breadcrumb %}<nav aria-label="breadcrumb" class="mb-3"><ol class="breadcrumb mb-0"><li class="breadcrumb-item"><a href="{{ url_for('main.index') }}"><i class="bi bi-house"></i></a></li><li class="breadcrumb-item active" aria-current="page">Edit Haproxy config file</li></ol></nav>{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="card shadow-sm">
|
<div class="card shadow-sm">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|||||||
@@ -16,12 +16,11 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="card shadow-sm mb-4">
|
<div class="card shadow-sm mb-4">
|
||||||
<div class="card-header bg-info text-white">
|
<div class="card-header bg-primary text-white">
|
||||||
<h5 class="mb-0"><i class="bi bi-file-text me-2"></i>HAProxy Access Logs</h5>
|
<h5 class="mb-0"><i class="bi bi-file-text me-2"></i>HAProxy Access Logs</h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
<!-- Error/Info Messages -->
|
|
||||||
{% if error_message %}
|
{% if error_message %}
|
||||||
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
||||||
<i class="bi bi-exclamation-triangle me-2"></i>
|
<i class="bi bi-exclamation-triangle me-2"></i>
|
||||||
@@ -30,7 +29,6 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Filter Section (kompaktnie, jak było) -->
|
|
||||||
{% if logs and logs|length > 0 %}
|
{% if logs and logs|length > 0 %}
|
||||||
<div class="row mb-3 g-2">
|
<div class="row mb-3 g-2">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
@@ -62,12 +60,19 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="filter_hide_stats" checked>
|
||||||
|
<label class="form-check-label" for="filter_hide_stats" style="margin-top: 5px;">
|
||||||
|
Hide /stats
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col-auto ms-auto">
|
<div class="col-auto ms-auto">
|
||||||
<button class="btn btn-sm btn-secondary" id="reset_filters">Reset</button>
|
<button class="btn btn-sm btn-secondary" id="reset_filters">Reset</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Stats Cards (kompaktnie) -->
|
|
||||||
<div class="row mb-3 g-2">
|
<div class="row mb-3 g-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="card text-center" style="font-size: 0.9rem;">
|
<div class="card text-center" style="font-size: 0.9rem;">
|
||||||
@@ -179,12 +184,10 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% elif logs %}
|
{% elif logs %}
|
||||||
<!-- Logs exist but empty after filtering -->
|
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<i class="bi bi-info-circle me-2"></i>No log entries match your filters.
|
<i class="bi bi-info-circle me-2"></i>No log entries match your filters.
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<!-- No logs at all -->
|
|
||||||
<div class="alert alert-danger" role="alert">
|
<div class="alert alert-danger" role="alert">
|
||||||
<h4 class="alert-heading"><i class="bi bi-exclamation-circle me-2"></i>No logs available</h4>
|
<h4 class="alert-heading"><i class="bi bi-exclamation-circle me-2"></i>No logs available</h4>
|
||||||
<hr>
|
<hr>
|
||||||
|
|||||||
Reference in New Issue
Block a user