From acf9f601022b6ecc218b03522666a8485f845caa Mon Sep 17 00:00:00 2001 From: razvanMiu Date: Thu, 6 May 2021 15:22:47 +0300 Subject: [PATCH] [Bug #129791] Make filter by location / by country independent --- .../manage/Blocks/FiltersBlock/View.jsx | 51 +++++++++++++------ 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/src/components/manage/Blocks/FiltersBlock/View.jsx b/src/components/manage/Blocks/FiltersBlock/View.jsx index 7393f485..78f1bf0a 100644 --- a/src/components/manage/Blocks/FiltersBlock/View.jsx +++ b/src/components/manage/Blocks/FiltersBlock/View.jsx @@ -82,16 +82,18 @@ const View = ({ content, ...props }) => { useEffect(function () { mounted.current = true; setMountState(true); + document.addEventListener('mousedown', handleClickOutside, false); return () => { mounted.current = false; setMountState(false); + document.removeEventListener('mousedown', handleClickOutside, false); }; /* eslint-disable-next-line */ }, []); useEffect(() => { if (mounted.current && triggerSearch) { - submit(); + submit(false, true); setTriggerSearch(false); } /* eslint-disable-next-line */ @@ -104,18 +106,6 @@ const View = ({ content, ...props }) => { /* eslint-disable-next-line */ }, [state.open]); - useEffect(() => { - // register eventListener on each state update - if (mounted.current) { - document.addEventListener('mousedown', handleClickOutside, false); - } - return () => { - // unregister eventListener - document.removeEventListener('mousedown', handleClickOutside, false); - }; - /* eslint-disable-next-line */ - }, [state]); - useEffect(() => { if (mounted.current) { updateFilters(); @@ -435,6 +425,7 @@ const View = ({ content, ...props }) => { }); setLoadingData(true); } + if (!promises?.length) return; Promise.all(promises) .then((response) => { if (mounted.current) { @@ -625,7 +616,6 @@ const View = ({ content, ...props }) => { filtersToDelete.forEach((filter) => { newFilters[filter] = []; }); - setState({ ...state, filters: { ...(newFilters || {}) }, @@ -883,7 +873,7 @@ const View = ({ content, ...props }) => { setSearchTerm(data.value); }; - const submit = (advancedFiltering = false) => { + const submit = (advancedFiltering = false, search = false) => { const searchTermType = sitesResults.indexOf(searchTerm) > -1 ? 'siteTerm' @@ -945,9 +935,35 @@ const View = ({ content, ...props }) => { ? null : props.discodata_query.search['extent'], advancedFiltering, + ...(!search + ? {} + : { + siteCountry: [], + province: [], + region: [], + riverBasin: [], + nuts_regions: [], + nuts_latest: [], + }), + }, + }); + setState({ + ...state, + open: false, + filters: { + ...state.filters, + ...(!search + ? {} + : { + siteCountry: [null], + province: [null], + region: [null], + riverBasin: [null], + nuts_regions: [null], + nuts_latest: [null], + }), }, }); - setState({ ...state, open: false }); }; const getNewExtent = (searchTerm) => { @@ -1388,6 +1404,8 @@ const View = ({ content, ...props }) => { ); props.setQueryParam({ queryParam: { + locationTerm: null, + siteTerm: null, advancedFiltering: true, filtersCounter: props.discodata_query.search[ 'filtersCounter' @@ -1398,6 +1416,7 @@ const View = ({ content, ...props }) => { : 1, }, }); + setSearchTerm(''); }} placeholder={ state.filtersMeta['countries']?.placeholder