fix(ui) - search - clone default values

This commit is contained in:
Shekar Siri 2023-03-31 15:13:30 +02:00
parent 9430792039
commit cc0e2aa788
3 changed files with 28 additions and 17 deletions

View file

@ -70,7 +70,7 @@ function FilterModal(props: Props) {
const showSearchList = isMainSearch && searchQuery.length > 0;
const onFilterSearchClick = (filter: any) => {
const _filter = filtersMap[filter.type];
const _filter = {...filtersMap[filter.type]};
_filter.value = [filter.value];
onFilterClick(_filter);
};

View file

@ -4,7 +4,7 @@ import { createRequestReducer } from './funcTools/request';
import { mergeReducers, success } from './funcTools/tools';
import Filter from 'Types/filter';
import { liveFiltersMap } from 'Types/filter/newFilter';
import { filterMap, checkFilterValue, hasFilterApplied } from './search';
import { filterMap, checkFilterValue, hasFilterApplied, getAppliedFilterIndex } from './search';
import Session from 'Types/session';
const name = "liveSearch";
@ -111,8 +111,18 @@ export const clearSearch = () => (dispatch, getState) => {
export const addFilter = (filter) => (dispatch, getState) => {
filter.value = checkFilterValue(filter.value);
const instance = getState().getIn([ 'liveSearch', 'instance']);
const filters = instance.get('filters');
if (hasFilterApplied(instance.filters, filter)) {
const index = getAppliedFilterIndex(filters, filter);
if (index !== -1) {
const oldFilter = filters.get(index);
const updatedFilter = {
...oldFilter,
value: oldFilter.value.concat(filter.value),
};
const updatedFilters = filters.set(index, updatedFilter);
return dispatch(edit(instance.set('filters', updatedFilters)));
// const index = instance.filters.findIndex(f => f.key === filter.key);
// const oldFilter = instance.filters.get(index);
// oldFilter.value = oldFilter.value.concat(filter.value);

View file

@ -349,7 +349,7 @@ export const hasFilterApplied = (filters, filter) => {
return !filter.isEvent && filters.some((f) => f.key === filter.key);
};
const getAppliedFilterIndex = (filters, filterToFind) => {
export const getAppliedFilterIndex = (filters, filterToFind) => {
if (!filterToFind.isEvent) {
return filters.findIndex((filter) => filter.key === filterToFind.key);
}
@ -357,37 +357,38 @@ const getAppliedFilterIndex = (filters, filterToFind) => {
};
export const addFilter = (filter) => (dispatch, getState) => {
filter.value = checkFilterValue(filter.value);
filter.filters = filter.filters
const instance = getState().getIn(['search', 'instance']);
const filters = instance.get('filters');
const index = getAppliedFilterIndex(filters, filter);
filter.value = checkFilterValue(filter.value);
filter.filters = filter.filters
? filter.filters.map((subFilter) => ({
...subFilter,
value: checkFilterValue(subFilter.value),
}))
}))
: null;
const instance = getState().getIn(['search', 'instance']);
const filters = instance.get('filters');
const index = getAppliedFilterIndex(filters, filter);
if (index !== -1) {
if (index !== -1) {
const oldFilter = filters.get(index);
const updatedFilter = {
...oldFilter,
value: oldFilter.value.concat(filter.value),
...oldFilter,
value: oldFilter.value.concat(filter.value),
};
const updatedFilters = filters.set(index, updatedFilter);
return dispatch(edit(instance.set('filters', updatedFilters)));
} else {
} else {
const updatedFilters = filters.push(filter);
return dispatch(edit(instance.set('filters', updatedFilters)));
}
}
};
export const addFilterByKeyAndValue =
(key, value, operator = undefined, sourceOperator = undefined, source = undefined) =>
(dispatch, getState) => {
let defaultFilter = filtersMap[key];
let defaultFilter = {...filtersMap[key]};
defaultFilter.value = value;
if (operator) {
defaultFilter.operator = operator;