botui/ui/suite/monitoring/monitoring.js
Rodrigo Rodriguez (Pragmatismo) 1f95ac7a15 refactor: Extract inline CSS/JS to separate files for monitoring module
- Create individual CSS files: monitoring.css, alerts.css, health.css, logs.css, metrics.css, resources.css
- Create individual JS files: monitoring.js, alerts.js, health.js, logs.js, metrics.js, resources.js
- Update HTML files to reference external CSS/JS files
- Add CSS/JS files for other modules (analytics, chat, mail, meet, tasks, etc.)
- Remove obsolete implementation plan files
2025-12-07 09:56:27 -03:00

67 lines
2.2 KiB
JavaScript

/* Monitoring module - shared/base JavaScript */
function setActiveNav(element) {
document.querySelectorAll('.monitoring-nav .nav-item').forEach(item => {
item.classList.remove('active');
});
element.classList.add('active');
// Update page title
const title = element.querySelector('span:not(.alert-badge):not(.health-indicator)').textContent;
document.getElementById('page-title').textContent = title;
}
function updateTimeRange(range) {
// Store selected time range
localStorage.setItem('monitoring-time-range', range);
// Trigger refresh of current view
htmx.trigger('#monitoring-content', 'refresh');
}
function refreshMonitoring() {
htmx.trigger('#monitoring-content', 'refresh');
// Visual feedback
const btn = event.currentTarget;
btn.classList.add('active');
setTimeout(() => btn.classList.remove('active'), 500);
}
let autoRefresh = true;
function toggleAutoRefresh() {
autoRefresh = !autoRefresh;
const btn = document.getElementById('auto-refresh-btn');
btn.classList.toggle('active', autoRefresh);
if (autoRefresh) {
// Re-enable polling by refreshing the page content
htmx.trigger('#monitoring-content', 'refresh');
}
}
function exportData() {
const timeRange = document.getElementById('time-range').value;
window.open(`/api/monitoring/export?range=${timeRange}`, '_blank');
}
// Initialize
document.addEventListener('DOMContentLoaded', function() {
// Restore time range preference
const savedRange = localStorage.getItem('monitoring-time-range');
if (savedRange) {
const timeRangeEl = document.getElementById('time-range');
if (timeRangeEl) timeRangeEl.value = savedRange;
}
// Set auto-refresh button state
const autoRefreshBtn = document.getElementById('auto-refresh-btn');
if (autoRefreshBtn) autoRefreshBtn.classList.toggle('active', autoRefresh);
});
// Handle HTMX events for loading states
document.body.addEventListener('htmx:beforeRequest', function(evt) {
if (evt.target.id === 'monitoring-content') {
evt.target.innerHTML = '<div class="loading-state"><div class="spinner"></div><p>Loading...</p></div>';
}
});