From 7b65e84b264eb1a232ce2d21ffeefff4ffe3631e Mon Sep 17 00:00:00 2001
From: "Vink, S.A. (Sjoerd)" <s.a.vink@uu.nl>
Date: Tue, 9 Jul 2024 10:47:23 +0200
Subject: [PATCH] feat(map_nodelink): spatial attributes

---
 .../mapvis/layers/choropleth-layer/ChoroplethOptions.tsx      | 4 +++-
 .../mapvis/layers/heatmap-layer/HeatLayerOptions.tsx          | 4 +++-
 .../visualizations/mapvis/layers/icon-layer/IconOptions.tsx   | 4 +++-
 .../visualizations/mapvis/layers/node-layer/NodeOptions.tsx   | 4 +++-
 .../mapvis/layers/nodelink-layer/NodeLinkOptions.tsx          | 4 +++-
 5 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/libs/shared/lib/vis/visualizations/mapvis/layers/choropleth-layer/ChoroplethOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/layers/choropleth-layer/ChoroplethOptions.tsx
index 9d040077d..af7deba69 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/layers/choropleth-layer/ChoroplethOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/layers/choropleth-layer/ChoroplethOptions.tsx
@@ -28,7 +28,9 @@ export default function ChoroplethOptions({ settings, graphMetadata, updateSetti
 
   const spatialAttributes: { [id: string]: string[] } = {};
   graphMetadata.nodes.labels.forEach((node) => {
-    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes)
+      .filter(([, value]) => value.dimension === 'numerical')
+      .map(([key]) => key);
   });
 
   const handleCollapseToggle = (nodeType: string) => {
diff --git a/libs/shared/lib/vis/visualizations/mapvis/layers/heatmap-layer/HeatLayerOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/layers/heatmap-layer/HeatLayerOptions.tsx
index e3eb70ebb..374870547 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/layers/heatmap-layer/HeatLayerOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/layers/heatmap-layer/HeatLayerOptions.tsx
@@ -28,7 +28,9 @@ export default function HeatLayerOptions({ settings, graphMetadata, updateSettin
 
   const spatialAttributes: { [id: string]: string[] } = {};
   graphMetadata.nodes.labels.forEach((node) => {
-    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes)
+      .filter(([, value]) => value.dimension === 'numerical')
+      .map(([key]) => key);
   });
 
   const handleCollapseToggle = (nodeType: string) => {
diff --git a/libs/shared/lib/vis/visualizations/mapvis/layers/icon-layer/IconOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/layers/icon-layer/IconOptions.tsx
index b0fb2f86c..433c9b0f5 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/layers/icon-layer/IconOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/layers/icon-layer/IconOptions.tsx
@@ -28,7 +28,9 @@ export default function IconOptions({ settings, graphMetadata, updateSettings }:
 
   const spatialAttributes: { [id: string]: string[] } = {};
   graphMetadata.nodes.labels.forEach((node) => {
-    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes)
+      .filter(([, value]) => value.dimension === 'numerical')
+      .map(([key]) => key);
   });
 
   const handleCollapseToggle = (nodeType: string) => {
diff --git a/libs/shared/lib/vis/visualizations/mapvis/layers/node-layer/NodeOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/layers/node-layer/NodeOptions.tsx
index 2a69573f5..783788f82 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/layers/node-layer/NodeOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/layers/node-layer/NodeOptions.tsx
@@ -29,7 +29,9 @@ export default function NodeOptions({ settings, graphMetadata, updateSettings }:
 
   const spatialAttributes: { [id: string]: string[] } = {};
   graphMetadata.nodes.labels.forEach((node) => {
-    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes)
+      .filter(([, value]) => value.dimension === 'numerical')
+      .map(([key]) => key);
   });
 
   const handleCollapseToggle = (nodeType: string) => {
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 06f3fa1e4..abab54f01 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
@@ -43,7 +43,9 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting
 
   const spatialAttributes: { [id: string]: string[] } = {};
   graphMetadata.nodes.labels.forEach((node) => {
-    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes)
+      .filter(([, value]) => value.dimension === 'numerical')
+      .map(([key]) => key);
   });
 
   const handleCollapseToggle = (nodeType: string) => {
-- 
GitLab