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