Skip to content

Commit

Permalink
Merge pull request #2379 from Maxime-J/ordered-filter-values
Browse files Browse the repository at this point in the history
Sort filter values
  • Loading branch information
mikecao authored Dec 1, 2023
2 parents 5c8941b + f016970 commit a7cb0ea
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions src/app/(main)/reports/[id]/FieldFilterForm.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useState } from 'react';
import { useState, useMemo } from 'react';
import { Form, FormRow, Item, Flexbox, Dropdown, Button } from 'react-basics';
import { useMessages, useFilters, useFormat } from 'components/hooks';
import { useMessages, useFilters, useFormat, useLocale } from 'components/hooks';
import styles from './FieldFilterForm.module.css';

export default function FieldFilterForm({
Expand All @@ -16,14 +16,30 @@ export default function FieldFilterForm({
const [value, setValue] = useState();
const { getFilters } = useFilters();
const { formatValue } = useFormat();
const { locale } = useLocale();
const filters = getFilters(type);

const formattedValues = useMemo(() => {
const formatted = {};
const format = val => {
formatted[val] = formatValue(val, name);
return formatted[val];
};
if (values.length !== 1) {
const { compare } = new Intl.Collator(locale, { numeric: true });
values.sort((a, b) => compare(formatted[a] ?? format(a), formatted[b] ?? format(b)));
} else {
format(values[0]);
}
return formatted;
}, [values]);

const renderFilterValue = value => {
return filters.find(f => f.value === value)?.label;
};

const renderValue = value => {
return formatValue(value, name);
return formattedValues[value];
};

const handleAdd = () => {
Expand Down Expand Up @@ -59,7 +75,7 @@ export default function FieldFilterForm({
}}
>
{value => {
return <Item key={value}>{formatValue(value, name)}</Item>;
return <Item key={value}>{formattedValues[value]}</Item>;
}}
</Dropdown>
</Flexbox>
Expand Down

0 comments on commit a7cb0ea

Please sign in to comment.