From ea264386b8df1f6b00eef18e3a348e4de0b03870 Mon Sep 17 00:00:00 2001
From: "Vink, S.A. (Sjoerd)" <s.a.vink@uu.nl>
Date: Tue, 9 Jul 2024 16:35:52 +0200
Subject: [PATCH] feat(map_nodelink): fixed initialization issue

---
 .../mapvis/layers/nodelink-layer/NodeLinkLayer.tsx |  2 +-
 .../layers/nodelink-layer/NodeLinkOptions.tsx      |  8 ++++----
 .../lib/vis/visualizations/mapvis/mapvis.tsx       | 14 +++++---------
 3 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/libs/shared/lib/vis/visualizations/mapvis/layers/nodelink-layer/NodeLinkLayer.tsx b/libs/shared/lib/vis/visualizations/mapvis/layers/nodelink-layer/NodeLinkLayer.tsx
index 25677d432..bb7e24aca 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/layers/nodelink-layer/NodeLinkLayer.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/layers/nodelink-layer/NodeLinkLayer.tsx
@@ -58,7 +58,7 @@ export class NodeLinkLayer extends CompositeLayer<LayerProps> {
         new LineLayer({
           id: layerId,
           data: edgeData,
-          visible: !config[label].hidden,
+          visible: !config[label]?.hidden,
           pickable: true,
           getWidth: (d: any) => config[label].width,
           getSourcePosition: (d: any) => getNodeLocation(d.from),
diff --git a/libs/shared/lib/vis/visualizations/mapvis/layers/nodelink-layer/NodeLinkOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/layers/nodelink-layer/NodeLinkOptions.tsx
index 07d7e97f8..21d5a5523 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/layers/nodelink-layer/NodeLinkOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/layers/nodelink-layer/NodeLinkOptions.tsx
@@ -72,10 +72,10 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting
                 updateValue={(val: number[]) => updateSettings({ [nodeType]: { ...settings?.[nodeType], color: val } })}
               />
               <Button
-                iconComponent={settings?.[nodeType].hidden ? <VisibilityOff /> : <Visibility />}
+                iconComponent={settings?.[nodeType]?.hidden ? <VisibilityOff /> : <Visibility />}
                 variant="ghost"
                 onClick={() => {
-                  updateSettings({ [nodeType]: { ...settings?.[nodeType], hidden: !settings?.[nodeType].hidden as boolean } });
+                  updateSettings({ [nodeType]: { ...settings?.[nodeType], hidden: !settings?.[nodeType]?.hidden as boolean } });
                 }}
               />
             </div>
@@ -137,10 +137,10 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting
                 updateValue={(val: number[]) => updateSettings({ [edgeType]: { ...settings?.[edgeType], color: val } })}
               />
               <Button
-                iconComponent={settings?.[edgeType].hidden ? <VisibilityOff /> : <Visibility />}
+                iconComponent={settings?.[edgeType]?.hidden ? <VisibilityOff /> : <Visibility />}
                 variant="ghost"
                 onClick={() => {
-                  updateSettings({ [edgeType]: { ...settings?.[edgeType], hidden: !settings?.[edgeType].hidden as boolean } });
+                  updateSettings({ [edgeType]: { ...settings?.[edgeType], hidden: !settings?.[edgeType]?.hidden as boolean } });
                 }}
               />
             </div>
diff --git a/libs/shared/lib/vis/visualizations/mapvis/mapvis.tsx b/libs/shared/lib/vis/visualizations/mapvis/mapvis.tsx
index 4ee0dabf5..7c0d3e54c 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/mapvis.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/mapvis.tsx
@@ -67,10 +67,8 @@ export const MapVis = ({ data, settings, handleSelect, graphMetadata }: Visualiz
   );
 
   useEffect(() => {
-    const layerType = settings.layer ? layerTypes?.[settings.layer] : layerTypes.node;
-
     setLayer({
-      type: layerType,
+      type: settings.layer ? layerTypes?.[settings.layer] : layerTypes.nodelink,
       config: settings,
     });
   }, [settings.layer]);
@@ -80,10 +78,10 @@ export const MapVis = ({ data, settings, handleSelect, graphMetadata }: Visualiz
 
     const coordinateLookup: { [id: string]: Coordinate } = data.nodes.reduce(
       (acc, node) => {
-        const latitude = settings[node.label].lat ? (node?.attributes?.[settings[node.label].lat] as string) : undefined;
-        const longitude = settings[node.label].lon ? (node?.attributes?.[settings[node.label].lon] as string) : undefined;
+        const latitude = settings?.[node.label]?.lat ? (node?.attributes?.[settings[node.label].lat] as string) : undefined;
+        const longitude = settings?.[node.label]?.lon ? (node?.attributes?.[settings[node.label].lon] as string) : undefined;
 
-        if (!!latitude && !!longitude) {
+        if (latitude !== undefined && longitude !== undefined) {
           acc[node._id] = [parseFloat(longitude), parseFloat(latitude)];
         }
 
@@ -98,9 +96,7 @@ export const MapVis = ({ data, settings, handleSelect, graphMetadata }: Visualiz
       config: settings,
       selected: selected,
       hoverObject: hoverObject,
-      getNodeLocation: (d: string) => {
-        return coordinateLookup[d];
-      },
+      getNodeLocation: (d: string) => coordinateLookup[d],
       flyToBoundingBox: flyToBoundingBox,
       setLayerIds: (val: string[]) => setLayerIds(val),
     });
-- 
GitLab