From 91c2ec9dfdb198cb16e7cdfdf63bd36be51ccd26 Mon Sep 17 00:00:00 2001
From: esikkala <esko.ikkala@aalto.fi>
Date: Wed, 7 Aug 2019 11:12:52 +0300
Subject: [PATCH] Disable filter deleting when another facet is updating

---
 .../components/facet_bar/ActiveFilters.js     |  6 ++++--
 src/client/components/facet_bar/ChipsArray.js | 19 +++++++++++--------
 src/client/components/facet_bar/FacetBar.js   |  1 +
 src/client/components/facet_bar/FacetInfo.js  |  6 ++++--
 4 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/client/components/facet_bar/ActiveFilters.js b/src/client/components/facet_bar/ActiveFilters.js
index 91f86b6f..57bae263 100644
--- a/src/client/components/facet_bar/ActiveFilters.js
+++ b/src/client/components/facet_bar/ActiveFilters.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
 import ChipsArray from './ChipsArray';
 
 const ActiveFilters = props => {
-  const { uriFilters, textFilters, timespanFilters, facets } = props;
+  const { uriFilters, textFilters, timespanFilters, facets, someFacetIsFetching } = props;
   const facetValues = [];
   Object.keys(uriFilters).map(activeFacetID => {
     Object.values(uriFilters[activeFacetID]).forEach(value => {
@@ -36,6 +36,7 @@ const ActiveFilters = props => {
       data={facetValues}
       facetClass={props.facetClass}
       updateFacetOption={props.updateFacetOption}
+      someFacetIsFetching={someFacetIsFetching}
     />
   );
 };
@@ -47,7 +48,8 @@ ActiveFilters.propTypes = {
   spatialFilters: PropTypes.object.isRequired,
   textFilters: PropTypes.object.isRequired,
   timespanFilters: PropTypes.object.isRequired,
-  updateFacetOption: PropTypes.func.isRequired
+  updateFacetOption: PropTypes.func.isRequired,
+  someFacetIsFetching: PropTypes.bool.isRequired
 };
 
 export default ActiveFilters;
diff --git a/src/client/components/facet_bar/ChipsArray.js b/src/client/components/facet_bar/ChipsArray.js
index fff73b2c..d21a9e6b 100644
--- a/src/client/components/facet_bar/ChipsArray.js
+++ b/src/client/components/facet_bar/ChipsArray.js
@@ -18,13 +18,15 @@ const styles = theme => ({
 class ChipsArray extends React.Component {
 
   handleDelete = item => () => {
-    if (item.filterType === 'uriFilter') {
-      this.props.updateFacetOption({
-        facetClass: this.props.facetClass,
-        facetID: item.facetID,
-        option: item.filterType,
-        value: item.value
-      });
+    if (!this.props.someFacetIsFetching) {
+      if (item.filterType === 'uriFilter') {
+        this.props.updateFacetOption({
+          facetClass: this.props.facetClass,
+          facetID: item.facetID,
+          option: item.filterType,
+          value: item.value
+        });
+      }
     }
   };
 
@@ -88,7 +90,8 @@ ChipsArray.propTypes = {
   classes: PropTypes.object.isRequired,
   data: PropTypes.array.isRequired,
   facetClass: PropTypes.string.isRequired,
-  updateFacetOption: PropTypes.func.isRequired
+  updateFacetOption: PropTypes.func.isRequired,
+  someFacetIsFetching: PropTypes.bool.isRequired
 };
 
 export default withStyles(styles)(ChipsArray);
diff --git a/src/client/components/facet_bar/FacetBar.js b/src/client/components/facet_bar/FacetBar.js
index ffc74ae2..de48ee61 100644
--- a/src/client/components/facet_bar/FacetBar.js
+++ b/src/client/components/facet_bar/FacetBar.js
@@ -192,6 +192,7 @@ class FacetBar extends React.Component {
             fetchingResultCount={this.props.fetchingResultCount}
             updateFacetOption={this.props.updateFacetOption}
             fetchResultCount={this.props.fetchResultCount}
+            someFacetIsFetching={someFacetIsFetching}
           />
         </Paper>
         {Object.keys(facets).map(facetID => this.renderFacet(facetID, someFacetIsFetching))}
diff --git a/src/client/components/facet_bar/FacetInfo.js b/src/client/components/facet_bar/FacetInfo.js
index 77bb51fe..a294af00 100644
--- a/src/client/components/facet_bar/FacetInfo.js
+++ b/src/client/components/facet_bar/FacetInfo.js
@@ -34,7 +34,7 @@ class FacetInfo extends React.Component {
   }
 
   render() {
-    const { classes, facetClass, resultClass, resultCount } = this.props;
+    const { classes, facetClass, resultClass, resultCount, someFacetIsFetching } = this.props;
     const { facets } = this.props.facetData;
     let uriFilters = {};
     let spatialFilters = {};
@@ -90,6 +90,7 @@ class FacetInfo extends React.Component {
                 textFilters={textFilters}
                 timespanFilters={timespanFilters}
                 updateFacetOption={this.props.updateFacetOption}
+                someFacetIsFetching={someFacetIsFetching}
               />
             </div>
             <Divider className={classes.facetInfoDivider} />
@@ -110,7 +111,8 @@ FacetInfo.propTypes = {
   resultCount: PropTypes.number.isRequired,
   fetchingResultCount: PropTypes.bool.isRequired,
   updateFacetOption: PropTypes.func.isRequired,
-  fetchResultCount: PropTypes.func.isRequired
+  fetchResultCount: PropTypes.func.isRequired,
+  someFacetIsFetching: PropTypes.bool.isRequired
 };
 
 export default withStyles(styles)(FacetInfo);
-- 
GitLab