mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-10-31 02:15:55 +01:00 
			
		
		
		
	
		
			
	
	
		
			143 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			143 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | // Resource Monitoring
 | ||
|  | let cpuChart, memoryChart, diskChart; | ||
|  | let cpuData = [], memoryData = [], diskData = []; | ||
|  | const maxDataPoints = 30; | ||
|  | 
 | ||
|  | function initializeCharts() { | ||
|  |     const chartOptions = { | ||
|  |         responsive: true, | ||
|  |         maintainAspectRatio: false, | ||
|  |         scales: { | ||
|  |             y: { | ||
|  |                 beginAtZero: true, | ||
|  |                 max: 100, | ||
|  |                 ticks: { | ||
|  |                     callback: function(value) { | ||
|  |                         return value + '%'; | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |         }, | ||
|  |         animation: { | ||
|  |             duration: 750 | ||
|  |         } | ||
|  |     }; | ||
|  | 
 | ||
|  |     // CPU Chart
 | ||
|  |     const cpuCtx = document.getElementById('cpuChart').getContext('2d'); | ||
|  |     cpuChart = new Chart(cpuCtx, { | ||
|  |         type: 'line', | ||
|  |         data: { | ||
|  |             labels: [], | ||
|  |             datasets: [{ | ||
|  |                 label: 'CPU Usage (%)', | ||
|  |                 data: [], | ||
|  |                 borderColor: '#2563eb', | ||
|  |                 backgroundColor: 'rgba(37, 99, 235, 0.1)', | ||
|  |                 borderWidth: 2, | ||
|  |                 fill: true, | ||
|  |                 tension: 0.4 | ||
|  |             }] | ||
|  |         }, | ||
|  |         options: chartOptions | ||
|  |     }); | ||
|  | 
 | ||
|  |     // Memory Chart
 | ||
|  |     const memoryCtx = document.getElementById('memoryChart').getContext('2d'); | ||
|  |     memoryChart = new Chart(memoryCtx, { | ||
|  |         type: 'line', | ||
|  |         data: { | ||
|  |             labels: [], | ||
|  |             datasets: [{ | ||
|  |                 label: 'Memory Usage (%)', | ||
|  |                 data: [], | ||
|  |                 borderColor: '#00b894', | ||
|  |                 backgroundColor: 'rgba(0, 184, 148, 0.1)', | ||
|  |                 borderWidth: 2, | ||
|  |                 fill: true, | ||
|  |                 tension: 0.4 | ||
|  |             }] | ||
|  |         }, | ||
|  |         options: chartOptions | ||
|  |     }); | ||
|  | 
 | ||
|  |     // Disk Chart
 | ||
|  |     const diskCtx = document.getElementById('diskChart').getContext('2d'); | ||
|  |     diskChart = new Chart(diskCtx, { | ||
|  |         type: 'line', | ||
|  |         data: { | ||
|  |             labels: [], | ||
|  |             datasets: [{ | ||
|  |                 label: 'Disk Usage (%)', | ||
|  |                 data: [], | ||
|  |                 borderColor: '#ff9800', | ||
|  |                 backgroundColor: 'rgba(255, 152, 0, 0.1)', | ||
|  |                 borderWidth: 2, | ||
|  |                 fill: true, | ||
|  |                 tension: 0.4 | ||
|  |             }] | ||
|  |         }, | ||
|  |         options: chartOptions | ||
|  |     }); | ||
|  | } | ||
|  | 
 | ||
|  | function updateCharts(data) { | ||
|  |     const now = new Date(); | ||
|  |     const timeLabel = now.toLocaleTimeString(); | ||
|  | 
 | ||
|  |     // Update CPU Chart
 | ||
|  |     cpuData.push(data.cpu_usage); | ||
|  |     if (cpuData.length > maxDataPoints) cpuData.shift(); | ||
|  |     cpuChart.data.labels.push(timeLabel); | ||
|  |     if (cpuChart.data.labels.length > maxDataPoints) cpuChart.data.labels.shift(); | ||
|  |     cpuChart.data.datasets[0].data = cpuData; | ||
|  |     cpuChart.update('none'); // Use 'none' mode for better performance
 | ||
|  | 
 | ||
|  |     // Update Memory Chart
 | ||
|  |     memoryData.push(data.memory_usage); | ||
|  |     if (memoryData.length > maxDataPoints) memoryData.shift(); | ||
|  |     memoryChart.data.labels.push(timeLabel); | ||
|  |     if (memoryChart.data.labels.length > maxDataPoints) memoryChart.data.labels.shift(); | ||
|  |     memoryChart.data.datasets[0].data = memoryData; | ||
|  |     memoryChart.update('none'); | ||
|  | 
 | ||
|  |     // Update Disk Chart
 | ||
|  |     diskData.push(data.disk_percent); | ||
|  |     if (diskData.length > maxDataPoints) diskData.shift(); | ||
|  |     diskChart.data.labels.push(timeLabel); | ||
|  |     if (diskChart.data.labels.length > maxDataPoints) diskChart.data.labels.shift(); | ||
|  |     diskChart.data.datasets[0].data = diskData; | ||
|  |     diskChart.update('none'); | ||
|  | } | ||
|  | 
 | ||
|  | function fetchResourceUsage() { | ||
|  |     $.ajax({ | ||
|  |         url: '/websites/get_website_resources/', | ||
|  |         type: 'POST', | ||
|  |         data: JSON.stringify({ | ||
|  |             'domain': $('#domainNamePage').text().trim() | ||
|  |         }), | ||
|  |         contentType: 'application/json', | ||
|  |         success: function(data) { | ||
|  |             if (data.status === 1) { | ||
|  |                 updateCharts(data); | ||
|  |             } else { | ||
|  |                 console.error('Error fetching resource data:', data.error_message); | ||
|  |             } | ||
|  |         }, | ||
|  |         error: function(xhr, status, error) { | ||
|  |             console.error('Failed to fetch resource usage:', error); | ||
|  |         } | ||
|  |     }); | ||
|  | } | ||
|  | 
 | ||
|  | // Initialize charts when the page loads
 | ||
|  | $(document).ready(function() { | ||
|  |     if (document.getElementById('cpuChart')) { | ||
|  |         initializeCharts(); | ||
|  |         // Fetch resource usage every 5 seconds
 | ||
|  |         setInterval(fetchResourceUsage, 5000); | ||
|  |         // Initial fetch
 | ||
|  |         fetchResourceUsage(); | ||
|  |     } | ||
|  | });  |