2023-07-02 07:02:49 +02:00
|
|
|
import { useMessages } from 'hooks';
|
2023-08-11 18:05:56 +02:00
|
|
|
import { OPERATORS } from 'lib/constants';
|
2023-07-02 07:02:49 +02:00
|
|
|
|
2023-08-10 00:06:19 +02:00
|
|
|
export function useFilters() {
|
2023-07-02 07:02:49 +02:00
|
|
|
const { formatMessage, labels } = useMessages();
|
|
|
|
|
2023-08-10 00:06:19 +02:00
|
|
|
const filterLabels = {
|
2023-08-11 18:05:56 +02:00
|
|
|
[OPERATORS.equals]: formatMessage(labels.is),
|
|
|
|
[OPERATORS.notEquals]: formatMessage(labels.isNot),
|
|
|
|
[OPERATORS.set]: formatMessage(labels.isSet),
|
|
|
|
[OPERATORS.notSet]: formatMessage(labels.isNotSet),
|
|
|
|
[OPERATORS.contains]: formatMessage(labels.contains),
|
|
|
|
[OPERATORS.doesNotContain]: formatMessage(labels.doesNotContain),
|
|
|
|
[OPERATORS.true]: formatMessage(labels.true),
|
|
|
|
[OPERATORS.false]: formatMessage(labels.false),
|
|
|
|
[OPERATORS.greaterThan]: formatMessage(labels.greaterThan),
|
|
|
|
[OPERATORS.lessThan]: formatMessage(labels.lessThan),
|
|
|
|
[OPERATORS.greaterThanEquals]: formatMessage(labels.greaterThanEquals),
|
|
|
|
[OPERATORS.lessThanEquals]: formatMessage(labels.lessThanEquals),
|
|
|
|
[OPERATORS.before]: formatMessage(labels.before),
|
|
|
|
[OPERATORS.after]: formatMessage(labels.after),
|
2023-07-02 07:02:49 +02:00
|
|
|
};
|
|
|
|
|
2023-08-10 00:06:19 +02:00
|
|
|
const typeFilters = {
|
2023-08-11 18:05:56 +02:00
|
|
|
string: [OPERATORS.equals, OPERATORS.notEquals],
|
|
|
|
array: [OPERATORS.contains, OPERATORS.doesNotContain],
|
|
|
|
boolean: [OPERATORS.true, OPERATORS.false],
|
|
|
|
number: [
|
|
|
|
OPERATORS.equals,
|
|
|
|
OPERATORS.notEquals,
|
|
|
|
OPERATORS.greaterThan,
|
|
|
|
OPERATORS.lessThan,
|
|
|
|
OPERATORS.greaterThanEquals,
|
|
|
|
OPERATORS.lessThanEquals,
|
|
|
|
],
|
|
|
|
date: [OPERATORS.before, OPERATORS.after],
|
|
|
|
uuid: [OPERATORS.equals],
|
2023-07-02 07:02:49 +02:00
|
|
|
};
|
|
|
|
|
2023-08-10 00:06:19 +02:00
|
|
|
const getFilters = type => {
|
|
|
|
return typeFilters[type]?.map(key => ({ type, value: key, label: filterLabels[key] })) ?? [];
|
|
|
|
};
|
|
|
|
|
|
|
|
return { getFilters, filterLabels, typeFilters };
|
2023-07-02 07:02:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export default useFilters;
|