feat(ui) - assist separate live filters

This commit is contained in:
Shekar Siri 2022-02-10 23:12:38 +01:00
parent b957bb0622
commit 35d9f8a244
2 changed files with 18 additions and 5 deletions

View file

@ -4,7 +4,7 @@ import { fetchListType, saveType, editType, initType, removeType } from './funcT
import { createItemInListUpdater, mergeReducers, success, array } from './funcTools/tools';
import { createEdit, createInit } from './funcTools/crud';
import { createRequestReducer } from './funcTools/request';
import { addElementToFiltersMap } from 'Types/filter/newFilter';
import { addElementToFiltersMap, addElementToLiveFiltersMap } from 'Types/filter/newFilter';
import { FilterCategory } from '../types/filter/filterType';
import { refreshFilterOptions } from './search'
@ -38,6 +38,7 @@ const reducer = (state = initialState, action = {}) => {
case FETCH_SUCCESS:
action.data.forEach(item => {
addElementToFiltersMap(FilterCategory.METADATA, item.key);
addElementToLiveFiltersMap(FilterCategory.METADATA, item.key);
});
return state.set('list', List(action.data).map(CustomField)) //.concat(defaultMeta))
case FETCH_SOURCES_SUCCESS:

View file

@ -4,6 +4,7 @@ import filterOptions, { countries, platformOptions } from 'App/constants';
import { capitalize } from 'App/utils';
const countryOptions = Object.keys(countries).map(i => ({ text: countries[i], value: i }));
const containsFilters = [{ key: 'contains', text: 'contains', value: 'contains' }]
const ISSUE_OPTIONS = [
{ text: 'Click Rage', value: 'click_rage' },
@ -57,7 +58,7 @@ export const filtersMap = {
}
export const liveFiltersMap = {
[FilterKey.USERID]: { key: FilterKey.USERID, type: FilterType.STRING, category: FilterCategory.USER, label: 'User Id', operator: 'contains', operatorOptions: [{ key: 'contains', text: 'contains', value: 'contains' }], icon: 'filters/userid', isLive: true },
[FilterKey.USERID]: { key: FilterKey.USERID, type: FilterType.STRING, category: FilterCategory.USER, label: 'User Id', operator: 'contains', operatorOptions: containsFilters, icon: 'filters/userid', isLive: true },
}
/**
@ -80,6 +81,17 @@ export const addElementToFiltersMap = (
filtersMap[key] = { key, type, category, label: capitalize(key), operator: operator, operatorOptions, icon, isLive: true }
}
export const addElementToLiveFiltersMap = (
category = FilterCategory.METADATA,
key,
type = FilterType.STRING,
operator = 'contains',
operatorOptions = containsFilters,
icon = 'filters/metadata'
) => {
liveFiltersMap[key] = { key, type, category, label: capitalize(key), operator: operator, operatorOptions, icon, isLive: true }
}
export default Record({
timestamp: 0,
key: '',
@ -129,10 +141,10 @@ export default Record({
* @param {*} filtersMap
* @returns
*/
export const generateFilterOptions = (filtersMap) => {
export const generateFilterOptions = (map) => {
const _options = {};
Object.keys(filtersMap).forEach(key => {
const filter = filtersMap[key];
Object.keys(map).forEach(key => {
const filter = map[key];
if (_options.hasOwnProperty(filter.category)) {
_options[filter.category].push(filter);
} else {