This repository has been archived on 2025-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
heroagent_go_old/pkg/heroagent/web/static/js/charts/stats-fetcher.js
2025-04-23 04:18:28 +02:00

89 lines
2.9 KiB
JavaScript

// Data fetching functions for system stats
document.addEventListener('DOMContentLoaded', function() {
// Function to fetch hardware stats
function fetchHardwareStats() {
fetch('/api/hardware-stats')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
// Extract network speeds
var upSpeed = data.network && data.network.upload_speed ? data.network.upload_speed : '0Mbps';
var downSpeed = data.network && data.network.download_speed ? data.network.download_speed : '0Mbps';
// Update the network chart
if (window.updateNetworkChart) {
window.updateNetworkChart(upSpeed, downSpeed);
}
})
.catch(error => {
console.error('Error fetching hardware stats:', error);
});
}
// Function to fetch process stats
function fetchProcessStats() {
fetch('/api/process-stats')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
// Update the CPU and Memory charts with new data
if (window.updateCpuChart && data.processes) {
window.updateCpuChart(data.processes);
}
if (window.updateMemoryChart && data.processes) {
window.updateMemoryChart(data.processes);
}
})
.catch(error => {
console.error('Error fetching process stats:', error);
});
}
// Function to fetch all stats
function fetchAllStats() {
fetchHardwareStats();
fetchProcessStats();
// Schedule the next update - use requestAnimationFrame for smoother updates
requestAnimationFrame(function() {
setTimeout(fetchAllStats, 2000); // Update every 2 seconds
});
}
// Start fetching all stats if we're on the system info page
if (document.getElementById('cpu-chart') ||
document.getElementById('memory-chart') ||
document.getElementById('network-chart')) {
fetchAllStats();
}
// Also update the chart when new hardware stats are loaded via Unpoly
document.addEventListener('up:fragment:loaded', function(event) {
if (event.target && event.target.classList.contains('hardware-stats')) {
// Extract network speeds from the table
var networkCell = event.target.querySelector('tr:nth-child(4) td');
if (networkCell) {
var networkText = networkCell.textContent;
var upMatch = networkText.match(/Up: ([\d.]+Mbps)/);
var downMatch = networkText.match(/Down: ([\d.]+Mbps)/);
var upSpeed = upMatch ? upMatch[1] : '0Mbps';
var downSpeed = downMatch ? downMatch[1] : '0Mbps';
// Update the chart with new data
if (window.updateNetworkChart) {
window.updateNetworkChart(upSpeed, downSpeed);
}
}
}
});
});