diff --git a/packages/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx b/packages/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx index 9a3557ff..e94c36e1 100644 --- a/packages/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx +++ b/packages/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx @@ -6,7 +6,7 @@ import { } from "@components/UI/Popover.tsx"; import { cn } from "@core/utils/cn.ts"; import { LayersIcon } from "lucide-react"; -import type { ReactNode } from "react"; +import { type ReactNode, useMemo } from "react"; import { useTranslation } from "react-i18next"; export interface VisibilityState { @@ -62,13 +62,36 @@ export function MapLayerTool({ }: MapLayerToolProps): ReactNode { const { t } = useTranslation("map"); + const enabledCount = useMemo(() => { + return Object.values(visibilityState).filter(Boolean).length; + }, [visibilityState]); + + const handleCheckboxChange = (key: keyof VisibilityState) => { + setVisibilityState({ + ...visibilityState, + [key]: !visibilityState[key], + }); + }; + + const layers = useMemo( + () => [ + { key: "nodeMarkers", label: t("layerTool.nodeMarkers") }, + { key: "waypoints", label: t("layerTool.waypoints") }, + { key: "directNeighbors", label: t("layerTool.directNeighbors") }, + { key: "remoteNeighbors", label: t("layerTool.remoteNeighbors") }, + { key: "positionPrecision", label: t("layerTool.positionPrecision") }, + // { key: "traceroutes", label: t("layerTool.traceroutes") }, + ], + [t], + ); + return ( - { - setVisibilityState({ ...visibilityState, nodeMarkers: checked }); - }} - /> - { - setVisibilityState({ ...visibilityState, waypoints: checked }); - }} - /> - { - setVisibilityState({ - ...visibilityState, - directNeighbors: checked, - }); - }} - /> - { - setVisibilityState({ - ...visibilityState, - remoteNeighbors: checked, - }); - }} - /> - { - setVisibilityState({ - ...visibilityState, - positionPrecision: checked, - }); - }} - /> + {layers.map(({ key, label }) => ( + handleCheckboxChange(key as keyof VisibilityState)} + /> + ))} {/* {count}