umami/hooks/useFilters.js

40 lines
1.1 KiB
JavaScript
Raw Normal View History

2023-07-02 05:02:49 +00:00
import { useMessages } from 'hooks';
2023-08-09 22:06:19 +00:00
export function useFilters() {
2023-07-02 05:02:49 +00:00
const { formatMessage, labels } = useMessages();
2023-08-09 22:06:19 +00:00
const filterLabels = {
eq: formatMessage(labels.is),
neq: formatMessage(labels.isNot),
s: formatMessage(labels.isSet),
ns: formatMessage(labels.isNotSet),
2023-07-02 05:02:49 +00:00
c: formatMessage(labels.contains),
dnc: formatMessage(labels.doesNotContain),
t: formatMessage(labels.true),
f: formatMessage(labels.false),
gt: formatMessage(labels.greaterThan),
lt: formatMessage(labels.lessThan),
gte: formatMessage(labels.greaterThanEquals),
lte: formatMessage(labels.lessThanEquals),
be: formatMessage(labels.before),
af: formatMessage(labels.after),
};
2023-08-09 22:06:19 +00:00
const typeFilters = {
2023-07-02 05:02:49 +00:00
string: ['eq', 'neq'],
array: ['c', 'dnc'],
boolean: ['t', 'f'],
number: ['eq', 'neq', 'gt', 'lt', 'gte', 'lte'],
date: ['be', 'af'],
2023-07-18 16:09:22 +00:00
uuid: ['eq'],
2023-07-02 05:02:49 +00:00
};
2023-08-09 22:06:19 +00:00
const getFilters = type => {
return typeFilters[type]?.map(key => ({ type, value: key, label: filterLabels[key] })) ?? [];
};
return { getFilters, filterLabels, typeFilters };
2023-07-02 05:02:49 +00:00
}
export default useFilters;