89 lines
2.9 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|