diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/choropleth-layer/ChoroplethOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/choropleth-layer/ChoroplethOptions.tsx index b99abbee956ae52217ab36e3487a631a5aef91ff..e75680935184415bad025041456baa2c45e3540f 100644 --- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/choropleth-layer/ChoroplethOptions.tsx +++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/choropleth-layer/ChoroplethOptions.tsx @@ -26,10 +26,10 @@ export default function ChoroplethOptions({ settings, graphMetadata, updateSetti }); }, [graphMetadata]); - const spatialAttributes = useMemo(() => { - if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return []; - return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]); - }, [settings.node]); + const spatialAttributes: { [id: string]: string[] } = {}; + graphMetadata.nodes.labels.forEach((node) => { + spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]); + }); const handleCollapseToggle = (nodeType: string) => { setCollapsed((prevCollapsed) => ({ @@ -61,8 +61,8 @@ export default function ChoroplethOptions({ settings, graphMetadata, updateSetti label="Longitude" type="dropdown" value={settings?.[nodeType]?.lon} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })} /> @@ -71,8 +71,8 @@ export default function ChoroplethOptions({ settings, graphMetadata, updateSetti label="Latitude" type="dropdown" value={settings?.[nodeType]?.lat} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })} /> </div> diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/heatmap-layer/HeatLayerOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/heatmap-layer/HeatLayerOptions.tsx index 07e7a29491d3da0828f30b1b73865a29a9a826fc..9aa1d9b7d37992a964cd1b86b2d2c86a78ef6277 100644 --- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/heatmap-layer/HeatLayerOptions.tsx +++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/heatmap-layer/HeatLayerOptions.tsx @@ -26,10 +26,10 @@ export default function HeatLayerOptions({ settings, graphMetadata, updateSettin }); }, [graphMetadata]); - const spatialAttributes = useMemo(() => { - if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return []; - return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]); - }, [settings.node]); + const spatialAttributes: { [id: string]: string[] } = {}; + graphMetadata.nodes.labels.forEach((node) => { + spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]); + }); const handleCollapseToggle = (nodeType: string) => { setCollapsed((prevCollapsed) => ({ @@ -61,8 +61,8 @@ export default function HeatLayerOptions({ settings, graphMetadata, updateSettin label="Longitude" type="dropdown" value={settings?.[nodeType]?.lon} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })} /> @@ -71,8 +71,8 @@ export default function HeatLayerOptions({ settings, graphMetadata, updateSettin label="Latitude" type="dropdown" value={settings?.[nodeType]?.lat} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })} /> diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/icon-layer/IconOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/icon-layer/IconOptions.tsx index 0fbb9088712e9f15efe7e1f958de11735a6abfac..b80743bdca30d14da54b32e1590e889b2e14fb01 100644 --- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/icon-layer/IconOptions.tsx +++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/icon-layer/IconOptions.tsx @@ -26,10 +26,10 @@ export default function IconOptions({ settings, graphMetadata, updateSettings }: }); }, [graphMetadata]); - const spatialAttributes = useMemo(() => { - if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return []; - return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]); - }, [settings.node]); + const spatialAttributes: { [id: string]: string[] } = {}; + graphMetadata.nodes.labels.forEach((node) => { + spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]); + }); const handleCollapseToggle = (nodeType: string) => { setCollapsed((prevCollapsed) => ({ @@ -61,8 +61,8 @@ export default function IconOptions({ settings, graphMetadata, updateSettings }: label="Longitude" type="dropdown" value={settings?.[nodeType]?.lon} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })} /> @@ -71,8 +71,8 @@ export default function IconOptions({ settings, graphMetadata, updateSettings }: label="Latitude" type="dropdown" value={settings?.[nodeType]?.lat} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })} /> <div className="flex items-center gap-1"> diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/node-layer/NodeOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/node-layer/NodeOptions.tsx index 7777348a92484a376d8ddb1cbfa273eb876e1afa..f376c542e1b347acfd9ee2f1268a65118e004a48 100644 --- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/node-layer/NodeOptions.tsx +++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/node-layer/NodeOptions.tsx @@ -27,10 +27,10 @@ export default function NodeOptions({ settings, graphMetadata, updateSettings }: }); }, [graphMetadata]); - const spatialAttributes = useMemo(() => { - if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return []; - return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]); - }, [settings.node]); + const spatialAttributes: { [id: string]: string[] } = {}; + graphMetadata.nodes.labels.forEach((node) => { + spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]); + }); const handleCollapseToggle = (nodeType: string) => { setCollapsed((prevCollapsed) => ({ @@ -62,8 +62,8 @@ export default function NodeOptions({ settings, graphMetadata, updateSettings }: label="Longitude" type="dropdown" value={settings?.[nodeType]?.lon} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })} /> @@ -72,8 +72,8 @@ export default function NodeOptions({ settings, graphMetadata, updateSettings }: label="Latitude" type="dropdown" value={settings?.[nodeType]?.lat} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })} /> diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/nodelink-layer/NodeLinkOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/nodelink-layer/NodeLinkOptions.tsx index dbfe79268a42450dd048915e4d74ef97586b0182..ee42c299c8dab0d3f30bd701572eb2f02339bfeb 100644 --- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/nodelink-layer/NodeLinkOptions.tsx +++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/nodelink-layer/NodeLinkOptions.tsx @@ -41,10 +41,10 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting }); }, [graphMetadata]); - const spatialAttributes = useMemo(() => { - if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return []; - return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]); - }, [settings.node]); + const spatialAttributes: { [id: string]: string[] } = {}; + graphMetadata.nodes.labels.forEach((node) => { + spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]); + }); const handleCollapseToggle = (nodeType: string) => { setCollapsed((prevCollapsed) => ({ @@ -76,8 +76,8 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting label="Longitude" type="dropdown" value={settings?.[nodeType]?.lon} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })} /> @@ -86,8 +86,8 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting label="Latitude" type="dropdown" value={settings?.[nodeType]?.lat} - options={[...spatialAttributes]} - disabled={!settings.node || spatialAttributes.length < 1} + options={[...spatialAttributes[nodeType]]} + disabled={!settings.node || spatialAttributes[nodeType].length < 1} onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })} /> </div>