Rename DATE to DATETIME (#2576)

* Rename DATE to DATETIME

* rename DATE to DATE_TIME

* fix server tests

* rename date to datetime

* rename date to datetime
This commit is contained in:
Weiko
2023-11-21 00:16:42 +01:00
committed by GitHub
parent b3c1723638
commit a33d4c8b8d
64 changed files with 197 additions and 147 deletions

View File

@ -16,7 +16,7 @@ import { NumberFieldDisplay } from '../meta-types/display/components/NumberField
import { PhoneFieldDisplay } from '../meta-types/display/components/PhoneFieldDisplay';
import { TextFieldDisplay } from '../meta-types/display/components/TextFieldDisplay';
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
import { isFieldDate } from '../types/guards/isFieldDate';
import { isFieldDateTime } from '../types/guards/isFieldDateTime';
import { isFieldEmail } from '../types/guards/isFieldEmail';
import { isFieldNumber } from '../types/guards/isFieldNumber';
import { isFieldPhone } from '../types/guards/isFieldPhone';
@ -36,7 +36,7 @@ export const FieldDisplay = () => {
<UuidFieldDisplay />
) : isFieldEmail(fieldDefinition) ? (
<EmailFieldDisplay />
) : isFieldDate(fieldDefinition) ? (
) : isFieldDateTime(fieldDefinition) ? (
<DateFieldDisplay />
) : isFieldNumber(fieldDefinition) ? (
<NumberFieldDisplay />

View File

@ -18,7 +18,7 @@ import { TextFieldInput } from '../meta-types/input/components/TextFieldInput';
import { FieldInputEvent } from '../types/FieldInputEvent';
import { isFieldBoolean } from '../types/guards/isFieldBoolean';
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
import { isFieldDate } from '../types/guards/isFieldDate';
import { isFieldDateTime } from '../types/guards/isFieldDateTime';
import { isFieldEmail } from '../types/guards/isFieldEmail';
import { isFieldLink } from '../types/guards/isFieldLink';
import { isFieldNumber } from '../types/guards/isFieldNumber';
@ -78,7 +78,7 @@ export const FieldInput = ({
onTab={onTab}
onShiftTab={onShiftTab}
/>
) : isFieldDate(fieldDefinition) ? (
) : isFieldDateTime(fieldDefinition) ? (
<DateFieldInput
onEnter={onEnter}
onEscape={onEscape}

View File

@ -10,8 +10,8 @@ import { isFieldBoolean } from '../types/guards/isFieldBoolean';
import { isFieldBooleanValue } from '../types/guards/isFieldBooleanValue';
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
import { isFieldCurrencyValue } from '../types/guards/isFieldCurrencyValue';
import { isFieldDate } from '../types/guards/isFieldDate';
import { isFieldDateValue } from '../types/guards/isFieldDateValue';
import { isFieldDateTime } from '../types/guards/isFieldDateTime';
import { isFieldDateTimeValue } from '../types/guards/isFieldDateTimeValue';
import { isFieldEmail } from '../types/guards/isFieldEmail';
import { isFieldEmailValue } from '../types/guards/isFieldEmailValue';
import { isFieldLink } from '../types/guards/isFieldLink';
@ -49,8 +49,9 @@ export const usePersistField = () => {
const fieldIsEmail =
isFieldEmail(fieldDefinition) && isFieldEmailValue(valueToPersist);
const fieldIsDate =
isFieldDate(fieldDefinition) && isFieldDateValue(valueToPersist);
const fieldIsDateTime =
isFieldDateTime(fieldDefinition) &&
isFieldDateTimeValue(valueToPersist);
const fieldIsLink =
isFieldLink(fieldDefinition) && isFieldLinkValue(valueToPersist);
@ -101,7 +102,7 @@ export const usePersistField = () => {
fieldIsEmail ||
fieldIsProbability ||
fieldIsNumber ||
fieldIsDate ||
fieldIsDateTime ||
fieldIsPhone ||
fieldIsLink ||
fieldIsCurrency ||

View File

@ -1,9 +1,9 @@
import { DateDisplay } from '@/ui/object/field/meta-types/display/content-display/components/DateDisplay';
import { useDateField } from '../../hooks/useDateField';
import { useDateTimeField } from '../../hooks/useDateTimeField';
export const DateFieldDisplay = () => {
const { fieldValue } = useDateField();
const { fieldValue } = useDateTimeField();
return <DateDisplay value={fieldValue} />;
};

View File

@ -4,13 +4,13 @@ import { Meta, StoryObj } from '@storybook/react';
import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
import { FieldContext } from '../../../../contexts/FieldContext';
import { useDateField } from '../../../hooks/useDateField';
import { useDateTimeField } from '../../../hooks/useDateTimeField';
import { DateFieldDisplay } from '../DateFieldDisplay';
const formattedDate = new Date('2023-04-01');
const DateFieldValueSetterEffect = ({ value }: { value: string }) => {
const { setFieldValue } = useDateField();
const { setFieldValue } = useDateTimeField();
useEffect(() => {
setFieldValue(value);
@ -30,7 +30,7 @@ const meta: Meta = {
fieldDefinition: {
fieldMetadataId: 'date',
label: 'Date',
type: 'DATE',
type: 'DATE_TIME',
iconName: 'IconCalendarEvent',
metadata: {
fieldName: 'Date',

View File

@ -4,12 +4,12 @@ import { useRecoilState } from 'recoil';
import { FieldContext } from '../../contexts/FieldContext';
import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector';
import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
import { isFieldDate } from '../../types/guards/isFieldDate';
import { isFieldDateTime } from '../../types/guards/isFieldDateTime';
export const useDateField = () => {
export const useDateTimeField = () => {
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
assertFieldMetadata('DATE', isFieldDate, fieldDefinition);
assertFieldMetadata('DATE_TIME', isFieldDateTime, fieldDefinition);
const fieldName = fieldDefinition.metadata.fieldName;

View File

@ -2,7 +2,7 @@ import { DateInput } from '@/ui/object/field/meta-types/input/components/interna
import { Nullable } from '~/types/Nullable';
import { usePersistField } from '../../../hooks/usePersistField';
import { useDateField } from '../../hooks/useDateField';
import { useDateTimeField } from '../../hooks/useDateTimeField';
export type FieldInputEvent = (persist: () => void) => void;
@ -19,7 +19,7 @@ export const DateFieldInput = ({
onEscape,
onClickOutside,
}: DateFieldInputProps) => {
const { fieldValue, hotkeyScope } = useDateField();
const { fieldValue, hotkeyScope } = useDateTimeField();
const persistField = usePersistField();

View File

@ -6,13 +6,13 @@ import { userEvent, within } from '@storybook/testing-library';
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
import { FieldContextProvider } from '../../../__stories__/FieldContextProvider';
import { useDateField } from '../../../hooks/useDateField';
import { useDateTimeField } from '../../../hooks/useDateTimeField';
import { DateFieldInput, DateFieldInputProps } from '../DateFieldInput';
const formattedDate = new Date();
const DateFieldValueSetterEffect = ({ value }: { value: Date }) => {
const { setFieldValue } = useDateField();
const { setFieldValue } = useDateTimeField();
useEffect(() => {
setFieldValue(value.toISOString());
@ -45,7 +45,7 @@ const DateFieldInputWithContext = ({
fieldDefinition={{
fieldMetadataId: 'date',
label: 'Date',
type: 'DATE',
type: 'DATE_TIME',
iconName: 'IconCalendarEvent',
metadata: {
fieldName: 'Date',

View File

@ -10,7 +10,7 @@ import { FieldMetadata } from '../../types/FieldMetadata';
import { isFieldBoolean } from '../../types/guards/isFieldBoolean';
import { isFieldCurrency } from '../../types/guards/isFieldCurrency';
import { isFieldCurrencyValue } from '../../types/guards/isFieldCurrencyValue';
import { isFieldDate } from '../../types/guards/isFieldDate';
import { isFieldDateTime } from '../../types/guards/isFieldDateTime';
import { isFieldEmail } from '../../types/guards/isFieldEmail';
import { isFieldLink } from '../../types/guards/isFieldLink';
import { isFieldLinkValue } from '../../types/guards/isFieldLinkValue';
@ -39,7 +39,7 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
if (
isFieldUuid(fieldDefinition) ||
isFieldText(fieldDefinition) ||
isFieldDate(fieldDefinition) ||
isFieldDateTime(fieldDefinition) ||
isFieldNumber(fieldDefinition) ||
isFieldProbability(fieldDefinition) ||
isFieldEmail(fieldDefinition) ||

View File

@ -14,7 +14,7 @@ export type FieldTextMetadata = {
fieldName: string;
};
export type FieldDateMetadata = {
export type FieldDateTimeMetadata = {
placeHolder: string;
fieldName: string;
};
@ -74,7 +74,7 @@ export type FieldRelationMetadata = {
export type FieldMetadata =
| FieldBooleanMetadata
| FieldNumberMetadata
| FieldDateMetadata
| FieldDateTimeMetadata
| FieldTextMetadata
| FieldUuidMetadata
| FieldCurrencyMetadata
@ -87,7 +87,7 @@ export type FieldMetadata =
export type FieldTextValue = string;
export type FieldUUidValue = string;
export type FieldDateValue = string | null;
export type FieldDateTimeValue = string | null;
export type FieldNumberValue = number | null;
export type FieldBooleanValue = boolean;

View File

@ -4,7 +4,7 @@ export type FieldType =
| 'TEXT'
| 'RELATION'
| 'CHIP'
| 'DATE'
| 'DATE_TIME'
| 'DOUBLE_TEXT_CHIP'
| 'DOUBLE_TEXT'
| 'EMAIL'

View File

@ -2,7 +2,7 @@ import { FieldDefinition } from '../FieldDefinition';
import {
FieldBooleanMetadata,
FieldCurrencyMetadata,
FieldDateMetadata,
FieldDateTimeMetadata,
FieldEmailMetadata,
FieldFullNameMetadata,
FieldLinkMetadata,
@ -24,8 +24,8 @@ type AssertFieldMetadataFunction = <
? FieldCurrencyMetadata
: E extends 'FULL_NAME'
? FieldFullNameMetadata
: E extends 'DATE'
? FieldDateMetadata
: E extends 'DATE_TIME'
? FieldDateTimeMetadata
: E extends 'EMAIL'
? FieldEmailMetadata
: E extends 'LINK'

View File

@ -1,6 +0,0 @@
import { FieldDefinition } from '../FieldDefinition';
import { FieldDateMetadata, FieldMetadata } from '../FieldMetadata';
export const isFieldDate = (
field: Pick<FieldDefinition<FieldMetadata>, 'type'>,
): field is FieldDefinition<FieldDateMetadata> => field.type === 'DATE';

View File

@ -0,0 +1,7 @@
import { FieldDefinition } from '../FieldDefinition';
import { FieldDateTimeMetadata, FieldMetadata } from '../FieldMetadata';
export const isFieldDateTime = (
field: Pick<FieldDefinition<FieldMetadata>, 'type'>,
): field is FieldDefinition<FieldDateTimeMetadata> =>
field.type === 'DATE_TIME';

View File

@ -0,0 +1,9 @@
import { isString } from '@sniptt/guards';
import { FieldDateTimeValue } from '../FieldMetadata';
// TODO: add zod
export const isFieldDateTimeValue = (
fieldValue: unknown,
): fieldValue is FieldDateTimeValue =>
isString(fieldValue) && !isNaN(Date.parse(fieldValue));

View File

@ -1,20 +0,0 @@
import { isNull, isString } from '@sniptt/guards';
import { formatToHumanReadableDate } from '~/utils';
import { FieldDateValue } from '../FieldMetadata';
// TODO: add zod
export const isFieldDateValue = (
fieldValue: unknown,
): fieldValue is FieldDateValue => {
try {
if (isNull(fieldValue)) return true;
if (isString(fieldValue)) {
formatToHumanReadableDate(fieldValue);
return true;
}
} catch {}
return false;
};

View File

@ -36,7 +36,7 @@ export const MultipleFiltersDropdownContent = () => {
{filterDefinitionUsedInDropdown.type === 'NUMBER' && (
<ObjectFilterDropdownNumberSearchInput />
)}
{filterDefinitionUsedInDropdown.type === 'DATE' && (
{filterDefinitionUsedInDropdown.type === 'DATE_TIME' && (
<ObjectFilterDropdownDateSearchInput />
)}
{filterDefinitionUsedInDropdown.type === 'ENTITY' && (

View File

@ -1 +1 @@
export type FilterType = 'TEXT' | 'DATE' | 'ENTITY' | 'NUMBER';
export type FilterType = 'TEXT' | 'DATE_TIME' | 'ENTITY' | 'NUMBER';

View File

@ -9,7 +9,7 @@ export const getOperandsForFilterType = (
case 'TEXT':
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
case 'NUMBER':
case 'DATE':
case 'DATE_TIME':
return [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan];
case 'ENTITY':
return [ViewFilterOperand.Is, ViewFilterOperand.IsNot];

View File

@ -62,7 +62,7 @@ export const turnFiltersIntoWhereClauseV2 = (
`Unknown operand ${filter.operand} for ${filter.definition.type} filter`,
);
}
case 'DATE':
case 'DATE_TIME':
switch (filter.operand) {
case ViewFilterOperand.GreaterThan:
whereClause[correspondingField.name] = {