diff --git a/extensions/Servers/Proxmox/views/overview.blade.php b/extensions/Servers/Proxmox/views/overview.blade.php index d6bf292b2..3e232a0de 100644 --- a/extensions/Servers/Proxmox/views/overview.blade.php +++ b/extensions/Servers/Proxmox/views/overview.blade.php @@ -1681,9 +1681,23 @@ return (isNaN(num) || num === null || num === undefined) ? 0 : num; }); + // Calculate 95th percentile from combined traffic + const combinedTraffic = downloadData.map((d, i) => d + (uploadData[i] || 0)); + const sortedTraffic = [...combinedTraffic].filter(v => v > 0).sort((a, b) => a - b); + let p95Value = 0; + if (sortedTraffic.length > 0) { + const p95Index = Math.floor(sortedTraffic.length * 0.95); + p95Value = sortedTraffic[Math.min(p95Index, sortedTraffic.length - 1)]; + } + const p95Data = Array(downloadData.length).fill(p95Value); + chart.data.labels = labels.slice(-20); chart.data.datasets[0].data = downloadData; chart.data.datasets[1].data = uploadData; + if (chart.data.datasets[2]) { + chart.data.datasets[2].data = p95Data; + chart.data.datasets[2].label = '95th Percentile (' + formatRate(p95Value) + ')'; + } chart.update('none'); } }