55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
|
|
/* Metrics page JavaScript */
|
||
|
|
|
||
|
|
function updateMetricsRange(range) {
|
||
|
|
localStorage.setItem('metrics-time-range', range);
|
||
|
|
refreshMetrics();
|
||
|
|
}
|
||
|
|
|
||
|
|
function refreshMetrics() {
|
||
|
|
// Refresh all metric components
|
||
|
|
htmx.trigger('.key-metrics', 'refresh');
|
||
|
|
htmx.trigger('#requests-chart', 'refresh');
|
||
|
|
htmx.trigger('#latency-chart', 'refresh');
|
||
|
|
htmx.trigger('#errors-chart', 'refresh');
|
||
|
|
htmx.trigger('#throughput-chart', 'refresh');
|
||
|
|
}
|
||
|
|
|
||
|
|
function updateChartType(chart, type) {
|
||
|
|
// This would update the chart visualization type
|
||
|
|
console.log(`Updating ${chart} chart to ${type} type`);
|
||
|
|
// Implementation depends on charting library
|
||
|
|
}
|
||
|
|
|
||
|
|
function filterMetrics(query) {
|
||
|
|
const rows = document.querySelectorAll('.metrics-table tbody tr');
|
||
|
|
const lowerQuery = query.toLowerCase();
|
||
|
|
|
||
|
|
rows.forEach(row => {
|
||
|
|
const text = row.textContent.toLowerCase();
|
||
|
|
row.style.display = text.includes(lowerQuery) ? '' : 'none';
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
function filterByCategory(category) {
|
||
|
|
const rows = document.querySelectorAll('.metrics-table tbody tr');
|
||
|
|
|
||
|
|
rows.forEach(row => {
|
||
|
|
if (category === 'all') {
|
||
|
|
row.style.display = '';
|
||
|
|
} else {
|
||
|
|
const rowCategory = row.dataset.category || '';
|
||
|
|
row.style.display = rowCategory === category ? '' : 'none';
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// Initialize on page load
|
||
|
|
document.addEventListener('DOMContentLoaded', function() {
|
||
|
|
// Restore time range preference
|
||
|
|
const savedRange = localStorage.getItem('metrics-time-range');
|
||
|
|
if (savedRange) {
|
||
|
|
const select = document.getElementById('metrics-time-range');
|
||
|
|
if (select) select.value = savedRange;
|
||
|
|
}
|
||
|
|
});
|