From cf7d2ac959fe4407693fdd1d415a2ba6bf88d4da Mon Sep 17 00:00:00 2001
From: esikkala <esko.ikkala@aalto.fi>
Date: Fri, 20 Jul 2018 09:56:58 +0300
Subject: [PATCH] Add selector for visible result values

---
 src/client/containers/MapApp.js |  9 +++++++--
 src/client/selectors/index.js   | 19 +++++++++++++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/client/containers/MapApp.js b/src/client/containers/MapApp.js
index 7c987fb6..3bc292a8 100644
--- a/src/client/containers/MapApp.js
+++ b/src/client/containers/MapApp.js
@@ -23,7 +23,10 @@ import ExpansionPanel from '@material-ui/core/ExpansionPanel';
 import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
 import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
 import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
-import { getVisibleResults } from '../selectors';
+import {
+  getVisibleResults,
+  getVisibleValues
+} from '../selectors';
 
 import {
   updateQuery,
@@ -133,7 +136,7 @@ let MapApp = (props) => {
   const { classes, error, theme, drawerIsOpen, mapReady } = props;
   const anchor = 'left';
 
-  //console.log(props.results);
+  console.log(props.resultValues);
 
   let resultsView = '';
   if (props.results.length > 0) {
@@ -265,6 +268,7 @@ let MapApp = (props) => {
 const mapStateToProps = (state) => ({
   search: state.search,
   results: getVisibleResults(state),
+  resultValues: getVisibleValues(state),
   drawerIsOpen: state.options.drawerIsOpen,
   mapReady: state.options.mapReady,
   error: state.error,
@@ -309,6 +313,7 @@ MapApp.propTypes = {
   updateResultFormat: PropTypes.func.isRequired,
   resultFormat: PropTypes.string.isRequired,
   results: PropTypes.array,
+  resultValues: PropTypes.object
 };
 
 MapApp = connect(
diff --git a/src/client/selectors/index.js b/src/client/selectors/index.js
index f45def96..1420c1a1 100644
--- a/src/client/selectors/index.js
+++ b/src/client/selectors/index.js
@@ -16,3 +16,22 @@ export const getVisibleResults = createSelector(
     }
   }
 );
+
+export const getVisibleValues = createSelector(
+  [ getVisibleResults ],
+  (visibleResults) => {
+    let typeLabels = [];
+    let broaderAreaLabels = [];
+    let sources = [];
+    for (const result of visibleResults) {
+      typeLabels.push(result.typeLabel);
+      broaderAreaLabels.push(result.broaderAreaLabel);
+      sources.push(result.source);
+    }
+    return {
+      typeLabels: Array.from(new Set(typeLabels)),
+      broaderAreaLabels: Array.from(new Set(broaderAreaLabels)),
+      sources: Array.from(new Set(sources)),
+    };
+  }
+);
-- 
GitLab