Skip to content
Snippets Groups Projects
Commit 6c841c69 authored by esikkala's avatar esikkala
Browse files

Refactor filtering

parent bfa9b917
No related branches found
No related tags found
No related merge requests found
...@@ -33,10 +33,8 @@ export const FETCH_FACET = 'FETCH_FACET'; ...@@ -33,10 +33,8 @@ export const FETCH_FACET = 'FETCH_FACET';
export const UPDATE_FACET = 'UPDATE_FACET'; export const UPDATE_FACET = 'UPDATE_FACET';
export const CLEAR_FACET = 'CLEAR_FACET'; export const CLEAR_FACET = 'CLEAR_FACET';
export const FETCH_FACET_FAILED = 'FETCH_FACET_FAILED'; export const FETCH_FACET_FAILED = 'FETCH_FACET_FAILED';
export const UPDATE_FILTER = 'UPDATE_FILTER';
export const UPDATE_RESULTS_FILTER = 'UPDATE_RESULTS_FILTER';
export const SORT_RESULTS = 'SORT_RESULTS'; export const SORT_RESULTS = 'SORT_RESULTS';
export const CLEAR_ERROR = 'CLEAR_ERROR'; export const CLEAR_ERROR = 'CLEAR_ERROR';
export const UPDATE_LANGUAGE = 'UPDATE_LANGUAGE'; export const UPDATE_LANGUAGE = 'UPDATE_LANGUAGE';
...@@ -70,26 +68,19 @@ export const removeTempMarker = () => ({ ...@@ -70,26 +68,19 @@ export const removeTempMarker = () => ({
type: REMOVE_TEMP_MARKER, type: REMOVE_TEMP_MARKER,
}); });
export const startSpinner = () => ({
type: START_SPINNER,
});
// Suggestions
export const fetchSuggestions = () => ({ export const fetchSuggestions = () => ({
type: FETCH_SUGGESTIONS, type: FETCH_SUGGESTIONS,
}); });
export const fetchSuggestionsFailed = (error) => ({ export const fetchSuggestionsFailed = (error) => ({
type: FETCH_SUGGESTIONS_FAILED, type: FETCH_SUGGESTIONS_FAILED,
error error
}); });
export const updateSuggestions = ({ suggestions }) => ({ export const updateSuggestions = ({ suggestions }) => ({
type: UPDATE_SUGGESTIONS, type: UPDATE_SUGGESTIONS,
suggestions suggestions
}); });
export const clearSuggestions = () => ({ export const clearSuggestions = () => ({
type: CLEAR_SUGGESTIONS, type: CLEAR_SUGGESTIONS,
}); });
...@@ -98,16 +89,13 @@ export const clearSuggestions = () => ({ ...@@ -98,16 +89,13 @@ export const clearSuggestions = () => ({
export const fetchResults = () => ({ export const fetchResults = () => ({
type: FETCH_RESULTS, type: FETCH_RESULTS,
}); });
export const updateResults = ({ results }) => ({ export const updateResults = ({ results }) => ({
type: UPDATE_RESULTS, type: UPDATE_RESULTS,
results results
}); });
export const clearResults = () => ({ export const clearResults = () => ({
type: CLEAR_RESULTS, type: CLEAR_RESULTS,
}); });
export const fetchResultsFailed = (error) => ({ export const fetchResultsFailed = (error) => ({
type: FETCH_RESULTS_FAILED, type: FETCH_RESULTS_FAILED,
error error
...@@ -118,16 +106,13 @@ export const fetchManuscripts = (page) => ({ ...@@ -118,16 +106,13 @@ export const fetchManuscripts = (page) => ({
type: FETCH_MANUSCRIPTS, type: FETCH_MANUSCRIPTS,
page page
}); });
export const updateManuscripts = ({ manuscripts, page }) => ({ export const updateManuscripts = ({ manuscripts, page }) => ({
type: UPDATE_MANUSCRIPTS, type: UPDATE_MANUSCRIPTS,
manuscripts, page manuscripts, page
}); });
export const clearManuscripts = () => ({ export const clearManuscripts = () => ({
type: CLEAR_MANUSCRIPTS, type: CLEAR_MANUSCRIPTS,
}); });
export const fetchManuscriptsFailed = (error) => ({ export const fetchManuscriptsFailed = (error) => ({
type: FETCH_MANUSCRIPTS_FAILED, type: FETCH_MANUSCRIPTS_FAILED,
error error
...@@ -149,7 +134,6 @@ export const fetchPlacesFailed = (error) => ({ ...@@ -149,7 +134,6 @@ export const fetchPlacesFailed = (error) => ({
type: FETCH_PLACES_FAILED, type: FETCH_PLACES_FAILED,
error error
}); });
export const fetchPlace = (placeId) => ({ export const fetchPlace = (placeId) => ({
type: FETCH_PLACE, type: FETCH_PLACE,
placeId placeId
...@@ -182,10 +166,8 @@ export const fetchFacetFailed = (error) => ({ ...@@ -182,10 +166,8 @@ export const fetchFacetFailed = (error) => ({
type: FETCH_FACET_FAILED, type: FETCH_FACET_FAILED,
error error
}); });
export const updateFilter = (filter) => ({
type: UPDATE_FILTER,
export const updateResultsFilter = (filter) => ({
type: UPDATE_RESULTS_FILTER,
filter filter
}); });
......
...@@ -70,7 +70,13 @@ class FacetDialog extends React.Component { ...@@ -70,7 +70,13 @@ class FacetDialog extends React.Component {
<Typography variant="h6">{propertyLabel}</Typography> <Typography variant="h6">{propertyLabel}</Typography>
</DialogTitle> </DialogTitle>
<DialogContent> <DialogContent>
{this.state.isLoading ? <CircularProgress style={{ color: purple[500] }} thickness={5} /> : <Tree data={facet.facetValues.creationPlace} /> } {this.state.isLoading ?
<CircularProgress style={{ color: purple[500] }} thickness={5} />
:
<Tree
data={facet.facetValues.creationPlace}
updateFilter={this.props.updateFilter}
/>}
</DialogContent> </DialogContent>
</Dialog> </Dialog>
</div> </div>
...@@ -85,6 +91,7 @@ FacetDialog.propTypes = { ...@@ -85,6 +91,7 @@ FacetDialog.propTypes = {
propertyLabel: PropTypes.string.isRequired, propertyLabel: PropTypes.string.isRequired,
fetchFacet: PropTypes.func.isRequired, fetchFacet: PropTypes.func.isRequired,
facet: PropTypes.object.isRequired, facet: PropTypes.object.isRequired,
updateFilter: PropTypes.func.isRequired
}; };
export default withStyles(styles)(FacetDialog); export default withStyles(styles)(FacetDialog);
...@@ -21,8 +21,9 @@ let Manuscripts = props => { ...@@ -21,8 +21,9 @@ let Manuscripts = props => {
fetchManuscripts={props.fetchManuscripts} fetchManuscripts={props.fetchManuscripts}
fetchingManuscripts={props.search.fetchingManuscripts} fetchingManuscripts={props.search.fetchingManuscripts}
fetchFacet={props.fetchFacet} fetchFacet={props.fetchFacet}
results={props.search.results}
fetchResults={props.fetchResults} fetchResults={props.fetchResults}
results={props.search.results}
updateFilter={props.updateFilter}
page={props.search.page} page={props.search.page}
/>} />}
/> />
...@@ -68,6 +69,7 @@ Manuscripts.propTypes = { ...@@ -68,6 +69,7 @@ Manuscripts.propTypes = {
fetchPlace: PropTypes.func.isRequired, fetchPlace: PropTypes.func.isRequired,
fetchFacet: PropTypes.func.isRequired, fetchFacet: PropTypes.func.isRequired,
fetchResults: PropTypes.func.isRequired, fetchResults: PropTypes.func.isRequired,
updateFilter: PropTypes.func.isRequired,
match: PropTypes.object.isRequired match: PropTypes.object.isRequired
}; };
......
...@@ -225,6 +225,7 @@ class ResultTable extends React.Component { ...@@ -225,6 +225,7 @@ class ResultTable extends React.Component {
<ResultTableHead <ResultTableHead
fetchFacet={this.props.fetchFacet} fetchFacet={this.props.fetchFacet}
fetchManuscripts={this.props.fetchManuscripts} fetchManuscripts={this.props.fetchManuscripts}
updateFilter={this.props.updateFilter}
facet={this.props.facet} facet={this.props.facet}
results={this.props.results} results={this.props.results}
page={this.props.page} page={this.props.page}
...@@ -280,6 +281,7 @@ ResultTable.propTypes = { ...@@ -280,6 +281,7 @@ ResultTable.propTypes = {
facet: PropTypes.object.isRequired, facet: PropTypes.object.isRequired,
results: PropTypes.number.isRequired, results: PropTypes.number.isRequired,
fetchResults: PropTypes.func.isRequired, fetchResults: PropTypes.func.isRequired,
updateFilter: PropTypes.func.isRequired,
page: PropTypes.number.isRequired page: PropTypes.number.isRequired
}; };
......
...@@ -106,7 +106,8 @@ class ResultTableHead extends React.Component { ...@@ -106,7 +106,8 @@ class ResultTableHead extends React.Component {
render() { render() {
const { classes, page, results } = this.props; const { classes, page, results } = this.props;
const { rowsPerPage, order, orderBy } = this.state; const { rowsPerPage } = this.state;
//order, orderBy
return ( return (
<TableHead> <TableHead>
...@@ -135,6 +136,7 @@ class ResultTableHead extends React.Component { ...@@ -135,6 +136,7 @@ class ResultTableHead extends React.Component {
property={column.property} property={column.property}
propertyLabel={column.label} propertyLabel={column.label}
fetchFacet={this.props.fetchFacet} fetchFacet={this.props.fetchFacet}
updateFilter={this.props.updateFilter}
facet={this.props.facet} /> facet={this.props.facet} />
</Tooltip>} </Tooltip>}
</TableCell> </TableCell>
...@@ -150,6 +152,7 @@ ResultTableHead.propTypes = { ...@@ -150,6 +152,7 @@ ResultTableHead.propTypes = {
classes: PropTypes.object.isRequired, classes: PropTypes.object.isRequired,
fetchFacet: PropTypes.func.isRequired, fetchFacet: PropTypes.func.isRequired,
fetchManuscripts: PropTypes.func.isRequired, fetchManuscripts: PropTypes.func.isRequired,
updateFilter: PropTypes.func.isRequired,
facet: PropTypes.object.isRequired, facet: PropTypes.object.isRequired,
results: PropTypes.number.isRequired, results: PropTypes.number.isRequired,
page: PropTypes.number.isRequired page: PropTypes.number.isRequired
......
...@@ -40,6 +40,9 @@ class Tree extends Component { ...@@ -40,6 +40,9 @@ class Tree extends Component {
handleCheckboxChange = name => event => { handleCheckboxChange = name => event => {
console.log(name) console.log(name)
console.log(event.target.checked) console.log(event.target.checked)
// this.props.updateFilter({
//
// })
}; };
render() { render() {
...@@ -166,7 +169,8 @@ class Tree extends Component { ...@@ -166,7 +169,8 @@ class Tree extends Component {
Tree.propTypes = { Tree.propTypes = {
classes: PropTypes.object.isRequired, classes: PropTypes.object.isRequired,
data: PropTypes.array.isRequired data: PropTypes.array.isRequired,
updateFilter: PropTypes.func.isRequired,
}; };
export default withStyles(styles)(Tree); export default withStyles(styles)(Tree);
...@@ -7,7 +7,7 @@ import { withRouter } from 'react-router-dom'; ...@@ -7,7 +7,7 @@ import { withRouter } from 'react-router-dom';
import compose from 'recompose/compose'; import compose from 'recompose/compose';
import Paper from '@material-ui/core/Paper'; import Paper from '@material-ui/core/Paper';
import TopBar from '../components/TopBar'; import TopBar from '../components/TopBar';
import { Route, Switch } from 'react-router-dom'; import { Route } from 'react-router-dom';
import Manuscripts from '../components/Manuscripts'; import Manuscripts from '../components/Manuscripts';
import Main from '../components/Main'; import Main from '../components/Main';
...@@ -16,6 +16,7 @@ import { ...@@ -16,6 +16,7 @@ import {
fetchPlaces, fetchPlaces,
fetchPlace, fetchPlace,
fetchFacet, fetchFacet,
updateFilter,
fetchResults, fetchResults,
} from '../actions'; } from '../actions';
...@@ -109,6 +110,7 @@ let MapApp = (props) => { ...@@ -109,6 +110,7 @@ let MapApp = (props) => {
fetchPlace={props.fetchPlace} fetchPlace={props.fetchPlace}
fetchFacet={props.fetchFacet} fetchFacet={props.fetchFacet}
fetchResults={props.fetchResults} fetchResults={props.fetchResults}
updateFilter={props.updateFilter}
match={props.match} match={props.match}
/>} />}
/> />
...@@ -141,7 +143,8 @@ const mapDispatchToProps = ({ ...@@ -141,7 +143,8 @@ const mapDispatchToProps = ({
fetchPlaces, fetchPlaces,
fetchPlace, fetchPlace,
fetchFacet, fetchFacet,
fetchResults fetchResults,
updateFilter,
}); });
MapApp.propTypes = { MapApp.propTypes = {
...@@ -157,6 +160,7 @@ MapApp.propTypes = { ...@@ -157,6 +160,7 @@ MapApp.propTypes = {
fetchPlace: PropTypes.func.isRequired, fetchPlace: PropTypes.func.isRequired,
fetchFacet: PropTypes.func.isRequired, fetchFacet: PropTypes.func.isRequired,
fetchResults: PropTypes.func.isRequired, fetchResults: PropTypes.func.isRequired,
updateFilter: PropTypes.func.isRequired,
match: PropTypes.object.isRequired match: PropTypes.object.isRequired
}; };
......
...@@ -14,8 +14,8 @@ import { ...@@ -14,8 +14,8 @@ import {
UPDATE_PLACES, UPDATE_PLACES,
CLEAR_PLACES, CLEAR_PLACES,
UPDATE_PLACE, UPDATE_PLACE,
UPDATE_RESULTS_FILTER, SORT_RESULTS,
SORT_RESULTS UPDATE_FILTER
} from '../actions'; } from '../actions';
export const INITIAL_STATE = { export const INITIAL_STATE = {
...@@ -34,6 +34,10 @@ export const INITIAL_STATE = { ...@@ -34,6 +34,10 @@ export const INITIAL_STATE = {
'selected': false 'selected': false
}, },
}, },
filters: {
creationPlace: new Set(),
author: new Set(),
},
suggestions: [], suggestions: [],
suggestionsQuery: '', suggestionsQuery: '',
fetchingSuggestions: false, fetchingSuggestions: false,
...@@ -128,9 +132,8 @@ const search = (state = INITIAL_STATE, action) => { ...@@ -128,9 +132,8 @@ const search = (state = INITIAL_STATE, action) => {
'places': {}, 'places': {},
fetchingPlaces: false fetchingPlaces: false
}; };
case UPDATE_FILTER:
case UPDATE_RESULTS_FILTER: return updateFilter(state, action);
return updateResultsFilter(state, action);
case SORT_RESULTS: case SORT_RESULTS:
//console.log(action) //console.log(action)
return { return {
...@@ -143,16 +146,16 @@ const search = (state = INITIAL_STATE, action) => { ...@@ -143,16 +146,16 @@ const search = (state = INITIAL_STATE, action) => {
} }
}; };
const updateResultsFilter = (state, action) => { const updateFilter = (state, action) => {
const { property, value } = action.filter; const { property, value } = action.filter;
let nSet = state.resultsFilter[property]; let nSet = state.filters[property];
if (nSet.has(value)) { if (nSet.has(value)) {
nSet.delete(value); nSet.delete(value);
} else { } else {
nSet.add(value); nSet.add(value);
} }
const newFilter = updateObject(state.resultsFilter, { [property]: nSet }); const newFilter = updateObject(state.filters, { [property]: nSet });
return updateObject(state, { resultsFilter: newFilter }); return updateObject(state, { filters: newFilter });
}; };
const updateObject = (oldObject, newValues) => { const updateObject = (oldObject, newValues) => {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment