umami/src/components/hooks/useFilters.ts

48 lines
1.7 KiB
TypeScript
Raw Normal View History

import { useMessages } from './useMessages';
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;