From 63ad5d0407fba7f5800ce28033f0e9aa649317be Mon Sep 17 00:00:00 2001
From: "Vink, S.A. (Sjoerd)" <s.a.vink@uu.nl>
Date: Mon, 8 Jul 2024 11:58:42 +0200
Subject: [PATCH] feat(map_nodelink): fixed merge issue

---
 .../choropleth-layer/ChoroplethOptions.tsx       | 16 ++++++++--------
 .../layers/heatmap-layer/HeatLayerOptions.tsx    | 16 ++++++++--------
 .../components/layers/icon-layer/IconOptions.tsx | 16 ++++++++--------
 .../components/layers/node-layer/NodeOptions.tsx | 16 ++++++++--------
 .../layers/nodelink-layer/NodeLinkOptions.tsx    | 16 ++++++++--------
 5 files changed, 40 insertions(+), 40 deletions(-)

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 b99abbee9..e75680935 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 07e7a2949..9aa1d9b7d 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 0fbb90887..b80743bdc 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 7777348a9..f376c542e 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 dbfe79268..ee42c299c 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>
-- 
GitLab