Feat/filter available field definition v2 (#2547)

* Added react-dev-inspector

* Add field relation type parsing and filter available fields for record table and show page

* Revert "Added react-dev-inspector"

This reverts commit 7a78964c2c3996ce2e27f6f8d0c0b5e1f3283e17.
This commit is contained in:
Lucas Bordeau
2023-11-16 17:09:50 +01:00
committed by GitHub
parent 0ae9373532
commit 7da18a13e8
8 changed files with 98 additions and 2 deletions

View File

@ -1,3 +1,4 @@
import { parseFieldRelationType } from '@/object-metadata/utils/parseFieldRelationType';
import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata';
import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition';
@ -30,4 +31,5 @@ export const formatFieldMetadataItemAsColumnDefinition = ({
Icon: icons[field.icon ?? 'Icon123'],
isVisible: true,
basePathToShowPage: `/object/${objectMetadataItem.nameSingular}/`,
relationType: parseFieldRelationType(field),
});

View File

@ -0,0 +1,39 @@
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
import { FieldDefinitionRelationType } from '@/ui/object/field/types/FieldDefinition';
import { isDefined } from '~/utils/isDefined';
export const parseFieldRelationType = (
field: FieldMetadataItem | undefined,
): FieldDefinitionRelationType | undefined => {
if (field && field.type === 'RELATION') {
if (
isDefined(field.fromRelationMetadata) &&
field.fromRelationMetadata.relationType === 'ONE_TO_MANY'
) {
return 'FROM_NAMY_OBJECTS';
} else if (
isDefined(field.toRelationMetadata) &&
field.toRelationMetadata.relationType === 'ONE_TO_MANY'
) {
return 'TO_ONE_OBJECT';
} else if (
isDefined(field.fromRelationMetadata) &&
field.fromRelationMetadata.relationType === 'MANY_TO_MANY'
) {
return 'FROM_NAMY_OBJECTS';
} else if (
isDefined(field.toRelationMetadata) &&
field.toRelationMetadata.relationType === 'MANY_TO_MANY'
) {
return 'TO_MANY_OBJECTS';
}
throw new Error(
`Cannot determine field relation type for field : ${JSON.stringify(
field,
)}.`,
);
} else {
return undefined;
}
};