From d62353eee3a1931c4a9902c4007f846196c8f050 Mon Sep 17 00:00:00 2001
From: Esko Ikkala <esko.ikkala@aalto.fi>
Date: Fri, 14 Sep 2018 17:38:29 +0300
Subject: [PATCH] Add creation places to result map

---
 src/client/components/VirtualizedTable.js | 13 +++++++-
 src/client/components/map/LeafletMap.js   | 38 ++++++++++++++++-------
 src/client/containers/MapApp.js           |  2 +-
 3 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/src/client/components/VirtualizedTable.js b/src/client/components/VirtualizedTable.js
index 5dd93a40..2131fb91 100644
--- a/src/client/components/VirtualizedTable.js
+++ b/src/client/components/VirtualizedTable.js
@@ -168,6 +168,17 @@ class VirtualizedTable extends React.PureComponent {
       />
     );
 
+    const valueFromArray = (property, rowData) => {
+      if (rowData[property] === undefined) {
+        return 'Undefined';
+      }
+      if (Array.isArray(rowData[property])) {
+        return rowData[property].map((item) => item.label).join(' / ');
+      } else {
+        return rowData[property].label;
+      }
+    };
+
     return (
       <div className={classes.root}>
         <Grid container className={classes.container}>
@@ -219,7 +230,7 @@ class VirtualizedTable extends React.PureComponent {
                     />
                     <Column
                       label="Creation place"
-                      cellDataGetter={({rowData}) => rowData.creationPlace}
+                      cellDataGetter={({rowData}) => valueFromArray('creationPlace', rowData)}
                       dataKey="creationPlace"
                       headerRenderer={headerRenderer}
                       width={columnWidth}
diff --git a/src/client/components/map/LeafletMap.js b/src/client/components/map/LeafletMap.js
index 2e90bf25..fcb365d0 100644
--- a/src/client/components/map/LeafletMap.js
+++ b/src/client/components/map/LeafletMap.js
@@ -105,7 +105,7 @@ class LeafletMap extends React.Component {
     // create map
     this.leafletMap = L.map('map', {
       center: [65.184809, 27.314050],
-      zoom: 4,
+      zoom: 1,
       layers: [
         OSMBaseLayer,
         this.resultMarkerLayer,
@@ -204,10 +204,18 @@ class LeafletMap extends React.Component {
     this.resultMarkerLayer.clearLayers();
     this.markers = {};
     results.forEach(result => {
-      const marker = this.createMarker(result);
-      //console.log(result.s);
-      this.markers[result.s] = marker;
-      marker == null ? null : marker.addTo(this.resultMarkerLayer);
+      if (result.creationPlace !== undefined) {
+        if (Array.isArray(result.creationPlace)) {
+          result.creationPlace.forEach(place => {
+            const marker = this.createMarker(place);
+            //this.markers[result.id] = marker;
+            marker.addTo(this.resultMarkerLayer);
+          });
+        } else {
+          const marker = this.createMarker(result.creationPlace);
+          marker == null ? null : marker.addTo(this.resultMarkerLayer);
+        }
+      }
     });
   }
 
@@ -216,9 +224,18 @@ class LeafletMap extends React.Component {
     this.markers = {};
     const clusterer = L.markerClusterGroup();
     results.forEach(result => {
-      const marker = this.createMarker(result);
-      this.markers[result.s] = marker;
-      marker == null ? null : clusterer.addLayer(marker);
+      if (result.creationPlace !== undefined) {
+        if (Array.isArray(result.creationPlace)) {
+          result.creationPlace.forEach(place => {
+            const marker = this.createMarker(place);
+            //this.markers[result.id] = marker;
+            marker == null ? null : clusterer.addLayer(marker);
+          });
+        } else {
+          const marker = this.createMarker(result.creationPlace);
+          marker == null ? null : clusterer.addLayer(marker);
+        }
+      }
     });
     clusterer.addTo(this.resultMarkerLayer);
   }
@@ -238,11 +255,10 @@ class LeafletMap extends React.Component {
   }
 
   createPopUpContent(result) {
+  //  <p>Source: <a target='_blank' rel='noopener noreferrer' href={source}>{source}</a></p>
     const popUpTemplate = `
       <h3>{label}</h3>
-      <p>Type: {typeLabel}</p>
-      <p>Area: {broaderAreaLabel}</p>
-      <p>Source: <a target='_blank' rel='noopener noreferrer' href={s}>{source}</a></p>
+
       `;
     return L.Util.template(popUpTemplate, result);
   }
diff --git a/src/client/containers/MapApp.js b/src/client/containers/MapApp.js
index 205287fd..47d6fb9a 100644
--- a/src/client/containers/MapApp.js
+++ b/src/client/containers/MapApp.js
@@ -135,7 +135,7 @@ let MapApp = (props) => {
   // console.log('oneColumnView', oneColumnView)
   // console.log('resultFormat', resultFormat)
   // console.log('mapMode', mapMode)
-  console.log(props.results)
+  //console.log(props.results)
 
   let table = '';
   if ((oneColumnView && options.resultFormat === 'table') || (!oneColumnView)) {
-- 
GitLab