diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index e59c38dae..319820774 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -4954,7 +4954,9 @@ "updated": "Updated {when}", "search": "Seach {count} containers", "selected": "{selectCount} of {totalCount} containers selected", - "footer": "Total {count} containers" + "footer": "Total {count} containers", + "totalCpu": "Total CPU: {cpu}%", + "totalMemory": "Total Mem: {memory}" }, "field": { "name": { diff --git a/packages/widgets/src/docker/component.tsx b/packages/widgets/src/docker/component.tsx index d8dd77bdf..b50139361 100644 --- a/packages/widgets/src/docker/component.tsx +++ b/packages/widgets/src/docker/component.tsx @@ -200,6 +200,17 @@ export default function DockerWidget({ options, width, isEditMode }: WidgetCompo const totalContainers = containers.length; + const totals = useMemo(() => { + return containers.reduce( + (acc, container) => { + acc.cpu += safeValue(container.cpuUsage); + acc.memory += safeValue(container.memoryUsage); + return acc; + }, + { cpu: 0, memory: 0 } + ); + }, [containers]); + const columns = useMemo(() => createColumns(t), [t]); const table = useTranslatedMantineReactTable({ @@ -261,12 +272,26 @@ export default function DockerWidget({ options, width, isEditMode }: WidgetCompo }} p={4} > - - - {t("table.footer", { count: totalContainers.toString() })} + + + + {t("table.footer", { count: totalContainers.toString() })} + - {t("table.updated", { when: relativeTime })} + + + {t("table.totalCpu", { cpu: totals.cpu.toFixed(2) })} + + + + {t("table.totalMemory", { memory: humanFileSize(totals.memory) })} + + + + {t("table.updated", { when: relativeTime })} + + )}