Ability to filter by composite's subfields (#6832)

# This PR

- Fix #6425 

See https://github.com/twentyhq/twenty/issues/7188 because there's some
more work to do.

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
Pacifique LINJANJA
2024-10-08 11:25:42 +02:00
committed by GitHub
parent af4f3cebb0
commit 4156d7821c
57 changed files with 1424 additions and 972 deletions

View File

@ -30,7 +30,7 @@ import { SettingsDataModelFieldDescriptionForm } from '@/settings/data-model/fie
import { SettingsDataModelFieldIconLabelForm } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldIconLabelForm';
import { SettingsDataModelFieldSettingsFormCard } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldSettingsFormCard';
import { settingsFieldFormSchema } from '@/settings/data-model/fields/forms/validation-schemas/settingsFieldFormSchema';
import { SettingsSupportedFieldType } from '@/settings/data-model/types/SettingsSupportedFieldType';
import { SettingsFieldType } from '@/settings/data-model/types/SettingsFieldType';
import { getSettingsPagePath } from '@/settings/utils/getSettingsPagePath';
import { AppPath } from '@/types/AppPath';
import { SettingsPath } from '@/types/SettingsPath';
@ -42,9 +42,11 @@ import { Section } from '@/ui/layout/section/components/Section';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isDefined } from '~/utils/isDefined';
//TODO: fix this type
type SettingsDataModelFieldEditFormValues = z.infer<
ReturnType<typeof settingsFieldFormSchema>
>;
> &
any;
const canPersistFieldMetadataItemUpdate = (
fieldMetadataItem: FieldMetadataItem,
@ -94,7 +96,7 @@ export const SettingsObjectFieldEdit = () => {
resolver: zodResolver(settingsFieldFormSchema()),
values: {
icon: fieldMetadataItem?.icon ?? 'Icon',
type: fieldMetadataItem?.type as SettingsSupportedFieldType,
type: fieldMetadataItem?.type as SettingsFieldType,
label: fieldMetadataItem?.label ?? '',
description: fieldMetadataItem?.description,
},

View File

@ -13,7 +13,7 @@ import { SettingsDataModelFieldIconLabelForm } from '@/settings/data-model/field
import { SettingsDataModelFieldSettingsFormCard } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldSettingsFormCard';
import { SettingsDataModelFieldTypeSelect } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldTypeSelect';
import { settingsFieldFormSchema } from '@/settings/data-model/fields/forms/validation-schemas/settingsFieldFormSchema';
import { SettingsSupportedFieldType } from '@/settings/data-model/types/SettingsSupportedFieldType';
import { SettingsFieldType } from '@/settings/data-model/types/SettingsFieldType';
import { AppPath } from '@/types/AppPath';
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
@ -34,9 +34,11 @@ import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isDefined } from '~/utils/isDefined';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
// TODO: fix this type
type SettingsDataModelNewFieldFormValues = z.infer<
ReturnType<typeof settingsFieldFormSchema>
>;
> &
any;
const StyledH1Title = styled(H1Title)`
margin-bottom: 0;
@ -46,7 +48,7 @@ export const SettingsObjectNewFieldStep2 = () => {
const navigate = useNavigate();
const { objectSlug = '' } = useParams();
const [searchParams] = useSearchParams();
const fieldType = searchParams.get('fieldType') as SettingsSupportedFieldType;
const fieldType = searchParams.get('fieldType') as SettingsFieldType;
const { enqueueSnackBar } = useSnackBar();
const [isConfigureStep, setIsConfigureStep] = useState(false);
@ -159,7 +161,7 @@ export const SettingsObjectNewFieldStep2 = () => {
}
};
const excludedFieldTypes: SettingsSupportedFieldType[] = (
const excludedFieldTypes: SettingsFieldType[] = (
[
FieldMetadataType.Link,
FieldMetadataType.Numeric,
@ -226,7 +228,7 @@ export const SettingsObjectNewFieldStep2 = () => {
<SettingsDataModelFieldTypeSelect
excludedFieldTypes={excludedFieldTypes}
fieldMetadataItem={{
type: fieldType,
type: fieldType as FieldMetadataType,
}}
onFieldTypeSelect={() => setIsConfigureStep(true)}
/>

View File

@ -1,8 +1,11 @@
import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMetadata';
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { FieldType } from '@/settings/data-model/types/FieldType';
import { SettingsFieldType } from '@/settings/data-model/types/SettingsFieldType';
import { getFieldIdentifierType } from '@/settings/data-model/utils/getFieldIdentifierType';
import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig';
import { isFieldTypeSupportedInSettings } from '@/settings/data-model/utils/isFieldTypeSupportedInSettings';
import { SettingsObjectDetailTableItem } from '~/pages/settings/data-model/types/SettingsObjectDetailTableItem';
import { getSettingsObjectFieldType } from '~/pages/settings/data-model/utils/getSettingsObjectFieldType';
@ -29,13 +32,17 @@ export const useMapFieldMetadataItemToSettingsObjectDetailTableItem = (
objectMetadataItem,
);
const fieldMetadataType = fieldMetadataItem.type as FieldType;
return {
fieldMetadataItem,
fieldType: fieldType ?? '',
dataType:
relationObjectMetadataItem?.labelPlural ??
getSettingsFieldTypeConfig(fieldMetadataItem.type)?.label ??
'',
(relationObjectMetadataItem?.labelPlural ??
isFieldTypeSupportedInSettings(fieldMetadataType))
? getSettingsFieldTypeConfig(fieldMetadataType as SettingsFieldType)
?.label
: '',
label: fieldMetadataItem.label,
identifierType: identifierType,
objectMetadataItem,