diff --git a/assets/components/ContainerTable.vue b/assets/components/ContainerTable.vue index e51309d8..19ab11c9 100644 --- a/assets/components/ContainerTable.vue +++ b/assets/components/ContainerTable.vue @@ -79,30 +79,24 @@
- - {{ container.movingAverage.cpu.toFixed(0) }}% + > + {{ containerAverageCpu(container).toFixed(0) }}%
- - {{ container.movingAverage.memory.toFixed(0) }}% + max="100" + > + {{ container.movingAverage.memory.toFixed(0) }}%
@@ -208,6 +202,27 @@ function sort(field: keys) { function isVisible(field: keys) { return fields[field].mobileVisible || !isMobile.value; } + +function getContainerCores(container: Container): number { + if (container.cpuLimit && container.cpuLimit > 0) { + return container.cpuLimit; + } + const hostInfo = hosts.value[container.host]; + return hostInfo?.nCPU ?? 1; +} + +function containerAverageCpu(container: Container): number { + const cores = getContainerCores(container); + const scaledCpu = container.movingAverage.cpu / cores; + return Math.min(scaledCpu, 100); +} + +function getProgressColorClass(value: number): string { + if (value <= 70) return "progress-success"; + if (value <= 80) return "progress-secondary"; + if (value <= 90) return "progress-warning"; + return "progress-error"; +}