From 8724d166c76f34d302eb46e9522b0df662c35e47 Mon Sep 17 00:00:00 2001 From: esikkala <esko.ikkala@aalto.fi> Date: Wed, 7 Aug 2019 14:17:57 +0300 Subject: [PATCH] Enable filter deleting for text and timespan filters --- .../components/facet_bar/ActiveFilters.js | 4 +- src/client/components/facet_bar/ChipsArray.js | 39 +++++++++++++++---- src/client/components/facet_bar/FacetBar.js | 1 + src/client/components/facet_bar/FacetInfo.js | 4 +- src/client/reducers/helpers.js | 21 ++++++---- 5 files changed, 52 insertions(+), 17 deletions(-) diff --git a/src/client/components/facet_bar/ActiveFilters.js b/src/client/components/facet_bar/ActiveFilters.js index 57bae263..f5d9855c 100644 --- a/src/client/components/facet_bar/ActiveFilters.js +++ b/src/client/components/facet_bar/ActiveFilters.js @@ -37,6 +37,7 @@ const ActiveFilters = props => { facetClass={props.facetClass} updateFacetOption={props.updateFacetOption} someFacetIsFetching={someFacetIsFetching} + fetchFacet={props.fetchFacet} /> ); }; @@ -49,7 +50,8 @@ ActiveFilters.propTypes = { textFilters: PropTypes.object.isRequired, timespanFilters: PropTypes.object.isRequired, updateFacetOption: PropTypes.func.isRequired, - someFacetIsFetching: PropTypes.bool.isRequired + someFacetIsFetching: PropTypes.bool.isRequired, + fetchFacet: PropTypes.func.isRequired }; export default ActiveFilters; diff --git a/src/client/components/facet_bar/ChipsArray.js b/src/client/components/facet_bar/ChipsArray.js index d21a9e6b..a706f7f8 100644 --- a/src/client/components/facet_bar/ChipsArray.js +++ b/src/client/components/facet_bar/ChipsArray.js @@ -19,13 +19,35 @@ class ChipsArray extends React.Component { handleDelete = item => () => { if (!this.props.someFacetIsFetching) { - if (item.filterType === 'uriFilter') { - this.props.updateFacetOption({ - facetClass: this.props.facetClass, - facetID: item.facetID, - option: item.filterType, - value: item.value - }); + switch(item.filterType) { + case 'uriFilter': + this.props.updateFacetOption({ + facetClass: this.props.facetClass, + facetID: item.facetID, + option: item.filterType, + value: item.value + }); + break; + case 'textFilter': + this.props.updateFacetOption({ + facetClass: this.props.facetClass, + facetID: item.facetID, + option: item.filterType, + value: null + }); + break; + case 'timespanFilter': { + this.props.updateFacetOption({ + facetClass: this.props.facetClass, + facetID: item.facetID, + option: item.filterType, + value: null + }); + this.props.fetchFacet({ + facetClass: this.props.facetClass, + facetID: item.facetID, + }); + } } } }; @@ -91,7 +113,8 @@ ChipsArray.propTypes = { data: PropTypes.array.isRequired, facetClass: PropTypes.string.isRequired, updateFacetOption: PropTypes.func.isRequired, - someFacetIsFetching: PropTypes.bool.isRequired + someFacetIsFetching: PropTypes.bool.isRequired, + fetchFacet: PropTypes.func.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 de48ee61..1b025d82 100644 --- a/src/client/components/facet_bar/FacetBar.js +++ b/src/client/components/facet_bar/FacetBar.js @@ -193,6 +193,7 @@ class FacetBar extends React.Component { updateFacetOption={this.props.updateFacetOption} fetchResultCount={this.props.fetchResultCount} someFacetIsFetching={someFacetIsFetching} + fetchFacet={this.props.fetchFacet} /> </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 a294af00..e694b60b 100644 --- a/src/client/components/facet_bar/FacetInfo.js +++ b/src/client/components/facet_bar/FacetInfo.js @@ -91,6 +91,7 @@ class FacetInfo extends React.Component { timespanFilters={timespanFilters} updateFacetOption={this.props.updateFacetOption} someFacetIsFetching={someFacetIsFetching} + fetchFacet={this.props.fetchFacet} /> </div> <Divider className={classes.facetInfoDivider} /> @@ -112,7 +113,8 @@ FacetInfo.propTypes = { fetchingResultCount: PropTypes.bool.isRequired, updateFacetOption: PropTypes.func.isRequired, fetchResultCount: PropTypes.func.isRequired, - someFacetIsFetching: PropTypes.bool.isRequired + someFacetIsFetching: PropTypes.bool.isRequired, + fetchFacet: PropTypes.func.isRequired }; export default withStyles(styles)(FacetInfo); diff --git a/src/client/reducers/helpers.js b/src/client/reducers/helpers.js index 2bff9ba5..586a69f1 100644 --- a/src/client/reducers/helpers.js +++ b/src/client/reducers/helpers.js @@ -116,13 +116,20 @@ const updateFacetFilter = (state, action) => { textFilter: value }; } else if (oldFacet.filterType === 'timespanFilter') { - newFacet = { - ...state.facets[facetID], - timespanFilter: { - start: value[0], - end: value[1] - } - }; + if (value == null) { + newFacet = { + ...state.facets[facetID], + timespanFilter: null + }; + } else { + newFacet = { + ...state.facets[facetID], + timespanFilter: { + start: value[0], + end: value[1] + } + }; + } } return { ...state, -- GitLab