55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
|
|
/* Resources page JavaScript */
|
||
|
|
|
||
|
|
function refreshDiskInfo() {
|
||
|
|
htmx.trigger('#disk-partitions', 'refresh');
|
||
|
|
}
|
||
|
|
|
||
|
|
function sortProcesses(sortBy) {
|
||
|
|
const sortParam = `?sort=${sortBy}`;
|
||
|
|
htmx.ajax('GET', `/api/monitoring/resources/processes${sortParam}`, {
|
||
|
|
target: '#process-list',
|
||
|
|
swap: 'innerHTML'
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// Color-code usage based on percentage
|
||
|
|
function updateUsageColors() {
|
||
|
|
document.querySelectorAll('.card-value').forEach(el => {
|
||
|
|
const value = parseInt(el.textContent);
|
||
|
|
if (value >= 90) {
|
||
|
|
el.classList.add('error');
|
||
|
|
el.classList.remove('warning');
|
||
|
|
} else if (value >= 75) {
|
||
|
|
el.classList.add('warning');
|
||
|
|
el.classList.remove('error');
|
||
|
|
} else {
|
||
|
|
el.classList.remove('warning', 'error');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
document.querySelectorAll('.usage-fill, .progress-fill').forEach(el => {
|
||
|
|
const width = parseInt(el.style.width);
|
||
|
|
if (width >= 90) {
|
||
|
|
el.classList.add('error');
|
||
|
|
el.classList.remove('warning');
|
||
|
|
} else if (width >= 75) {
|
||
|
|
el.classList.add('warning');
|
||
|
|
el.classList.remove('error');
|
||
|
|
} else {
|
||
|
|
el.classList.remove('warning', 'error');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// Run on HTMX swap for resources
|
||
|
|
document.body.addEventListener('htmx:afterSwap', function(evt) {
|
||
|
|
if (evt.target.closest('.resources-container')) {
|
||
|
|
updateUsageColors();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// Initialize on page load
|
||
|
|
document.addEventListener('DOMContentLoaded', function() {
|
||
|
|
updateUsageColors();
|
||
|
|
});
|