Complete labelIdentifer, relationPicker first implementation (#2618)

* Fix first column main identifier

* Fixes
This commit is contained in:
Charles Bochet
2023-11-21 18:32:36 +01:00
committed by GitHub
parent dd125ddfcc
commit 726e375616
27 changed files with 165 additions and 91 deletions

View File

@ -2,9 +2,22 @@ import { useEffect } from 'react';
import { useRelationPicker } from '@/ui/input/components/internal/relation-picker/hooks/useRelationPicker';
import { IdentifiersMapper } from '@/ui/input/components/internal/relation-picker/types/IdentifiersMapper';
import { getLogoUrlFromDomainName } from '~/utils';
export const ObjectMetadataItemsRelationPickerEffect = () => {
const { setIdentifiersMapper } = useRelationPicker();
const { setIdentifiersMapper, setSearchQuery } = useRelationPicker();
const computeFilterFields = (relationPickerType: string) => {
if (relationPickerType === 'company') {
return ['name'];
}
if (['workspaceMember', 'person'].includes(relationPickerType)) {
return ['name.firstName', 'name.lastName'];
}
return ['name'];
};
const identifierMapper: IdentifiersMapper = (
record: any,
@ -18,13 +31,15 @@ export const ObjectMetadataItemsRelationPickerEffect = () => {
return {
id: record.id,
name: record.name,
avatarUrl: record.avatarUrl,
avatarUrl: getLogoUrlFromDomainName(record.domainName ?? ''),
avatarType: 'squared',
record: record,
};
}
if (objectMetadataItemSingularName === 'workspaceMember') {
if (
['workspaceMember', 'person'].includes(objectMetadataItemSingularName)
) {
return {
id: record.id,
name: record.name.firstName + ' ' + record.name.lastName,
@ -34,6 +49,16 @@ export const ObjectMetadataItemsRelationPickerEffect = () => {
};
}
if (['opportunity'].includes(objectMetadataItemSingularName)) {
return {
id: record.id,
name: record.company.name,
avatarUrl: record.avatarUrl,
avatarType: 'rounded',
record: record,
};
}
return {
id: record.id,
name: record.name,
@ -45,7 +70,10 @@ export const ObjectMetadataItemsRelationPickerEffect = () => {
useEffect(() => {
setIdentifiersMapper(() => identifierMapper);
}, [setIdentifiersMapper]);
setSearchQuery({
computeFilterFields,
});
}, [setIdentifiersMapper, setSearchQuery]);
return <></>;
};

View File

@ -22,13 +22,16 @@ export const useComputeDefinitionsFromFieldMetadata = (
const columnDefinitions: ColumnDefinition<FieldMetadata>[] = useMemo(
() =>
activeFieldMetadataItems.map((field, index) =>
formatFieldMetadataItemAsColumnDefinition({
position: index,
field,
}),
),
[activeFieldMetadataItems],
objectMetadataItem
? activeFieldMetadataItems.map((field, index) =>
formatFieldMetadataItemAsColumnDefinition({
position: index,
field,
objectMetadataItem,
}),
)
: [],
[activeFieldMetadataItems, objectMetadataItem],
);
const filterDefinitions = formatFieldMetadataItemsAsFilterDefinitions({

View File

@ -1,21 +0,0 @@
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { Nullable } from '~/types/Nullable';
export const useObjectMainIdentifier = (
objectMetadataItem?: Nullable<ObjectMetadataItem>,
) => {
if (!objectMetadataItem) {
return {};
}
const labelIdentifierFieldMetadataId = objectMetadataItem.fields.find(
({ name }) => name === 'name',
)?.id;
const basePathToShowPage = `/object/${objectMetadataItem.nameSingular}/`;
return {
labelIdentifierFieldMetadataId,
basePathToShowPage,
};
};

View File

@ -56,7 +56,15 @@ export const useObjectMetadataItem = ({
objectMetadataItem,
});
const labelIdentifierFieldMetadataId = objectMetadataItem?.fields.find(
({ name }) => name === 'name',
)?.id;
const basePathToShowPage = `/object/${objectMetadataItem?.nameSingular}/`;
return {
labelIdentifierFieldMetadataId,
basePathToShowPage,
objectMetadataItem,
objectNotFoundInMetadata,
findManyQuery,

View File

@ -1,3 +1,4 @@
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { parseFieldRelationType } from '@/object-metadata/utils/parseFieldRelationType';
import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata';
import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition';
@ -9,9 +10,11 @@ import { parseFieldType } from './parseFieldType';
export const formatFieldMetadataItemAsColumnDefinition = ({
position,
field,
objectMetadataItem,
}: {
position: number;
field: FieldMetadataItem;
objectMetadataItem: ObjectMetadataItem;
}): ColumnDefinition<FieldMetadata> => {
const relationObjectMetadataItem =
field.toRelationMetadata?.fromObjectMetadata;
@ -26,9 +29,11 @@ export const formatFieldMetadataItemAsColumnDefinition = ({
fieldName: field.name,
placeHolder: field.label,
relationType: parseFieldRelationType(field),
objectMetadataNameSingular:
relationObjectMetadataNameSingular:
relationObjectMetadataItem?.nameSingular ?? '',
objectMetadataNamePlural: relationObjectMetadataItem?.namePlural ?? '',
relationObjectMetadataNamePlural:
relationObjectMetadataItem?.namePlural ?? '',
objectMetadataNameSingular: objectMetadataItem.nameSingular ?? '',
},
iconName: field.icon ?? 'Icon123',
isVisible: true,