diff --git a/src/components/filters/Filters.js b/src/components/filters/Filters.js index 38657cca1..bd95fe7f9 100644 --- a/src/components/filters/Filters.js +++ b/src/components/filters/Filters.js @@ -19,12 +19,12 @@ class Filters extends Component { componentWillReceiveProps(props) { const {filtersActive} = props; - this.init(filtersActive ? filtersActive[0] : null); + this.init(filtersActive ? filtersActive : null); } componentDidMount() { const {filtersActive} = this.props; - filtersActive && this.init(filtersActive[0]); + filtersActive && this.init(filtersActive); } init = (filter) => { @@ -44,24 +44,36 @@ class Filters extends Component { this.setState({ notValidFields: !valid }, () => { - if (valid){ + if (valid) { const parsedFilter = filter.parameters ? Object.assign({}, filter, { parameters: this.parseToPatch(filter.parameters) }) : filter; - this.setFilterActive([parsedFilter]); + + this.setFilterActive(parsedFilter); + cb && cb(); } }); } - setFilterActive = (filter) => { - const {updateDocList} = this.props; + setFilterActive = (filterToAdd) => { + const { updateDocList } = this.props; + const { filter } = this.state; + + let newFilter; + if (filter) { + newFilter = filter.filter( (item) => item.filterId !== filterToAdd.filterId ); + newFilter.push(filterToAdd); + } + else { + newFilter = [filterToAdd]; + } this.setState({ - filter: filter + filter: newFilter }, () => { - updateDocList(filter); + updateDocList(newFilter); }) } @@ -75,8 +87,19 @@ class Filters extends Component { }) } - clearFilters = () => { - this.setFilterActive(null) + clearFilters = (filterToClear) => { + const { updateDocList } = this.props; + const { filter } = this.state; + + if (filter) { + let newFilter = filter.filter( (item) => item.filterId !== filterToClear.filterId ); + + this.setState({ + filter: newFilter + }, () => { + updateDocList(newFilter); + }) + } } dropdownToggled = () => { @@ -97,13 +120,13 @@ class Filters extends Component { } isFilterValid = (filters) => { - if(filters.parameters){ + if (filters.parameters) { return !(filters.parameters.filter( item => item.mandatory && !item.value ).length); - }else{ - return true; } + + return true; } parseToPatch = (params) => { diff --git a/src/components/filters/FiltersFrequent.js b/src/components/filters/FiltersFrequent.js index cab660052..5db70aaf3 100644 --- a/src/components/filters/FiltersFrequent.js +++ b/src/components/filters/FiltersFrequent.js @@ -30,19 +30,31 @@ class FiltersFrequent extends Component { dropdownToggled(); } + isActive(filterId) { + const { active } = this.props; + let result = false; + + if (active) { + let activeFilter = active.find( (item) => item.filterId === filterId ); + result = (typeof activeFilter !== 'undefined') && activeFilter; + } + + return result; + } + render() { const { data, windowType, notValidFields, viewId, handleShow, applyFilters, clearFilters, active } = this.props; - const {openFilterId} = this.state; + const { openFilterId } = this.state; return (
{data.map((item, index) => { - const isActive = - active && (active.filterId == item.filterId); + const isActive = this.isActive(item.filterId); + return (
{ isOpenDropdown && @@ -90,7 +103,7 @@ class FiltersNotFrequent extends Component { : this.toggleDropdown(false) }