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

View File

@ -24,6 +24,7 @@ export const formatFieldMetadataItemsAsFilterDefinitions = ({
if (
![
FieldMetadataType.DateTime,
FieldMetadataType.Date,
FieldMetadataType.Text,
FieldMetadataType.Email,
FieldMetadataType.Emails,

View File

@ -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 />

View File

@ -11,6 +11,7 @@ export const MultipleFiltersDropdownFilterOnFilterChangedEffect = ({
useEffect(() => {
switch (filterDefinitionUsedInDropdownType) {
case 'DATE':
case 'DATE_TIME':
setDropdownWidth(280);
break;

View File

@ -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}
/>
);
};

View File

@ -227,6 +227,7 @@ export const isRecordMatchingFilter = ({
});
});
}
case FieldMetadataType.Date:
case FieldMetadataType.DateTime: {
return isMatchingDateFilter({
dateFilter: filterValue as DateFilter,

View File

@ -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: