Ability to filter on DATE fields (#6299) (#6824)

This was surprisingly quick, it was already built, just not enabled.
Let's double check it together still on Monday @FelixMalfait!
This commit is contained in:
ad-elias
2024-09-03 14:14:38 +02:00
committed by GitHub
parent 6e7cb27af2
commit bc2227ddbb
6 changed files with 17 additions and 7 deletions
@@ -24,6 +24,7 @@ export const formatFieldMetadataItemsAsFilterDefinitions = ({
if (
![
FieldMetadataType.DateTime,
FieldMetadataType.Date,
FieldMetadataType.Text,
FieldMetadataType.Email,
FieldMetadataType.Emails,
@@ -76,9 +76,9 @@ export const MultipleFiltersDropdownContent = ({
{filterDefinitionUsedInDropdown.type === 'RATING' && (
<ObjectFilterDropdownRatingInput />
)}
{filterDefinitionUsedInDropdown.type === 'DATE_TIME' && (
<ObjectFilterDropdownDateInput />
)}
{['DATE_TIME', 'DATE'].includes(
filterDefinitionUsedInDropdown.type,
) && <ObjectFilterDropdownDateInput />}
{filterDefinitionUsedInDropdown.type === 'RELATION' && (
<>
<ObjectFilterDropdownSearchInput />
@@ -11,6 +11,7 @@ export const MultipleFiltersDropdownFilterOnFilterChangedEffect = ({
useEffect(() => {
switch (filterDefinitionUsedInDropdownType) {
case 'DATE':
case 'DATE_TIME':
setDropdownWidth(280);
break;
@@ -28,6 +28,9 @@ export const ObjectFilterDropdownDateInput = () => {
selectedFilter?.value ? new Date(selectedFilter.value) : new Date(),
);
const isDateTimeInput =
filterDefinitionUsedInDropdown?.type === FieldMetadataType.DateTime;
const handleChange = (date: Date | null) => {
setInternalDate(date);
@@ -38,7 +41,11 @@ export const ObjectFilterDropdownDateInput = () => {
fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
value: isDefined(date) ? date.toISOString() : '',
operand: selectedOperandInDropdown,
displayValue: isDefined(date) ? date.toLocaleString() : '',
displayValue: isDefined(date)
? isDateTimeInput
? date.toLocaleString()
: date.toLocaleDateString()
: '',
definition: filterDefinitionUsedInDropdown,
});
@@ -50,9 +57,7 @@ export const ObjectFilterDropdownDateInput = () => {
date={internalDate}
onChange={handleChange}
onMouseSelect={handleChange}
isDateTimeInput={
filterDefinitionUsedInDropdown?.type === FieldMetadataType.DateTime
}
isDateTimeInput={isDateTimeInput}
/>
);
};
@@ -227,6 +227,7 @@ export const isRecordMatchingFilter = ({
});
});
}
case FieldMetadataType.Date:
case FieldMetadataType.DateTime: {
return isMatchingDateFilter({
dateFilter: filterValue as DateFilter,
@@ -199,6 +199,7 @@ const applyEmptyFilters = (
[correspondingField.name]: { is: 'NULL' } as StringFilter,
};
break;
case 'DATE':
case 'DATE_TIME':
emptyRecordFilter = {
[correspondingField.name]: { is: 'NULL' } as DateFilter,
@@ -326,6 +327,7 @@ export const turnObjectDropdownFilterIntoQueryFilter = (
);
}
break;
case 'DATE':
case 'DATE_TIME':
switch (rawUIFilter.operand) {
case ViewFilterOperand.GreaterThan: