diff --git a/web/src/pages/Docker.tsx b/web/src/pages/Docker.tsx index 1c10353..fe94aeb 100644 --- a/web/src/pages/Docker.tsx +++ b/web/src/pages/Docker.tsx @@ -34,6 +34,7 @@ export default function Docker({ user }: { user: CurrentUser }) { const [data, setData] = useState(null); const [loading, setLoading] = useState(false); const [actingOnContainer, setActingOnContainer] = useState(null); + const [hostFilter, setHostFilter] = useState(""); useEffect(() => { api.integrations @@ -60,6 +61,7 @@ export default function Docker({ user }: { user: CurrentUser }) { } useEffect(() => { + setHostFilter(""); if (selected?.enabled) { loadContainers(selected.id); } else { @@ -68,6 +70,9 @@ export default function Docker({ user }: { user: CurrentUser }) { // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedId]); + const hosts = [...new Set((data?.containers ?? []).map((c) => c.environmentName))].sort(); + const filteredContainers = (data?.containers ?? []).filter((c) => !hostFilter || c.environmentName === hostFilter); + async function containerAction(c: DockhandContainer, action: "start" | "stop" | "restart") { if (!selectedId) return; if (action === "stop" && !confirm(`Stop container "${c.name}"?`)) return; @@ -132,7 +137,22 @@ export default function Docker({ user }: { user: CurrentUser }) { )} -
+
+ {hosts.length > 1 && ( + + )}