modified filters for Components

This commit is contained in:
Владислав Чикалкин 2020-09-21 18:16:34 +03:00
parent 3ff877fcec
commit 9c0b1104f2
5 changed files with 38 additions and 4 deletions

View File

@ -20,7 +20,7 @@ const Select = ({
value={value}
onChange={val => setCurrentValue(val)}
>
{options.map((option, i) => {
{(filter ? filter(options) : options).map((option, i) => {
if (option)
return (
<AntSelect.Option key={i} value={option.value}>

View File

@ -1,3 +1,4 @@
import initialFilters from 'core/config/initialFilters';
import initialOptions from 'core/config/initialOptions';
import initialStatuses from 'core/config/initialStatuses';
import initialValues from 'core/config/initialValues';
@ -7,7 +8,7 @@ const valuesData = {
statuses: initialStatuses,
validations: {},
options: initialOptions,
filters: {},
filters: initialFilters,
};
const valuesActions = {
@ -32,10 +33,25 @@ const valuesActions = {
this.validations[elementName] = validation;
},
getOptions(elementName) {
return this.options[elementName];
},
setOptions(elementName, options) {
this.options[elementName] = options;
},
applyOptions(options) {
this.options = { ...this.options, ...options };
},
getFilter(elementName) {
return this.filters[elementName];
},
setFilter(elementName, filters) {
this.filters[elementName] = filters;
},
applyFilters(filters) {
this.filters = { ...this.filters, ...filters };
},
};
export { valuesData, valuesActions };

View File

@ -0,0 +1,8 @@
import { TElementFilter } from 'core/types/Calculation/filters';
import { TElements } from 'core/types/elements';
const initialFilters: TElements<TElementFilter> = {
selectQuote: options => [],
};
export default initialFilters;

View File

@ -0,0 +1,3 @@
import { TElementOption } from 'core/types/Calculation/options';
export type TElementFilter = (options: TElementOption[]) => TElementOption[];

View File

@ -8,11 +8,18 @@ import { TValues, ValuesNames } from './values';
import { TElements, ElementsNames } from './elements';
import { TStatuses, Status } from './statuses';
import { TElementOption } from 'core/types/Calculation/options';
import { TElementFilter } from 'core/types/Calculation/filters';
export interface ICalculationStore {
options: TElements<TElementOption[]>;
getOptions: (elementName: ElementsNames) => any;
setOptions: (elementName: ElementsNames, options: TElementOption[]) => void;
applyOptions: (options: TElements<any>) => void;
filters: TElements<any>;
filters: TElements<any[]>;
getFilter: (elementName: ElementsNames) => any;
setFilter: (elementName: ElementsNames, filter: TElementFilter) => any;
applyFilters: (filters: TElementFilter[]) => void;
values: TValues;
getValue: (sourceValueName: ValuesNames) => any;