From 07d0d180f91d4bf5c5c2e846421e9eddf00570e1 Mon Sep 17 00:00:00 2001 From: ivan-aksamentov Date: Tue, 19 Dec 2023 21:44:44 +0100 Subject: [PATCH] fix(web): clear results table filters on run or when inputs are modified --- .../nextclade-web/src/hooks/useRunAnalysis.ts | 2 ++ .../nextclade-web/src/state/inputs.state.ts | 4 ++++ .../src/state/resultFilters.state.ts | 17 ++++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages_rs/nextclade-web/src/hooks/useRunAnalysis.ts b/packages_rs/nextclade-web/src/hooks/useRunAnalysis.ts index 3b9158b10..6d9746fa8 100644 --- a/packages_rs/nextclade-web/src/hooks/useRunAnalysis.ts +++ b/packages_rs/nextclade-web/src/hooks/useRunAnalysis.ts @@ -4,6 +4,7 @@ import { changeColorBy } from 'auspice/src/actions/colors' import { useRouter } from 'next/router' import { useDispatch } from 'react-redux' import { useRecoilCallback } from 'recoil' +import { clearAllFiltersAtom } from 'src/state/resultFilters.state' import { viewedCdsAtom } from 'src/state/seqViewSettings.state' import { AlgorithmGlobalStatus } from 'src/types' import { sanitizeError } from 'src/helpers/sanitizeError' @@ -48,6 +49,7 @@ export function useRunAnalysis() { set(showNewRunPopupAtom, false) reset(analysisResultsAtom) + reset(clearAllFiltersAtom) reset(treeAtom) reset(viewedCdsAtom) reset(cdsOrderPreferenceAtom) diff --git a/packages_rs/nextclade-web/src/state/inputs.state.ts b/packages_rs/nextclade-web/src/state/inputs.state.ts index e6b19f4a8..ac70e4fa5 100644 --- a/packages_rs/nextclade-web/src/state/inputs.state.ts +++ b/packages_rs/nextclade-web/src/state/inputs.state.ts @@ -2,6 +2,7 @@ import { isEmpty } from 'lodash' import { useCallback, useEffect } from 'react' import { atom, selector, useRecoilState, useResetRecoilState } from 'recoil' import { cdsOrderPreferenceAtom } from 'src/state/dataset.state' +import { clearAllFiltersAtom } from 'src/state/resultFilters.state' import { analysisResultsAtom, analysisStatusGlobalAtom, treeAtom } from 'src/state/results.state' import { viewedCdsAtom } from 'src/state/seqViewSettings.state' import { AlgorithmInput } from 'src/types' @@ -23,6 +24,7 @@ export function useQuerySeqInputs() { const resetTree = useResetRecoilState(treeAtom) const resetViewedCds = useResetRecoilState(viewedCdsAtom) const resetCdsOrderPreference = useResetRecoilState(cdsOrderPreferenceAtom) + const clearAllFilters = useResetRecoilState(clearAllFiltersAtom) const clearResults = useCallback(() => { resetSuggestions() @@ -31,7 +33,9 @@ export function useQuerySeqInputs() { resetTree() resetViewedCds() resetCdsOrderPreference() + clearAllFilters() }, [ + clearAllFilters, resetAnalysisResults, resetAnalysisStatusGlobal, resetCdsOrderPreference, diff --git a/packages_rs/nextclade-web/src/state/resultFilters.state.ts b/packages_rs/nextclade-web/src/state/resultFilters.state.ts index 8f41e0bb1..a4e64e26b 100644 --- a/packages_rs/nextclade-web/src/state/resultFilters.state.ts +++ b/packages_rs/nextclade-web/src/state/resultFilters.state.ts @@ -1,4 +1,4 @@ -import { atom } from 'recoil' +import { atom, selector } from 'recoil' export const seqNamesFilterAtom = atom({ key: 'seqNamesFilter', @@ -39,3 +39,18 @@ export const showErrorsFilterAtom = atom({ key: 'showErrorsFilter', default: true, }) + +export const clearAllFiltersAtom = selector({ + key: 'clearAllFiltersAtom', + get: () => undefined, + set: ({ reset }) => { + reset(seqNamesFilterAtom) + reset(mutationsFilterAtom) + reset(cladesFilterAtom) + reset(aaFilterAtom) + reset(showGoodFilterAtom) + reset(showMediocreFilterAtom) + reset(showBadFilterAtom) + reset(showErrorsFilterAtom) + }, +})