Convert metadata tables to camelCase (#2400)

* Convert metadata tables to camelCase

* datasourcemetadataid to datasourceid

* refactor metadata folders

* fix command

* move commands out of metadata

* fix seed

* rename objectId and fieldId in objectMetadataId and fieldMetadataId in FE

* fix field-metadata

* Fix

* Fix

* remove logs

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Weiko
2023-11-09 20:06:10 +01:00
committed by GitHub
parent 5622f42e7a
commit 1cf08c797f
238 changed files with 1851 additions and 2252 deletions

View File

@ -173,7 +173,7 @@ export type CreateFieldInput = {
icon?: InputMaybe<Scalars['String']['input']>; icon?: InputMaybe<Scalars['String']['input']>;
label: Scalars['String']['input']; label: Scalars['String']['input'];
name: Scalars['String']['input']; name: Scalars['String']['input'];
objectId: Scalars['String']['input']; objectMetadataId: Scalars['String']['input'];
type: FieldMetadataType; type: FieldMetadataType;
}; };
@ -196,6 +196,21 @@ export type CreateOneObjectInput = {
object: CreateObjectInput; object: CreateObjectInput;
}; };
export type CreateOneRelationInput = {
/** The record to create */
relation: CreateRelationInput;
};
export type CreateRelationInput = {
description?: InputMaybe<Scalars['String']['input']>;
fromObjectMetadataId: Scalars['String']['input'];
icon?: InputMaybe<Scalars['String']['input']>;
label: Scalars['String']['input'];
name: Scalars['String']['input'];
relationType: Scalars['String']['input'];
toObjectMetadataId: Scalars['String']['input'];
};
export enum Currency { export enum Currency {
Aed = 'AED', Aed = 'AED',
Afn = 'AFN', Afn = 'AFN',
@ -437,6 +452,7 @@ export enum FieldMetadataType {
Money = 'MONEY', Money = 'MONEY',
Number = 'NUMBER', Number = 'NUMBER',
Phone = 'PHONE', Phone = 'PHONE',
Relation = 'RELATION',
Text = 'TEXT', Text = 'TEXT',
Url = 'URL', Url = 'URL',
Uuid = 'UUID' Uuid = 'UUID'
@ -446,6 +462,7 @@ export type Mutation = {
__typename?: 'Mutation'; __typename?: 'Mutation';
createOneField: Field; createOneField: Field;
createOneObject: Object; createOneObject: Object;
createOneRelation: Relation;
deleteOneField: FieldDeleteResponse; deleteOneField: FieldDeleteResponse;
deleteOneObject: ObjectDeleteResponse; deleteOneObject: ObjectDeleteResponse;
updateOneField: Field; updateOneField: Field;
@ -463,6 +480,11 @@ export type MutationCreateOneObjectArgs = {
}; };
export type MutationCreateOneRelationArgs = {
input: CreateOneRelationInput;
};
export type MutationDeleteOneFieldArgs = { export type MutationDeleteOneFieldArgs = {
input: DeleteOneFieldInput; input: DeleteOneFieldInput;
}; };
@ -611,6 +633,7 @@ export type Query = {
fields: FieldConnection; fields: FieldConnection;
object: Object; object: Object;
objects: ObjectConnection; objects: ObjectConnection;
relation: Relation;
}; };
@ -633,6 +656,11 @@ export type QueryObjectsArgs = {
paging?: CursorPaging; paging?: CursorPaging;
}; };
export type QueryRelationArgs = {
id: Scalars['ID']['input'];
};
export type Support = { export type Support = {
__typename?: 'Support'; __typename?: 'Support';
supportDriver: Scalars['String']['output']; supportDriver: Scalars['String']['output'];
@ -769,6 +797,7 @@ export type Field = {
__typename?: 'field'; __typename?: 'field';
createdAt: Scalars['DateTime']['output']; createdAt: Scalars['DateTime']['output'];
description?: Maybe<Scalars['String']['output']>; description?: Maybe<Scalars['String']['output']>;
fromRelationMetadata?: Maybe<Relation>;
icon?: Maybe<Scalars['String']['output']>; icon?: Maybe<Scalars['String']['output']>;
id: Scalars['ID']['output']; id: Scalars['ID']['output'];
isActive: Scalars['Boolean']['output']; isActive: Scalars['Boolean']['output'];
@ -778,6 +807,7 @@ export type Field = {
name: Scalars['String']['output']; name: Scalars['String']['output'];
/** @deprecated Use label name instead */ /** @deprecated Use label name instead */
placeholder?: Maybe<Scalars['String']['output']>; placeholder?: Maybe<Scalars['String']['output']>;
toRelationMetadata?: Maybe<Relation>;
type: FieldMetadataType; type: FieldMetadataType;
updatedAt: Scalars['DateTime']['output']; updatedAt: Scalars['DateTime']['output'];
}; };
@ -820,6 +850,28 @@ export type ObjectEdge = {
node: Object; node: Object;
}; };
export type Relation = {
__typename?: 'relation';
createdAt: Scalars['DateTime']['output'];
fromFieldMetadataId: Scalars['String']['output'];
fromObjectMetadata: Object;
fromObjectMetadataId: Scalars['String']['output'];
id: Scalars['ID']['output'];
relationType: Scalars['String']['output'];
toFieldMetadataId: Scalars['String']['output'];
toObjectMetadata: Object;
toObjectMetadataId: Scalars['String']['output'];
updatedAt: Scalars['DateTime']['output'];
};
export type RelationEdge = {
__typename?: 'relationEdge';
/** Cursor for this node. */
cursor: Scalars['ConnectionCursor']['output'];
/** The node containing the relation */
node: Relation;
};
export type CreateOneObjectMetadataItemMutationVariables = Exact<{ export type CreateOneObjectMetadataItemMutationVariables = Exact<{
input: CreateOneObjectInput; input: CreateOneObjectInput;
}>; }>;

View File

@ -1322,6 +1322,7 @@ export enum FieldMetadataType {
Money = 'MONEY', Money = 'MONEY',
Number = 'NUMBER', Number = 'NUMBER',
Phone = 'PHONE', Phone = 'PHONE',
Relation = 'RELATION',
Text = 'TEXT', Text = 'TEXT',
Url = 'URL', Url = 'URL',
Uuid = 'UUID' Uuid = 'UUID'
@ -1391,6 +1392,7 @@ export type Mutation = {
createOneApiKey: ApiKeyToken; createOneApiKey: ApiKeyToken;
createOneComment: Comment; createOneComment: Comment;
createOneCompany: Company; createOneCompany: Company;
createOneField: Field;
createOneObject: Object; createOneObject: Object;
createOnePerson: Person; createOnePerson: Person;
createOnePipelineProgress: PipelineProgress; createOnePipelineProgress: PipelineProgress;
@ -1402,6 +1404,7 @@ export type Mutation = {
deleteManyCompany: AffectedRows; deleteManyCompany: AffectedRows;
deleteManyPerson: AffectedRows; deleteManyPerson: AffectedRows;
deleteManyPipelineProgress: AffectedRows; deleteManyPipelineProgress: AffectedRows;
deleteOneField: FieldDeleteResponse;
deleteOneObject: ObjectDeleteResponse; deleteOneObject: ObjectDeleteResponse;
deleteOnePipelineStage: PipelineStage; deleteOnePipelineStage: PipelineStage;
deleteOneWebHook: WebHook; deleteOneWebHook: WebHook;
@ -1414,6 +1417,7 @@ export type Mutation = {
updateOneActivity: Activity; updateOneActivity: Activity;
updateOneCompany?: Maybe<Company>; updateOneCompany?: Maybe<Company>;
updateOneFavorites: Favorite; updateOneFavorites: Favorite;
updateOneField: Field;
updateOneObject: Object; updateOneObject: Object;
updateOnePerson?: Maybe<Person>; updateOnePerson?: Maybe<Person>;
updateOnePipelineProgress?: Maybe<PipelineProgress>; updateOnePipelineProgress?: Maybe<PipelineProgress>;
@ -2404,6 +2408,8 @@ export type Query = {
clientConfig: ClientConfig; clientConfig: ClientConfig;
currentUser: User; currentUser: User;
currentWorkspace: Workspace; currentWorkspace: Workspace;
field: Field;
fields: FieldConnection;
findFavorites: Array<Favorite>; findFavorites: Array<Favorite>;
findManyActivities: Array<Activity>; findManyActivities: Array<Activity>;
findManyApiKey: Array<ApiKey>; findManyApiKey: Array<ApiKey>;
@ -2593,6 +2599,15 @@ export type Support = {
supportFrontChatId?: Maybe<Scalars['String']>; supportFrontChatId?: Maybe<Scalars['String']>;
}; };
export type TUser = {
__typename?: 'TUser';
email: Scalars['String'];
emailVerified: Scalars['Boolean'];
firstName?: Maybe<Scalars['String']>;
id: Scalars['ID'];
lastName?: Maybe<Scalars['String']>;
};
export type Telemetry = { export type Telemetry = {
__typename?: 'Telemetry'; __typename?: 'Telemetry';
anonymizationEnabled: Scalars['Boolean']; anonymizationEnabled: Scalars['Boolean'];
@ -3093,6 +3108,7 @@ export type Field = {
__typename?: 'field'; __typename?: 'field';
createdAt: Scalars['DateTime']; createdAt: Scalars['DateTime'];
description?: Maybe<Scalars['String']>; description?: Maybe<Scalars['String']>;
fromRelationMetadata?: Maybe<Relation>;
icon?: Maybe<Scalars['String']>; icon?: Maybe<Scalars['String']>;
id: Scalars['ID']; id: Scalars['ID'];
isActive: Scalars['Boolean']; isActive: Scalars['Boolean'];
@ -3102,6 +3118,7 @@ export type Field = {
name: Scalars['String']; name: Scalars['String'];
/** @deprecated Use label name instead */ /** @deprecated Use label name instead */
placeholder?: Maybe<Scalars['String']>; placeholder?: Maybe<Scalars['String']>;
toRelationMetadata?: Maybe<Relation>;
type: FieldMetadataType; type: FieldMetadataType;
updatedAt: Scalars['DateTime']; updatedAt: Scalars['DateTime'];
}; };
@ -3144,6 +3161,28 @@ export type ObjectEdge = {
node: Object; node: Object;
}; };
export type Relation = {
__typename?: 'relation';
createdAt: Scalars['DateTime'];
fromFieldMetadataId: Scalars['String'];
fromObjectMetadata: Object;
fromObjectMetadataId: Scalars['String'];
id: Scalars['ID'];
relationType: Scalars['String'];
toFieldMetadataId: Scalars['String'];
toObjectMetadata: Object;
toObjectMetadataId: Scalars['String'];
updatedAt: Scalars['DateTime'];
};
export type RelationEdge = {
__typename?: 'relationEdge';
/** Cursor for this node. */
cursor: Scalars['ConnectionCursor'];
/** The node containing the relation */
node: Relation;
};
export type ActivityWithTargetsFragment = { __typename?: 'Activity', id: string, createdAt: string, updatedAt: string, activityTargets?: Array<{ __typename?: 'ActivityTarget', id: string, createdAt: string, updatedAt: string, companyId?: string | null, personId?: string | null }> | null }; export type ActivityWithTargetsFragment = { __typename?: 'Activity', id: string, createdAt: string, updatedAt: string, activityTargets?: Array<{ __typename?: 'ActivityTarget', id: string, createdAt: string, updatedAt: string, companyId?: string | null, personId?: string | null }> | null };
export type ActivityQueryFragmentFragment = { __typename?: 'Activity', id: string, createdAt: string, title?: string | null, body?: string | null, type: ActivityType, completedAt?: string | null, dueAt?: string | null, assignee?: { __typename?: 'User', id: string, firstName?: string | null, lastName?: string | null, displayName: string, avatarUrl?: string | null } | null, author: { __typename?: 'User', id: string, firstName?: string | null, lastName?: string | null, displayName: string }, comments?: Array<{ __typename?: 'Comment', id: string, body: string, createdAt: string, updatedAt: string, author: { __typename?: 'User', id: string, displayName: string, firstName?: string | null, lastName?: string | null, avatarUrl?: string | null } }> | null, activityTargets?: Array<{ __typename?: 'ActivityTarget', id: string, companyId?: string | null, personId?: string | null, company?: { __typename?: 'Company', id: string, name: string, domainName: string } | null, person?: { __typename?: 'Person', id: string, displayName: string, avatarUrl?: string | null } | null }> | null }; export type ActivityQueryFragmentFragment = { __typename?: 'Activity', id: string, createdAt: string, title?: string | null, body?: string | null, type: ActivityType, completedAt?: string | null, dueAt?: string | null, assignee?: { __typename?: 'User', id: string, firstName?: string | null, lastName?: string | null, displayName: string, avatarUrl?: string | null } | null, author: { __typename?: 'User', id: string, firstName?: string | null, lastName?: string | null, displayName: string }, comments?: Array<{ __typename?: 'Comment', id: string, body: string, createdAt: string, updatedAt: string, author: { __typename?: 'User', id: string, displayName: string, firstName?: string | null, lastName?: string | null, avatarUrl?: string | null } }> | null, activityTargets?: Array<{ __typename?: 'ActivityTarget', id: string, companyId?: string | null, personId?: string | null, company?: { __typename?: 'Company', id: string, name: string, domainName: string } | null, person?: { __typename?: 'Person', id: string, displayName: string, avatarUrl?: string | null } | null }> | null };

View File

@ -23,7 +23,7 @@ export const ActivityAssigneeEditableField = ({
entityId: activity.id, entityId: activity.id,
recoilScopeId: 'assignee', recoilScopeId: 'assignee',
fieldDefinition: { fieldDefinition: {
fieldId: 'assignee', fieldMetadataId: 'assignee',
label: 'Assignee', label: 'Assignee',
Icon: IconUserCircle, Icon: IconUserCircle,
type: 'RELATION', type: 'RELATION',

View File

@ -21,7 +21,7 @@ export const ActivityEditorDateField = ({
entityId: activityId, entityId: activityId,
recoilScopeId: 'activityDueAt', recoilScopeId: 'activityDueAt',
fieldDefinition: { fieldDefinition: {
fieldId: 'activityDueAt', fieldMetadataId: 'activityDueAt',
label: 'Due date', label: 'Due date',
Icon: IconCalendar, Icon: IconCalendar,
type: 'DATE', type: 'DATE',

View File

@ -17,7 +17,7 @@ export const useCurrentUserTaskCount = () => {
completedAt: { equals: null }, completedAt: { equals: null },
...(currentUser ...(currentUser
? turnFilterIntoWhereClause({ ? turnFilterIntoWhereClause({
fieldId: 'assigneeId', fieldMetadataId: 'assigneeId',
value: currentUser.id, value: currentUser.id,
operand: ViewFilterOperand.Is, operand: ViewFilterOperand.Is,
displayValue: currentUser.displayName, displayValue: currentUser.displayName,

View File

@ -222,13 +222,13 @@ export const CompanyBoardCard = () => {
<StyledBoardCardBody> <StyledBoardCardBody>
<AnimatedEaseInOut isOpen={!showCompactView}> <AnimatedEaseInOut isOpen={!showCompactView}>
{visibleBoardCardFields.map((viewField) => ( {visibleBoardCardFields.map((viewField) => (
<PreventSelectOnClickContainer key={viewField.fieldId}> <PreventSelectOnClickContainer key={viewField.fieldMetadataId}>
<FieldContext.Provider <FieldContext.Provider
value={{ value={{
entityId: boardCardId, entityId: boardCardId,
recoilScopeId: boardCardId + viewField.fieldId, recoilScopeId: boardCardId + viewField.fieldMetadataId,
fieldDefinition: { fieldDefinition: {
fieldId: viewField.fieldId, fieldMetadataId: viewField.fieldMetadataId,
label: viewField.label, label: viewField.label,
Icon: viewField.Icon, Icon: viewField.Icon,
type: viewField.type, type: viewField.type,

View File

@ -28,7 +28,7 @@ import { User } from '~/generated/graphql';
export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[] = export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[] =
[ [
{ {
fieldId: 'name', fieldMetadataId: 'name',
label: 'Name', label: 'Name',
Icon: IconBuildingSkyscraper, Icon: IconBuildingSkyscraper,
size: 180, size: 180,
@ -45,7 +45,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
basePathToShowPage: '/companies/', basePathToShowPage: '/companies/',
} satisfies ColumnDefinition<FieldChipMetadata>, } satisfies ColumnDefinition<FieldChipMetadata>,
{ {
fieldId: 'domainName', fieldMetadataId: 'domainName',
label: 'URL', label: 'URL',
Icon: IconLink, Icon: IconLink,
size: 100, size: 100,
@ -60,7 +60,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
'The company website URL. We use this url to fetch the company icon.', 'The company website URL. We use this url to fetch the company icon.',
} satisfies ColumnDefinition<FieldURLMetadata>, } satisfies ColumnDefinition<FieldURLMetadata>,
{ {
fieldId: 'accountOwner', fieldMetadataId: 'accountOwner',
label: 'Account Owner', label: 'Account Owner',
Icon: IconUserCircle, Icon: IconUserCircle,
size: 150, size: 150,
@ -82,7 +82,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
}, },
} satisfies ColumnDefinition<FieldRelationMetadata>, } satisfies ColumnDefinition<FieldRelationMetadata>,
{ {
fieldId: 'createdAt', fieldMetadataId: 'createdAt',
label: 'Creation', label: 'Creation',
Icon: IconCalendarEvent, Icon: IconCalendarEvent,
size: 150, size: 150,
@ -95,7 +95,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
infoTooltipContent: "Date when the company's record was created.", infoTooltipContent: "Date when the company's record was created.",
} satisfies ColumnDefinition<FieldDateMetadata>, } satisfies ColumnDefinition<FieldDateMetadata>,
{ {
fieldId: 'employees', fieldMetadataId: 'employees',
label: 'Employees', label: 'Employees',
Icon: IconUsers, Icon: IconUsers,
size: 150, size: 150,
@ -110,7 +110,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
infoTooltipContent: 'Number of employees in the company.', infoTooltipContent: 'Number of employees in the company.',
} satisfies ColumnDefinition<FieldNumberMetadata>, } satisfies ColumnDefinition<FieldNumberMetadata>,
{ {
fieldId: 'linkedin', fieldMetadataId: 'linkedin',
label: 'LinkedIn', label: 'LinkedIn',
Icon: IconBrandLinkedin, Icon: IconBrandLinkedin,
size: 170, size: 170,
@ -124,7 +124,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
infoTooltipContent: 'The company Linkedin account.', infoTooltipContent: 'The company Linkedin account.',
} satisfies ColumnDefinition<FieldURLMetadata>, } satisfies ColumnDefinition<FieldURLMetadata>,
{ {
fieldId: 'address', fieldMetadataId: 'address',
label: 'Address', label: 'Address',
Icon: IconMap, Icon: IconMap,
size: 170, size: 170,
@ -138,7 +138,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
infoTooltipContent: 'The company address.', infoTooltipContent: 'The company address.',
} satisfies ColumnDefinition<FieldTextMetadata>, } satisfies ColumnDefinition<FieldTextMetadata>,
{ {
fieldId: 'idealCustomerProfile', fieldMetadataId: 'idealCustomerProfile',
label: 'ICP', label: 'ICP',
Icon: IconTarget, Icon: IconTarget,
size: 150, size: 150,
@ -152,7 +152,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
'Ideal Customer Profile: Indicates whether the company is the most suitable and valuable customer for you.', 'Ideal Customer Profile: Indicates whether the company is the most suitable and valuable customer for you.',
} satisfies ColumnDefinition<FieldBooleanMetadata>, } satisfies ColumnDefinition<FieldBooleanMetadata>,
{ {
fieldId: 'annualRecurringRevenue', fieldMetadataId: 'annualRecurringRevenue',
label: 'ARR', label: 'ARR',
Icon: IconMoneybag, Icon: IconMoneybag,
size: 150, size: 150,
@ -166,7 +166,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
'Annual Recurring Revenue: The actual or estimated annual revenue of the company.', 'Annual Recurring Revenue: The actual or estimated annual revenue of the company.',
} satisfies ColumnDefinition<FieldMoneyMetadata>, } satisfies ColumnDefinition<FieldMoneyMetadata>,
{ {
fieldId: 'xUrl', fieldMetadataId: 'xUrl',
label: 'Twitter', label: 'Twitter',
Icon: IconBrandX, Icon: IconBrandX,
size: 150, size: 150,
@ -184,7 +184,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
export const suppliersAvailableColumnDefinitions: ColumnDefinition<FieldMetadata>[] = export const suppliersAvailableColumnDefinitions: ColumnDefinition<FieldMetadata>[] =
[ [
{ {
fieldId: 'name', fieldMetadataId: 'name',
label: 'Name', label: 'Name',
Icon: IconBuildingSkyscraper, Icon: IconBuildingSkyscraper,
size: 180, size: 180,
@ -199,7 +199,7 @@ export const suppliersAvailableColumnDefinitions: ColumnDefinition<FieldMetadata
basePathToShowPage: '/companies/', basePathToShowPage: '/companies/',
} satisfies ColumnDefinition<FieldTextMetadata>, } satisfies ColumnDefinition<FieldTextMetadata>,
{ {
fieldId: 'city', fieldMetadataId: 'city',
label: 'City', label: 'City',
Icon: IconBuildingSkyscraper, Icon: IconBuildingSkyscraper,
size: 180, size: 180,

View File

@ -29,9 +29,9 @@ import { useUpdateOneObject } from '../hooks/useUpdateOneObject';
import { formatMetadataFieldAsColumnDefinition } from '../utils/formatMetadataFieldAsColumnDefinition'; import { formatMetadataFieldAsColumnDefinition } from '../utils/formatMetadataFieldAsColumnDefinition';
export const RecordShowPage = () => { export const RecordShowPage = () => {
const { objectNameSingular, objectId } = useParams<{ const { objectNameSingular, objectMetadataId } = useParams<{
objectNameSingular: string; objectNameSingular: string;
objectId: string; objectMetadataId: string;
}>(); }>();
const { icons } = useLazyLoadIcons(); const { icons } = useLazyLoadIcons();
@ -41,11 +41,11 @@ export const RecordShowPage = () => {
}); });
const [, setEntityFields] = useRecoilState( const [, setEntityFields] = useRecoilState(
entityFieldsFamilyState(objectId ?? ''), entityFieldsFamilyState(objectMetadataId ?? ''),
); );
const { object } = useFindOneObject({ const { object } = useFindOneObject({
objectId: objectId, objectMetadataId: objectMetadataId,
objectNameSingular, objectNameSingular,
onCompleted: (data) => { onCompleted: (data) => {
setEntityFields(data); setEntityFields(data);

View File

@ -14,6 +14,7 @@ const defaultFieldValues: Record<FieldMetadataType, unknown> = {
[FieldMetadataType.Email]: '', [FieldMetadataType.Email]: '',
[FieldMetadataType.Enum]: null, [FieldMetadataType.Enum]: null,
[FieldMetadataType.Number]: null, [FieldMetadataType.Number]: null,
[FieldMetadataType.Relation]: null,
[FieldMetadataType.Phone]: '', [FieldMetadataType.Phone]: '',
[FieldMetadataType.Text]: '', [FieldMetadataType.Text]: '',
[FieldMetadataType.Url]: { link: '', text: '' }, [FieldMetadataType.Url]: { link: '', text: '' },

View File

@ -8,10 +8,10 @@ export const useFindOneObject = <
ObjectType extends { id: string } & Record<string, any>, ObjectType extends { id: string } & Record<string, any>,
>({ >({
objectNameSingular, objectNameSingular,
objectId, objectMetadataId,
onCompleted, onCompleted,
}: Pick<ObjectMetadataItemIdentifier, 'objectNameSingular'> & { }: Pick<ObjectMetadataItemIdentifier, 'objectNameSingular'> & {
objectId: string | undefined; objectMetadataId: string | undefined;
onCompleted?: (data: ObjectType) => void; onCompleted?: (data: ObjectType) => void;
}) => { }) => {
const { foundObjectMetadataItem, objectNotFoundInMetadata, findOneQuery } = const { foundObjectMetadataItem, objectNotFoundInMetadata, findOneQuery } =
@ -21,11 +21,11 @@ export const useFindOneObject = <
const { data, loading, error } = useQuery< const { data, loading, error } = useQuery<
{ [nameSingular: string]: ObjectType }, { [nameSingular: string]: ObjectType },
{ objectId: string } { objectMetadataId: string }
>(findOneQuery, { >(findOneQuery, {
skip: !foundObjectMetadataItem || !objectId, skip: !foundObjectMetadataItem || !objectMetadataId,
variables: { variables: {
objectId: objectId ?? '', objectMetadataId: objectMetadataId ?? '',
}, },
onCompleted: (data) => { onCompleted: (data) => {
if (onCompleted && objectNameSingular) { if (onCompleted && objectNameSingular) {

View File

@ -14,13 +14,13 @@ export const useMetadataField = () => {
const createMetadataField = ( const createMetadataField = (
input: Pick<Field, 'label' | 'icon' | 'description'> & { input: Pick<Field, 'label' | 'icon' | 'description'> & {
objectId: string; objectMetadataId: string;
type: MetadataFieldDataType; type: MetadataFieldDataType;
}, },
) => ) =>
createOneMetadataField({ createOneMetadataField({
...formatMetadataFieldInput(input), ...formatMetadataFieldInput(input),
objectId: input.objectId, objectMetadataId: input.objectMetadataId,
type: input.type, type: input.type,
}); });
@ -28,19 +28,19 @@ export const useMetadataField = () => {
input: Pick<Field, 'id' | 'label' | 'icon' | 'description'>, input: Pick<Field, 'id' | 'label' | 'icon' | 'description'>,
) => ) =>
updateOneMetadataField({ updateOneMetadataField({
fieldIdToUpdate: input.id, fieldMetadataIdToUpdate: input.id,
updatePayload: formatMetadataFieldInput(input), updatePayload: formatMetadataFieldInput(input),
}); });
const activateMetadataField = (metadataField: Field) => const activateMetadataField = (metadataField: Field) =>
updateOneMetadataField({ updateOneMetadataField({
fieldIdToUpdate: metadataField.id, fieldMetadataIdToUpdate: metadataField.id,
updatePayload: { isActive: true }, updatePayload: { isActive: true },
}); });
const disableMetadataField = (metadataField: Field) => const disableMetadataField = (metadataField: Field) =>
updateOneMetadataField({ updateOneMetadataField({
fieldIdToUpdate: metadataField.id, fieldMetadataIdToUpdate: metadataField.id,
updatePayload: { isActive: false }, updatePayload: { isActive: false },
}); });

View File

@ -22,10 +22,10 @@ export const useUpdateOneMetadataField = () => {
}); });
const updateOneMetadataField = async ({ const updateOneMetadataField = async ({
fieldIdToUpdate, fieldMetadataIdToUpdate,
updatePayload, updatePayload,
}: { }: {
fieldIdToUpdate: UpdateOneMetadataFieldMutationVariables['idToUpdate']; fieldMetadataIdToUpdate: UpdateOneMetadataFieldMutationVariables['idToUpdate'];
updatePayload: Pick< updatePayload: Pick<
UpdateOneMetadataFieldMutationVariables['updatePayload'], UpdateOneMetadataFieldMutationVariables['updatePayload'],
'description' | 'icon' | 'isActive' | 'label' | 'name' 'description' | 'icon' | 'isActive' | 'label' | 'name'
@ -33,7 +33,7 @@ export const useUpdateOneMetadataField = () => {
}) => { }) => {
return await mutate({ return await mutate({
variables: { variables: {
idToUpdate: fieldIdToUpdate, idToUpdate: fieldMetadataIdToUpdate,
updatePayload: { updatePayload: {
...updatePayload, ...updatePayload,
label: updatePayload.label ?? undefined, label: updatePayload.label ?? undefined,

View File

@ -19,7 +19,7 @@ export const formatMetadataFieldAsColumnDefinition = ({
icons: Record<string, IconComponent>; icons: Record<string, IconComponent>;
}): ColumnDefinition<FieldMetadata> => ({ }): ColumnDefinition<FieldMetadata> => ({
position, position,
fieldId: field.id, fieldMetadataId: field.id,
label: field.label, label: field.label,
size: 100, size: 100,
type: parseFieldType(field.type), type: parseFieldType(field.type),

View File

@ -9,7 +9,7 @@ export const formatMetadataFieldAsFilterDefinition = ({
field: ObjectMetadataItem['fields'][0]; field: ObjectMetadataItem['fields'][0];
icons: Record<string, any>; icons: Record<string, any>;
}): FilterDefinition => ({ }): FilterDefinition => ({
fieldId: field.id, fieldMetadataId: field.id,
label: field.label, label: field.label,
Icon: icons[field.icon ?? 'Icon123'], Icon: icons[field.icon ?? 'Icon123'],
type: 'TEXT', type: 'TEXT',

View File

@ -9,7 +9,7 @@ export const formatMetadataFieldAsSortDefinition = ({
field: ObjectMetadataItem['fields'][0]; field: ObjectMetadataItem['fields'][0];
icons: Record<string, any>; icons: Record<string, any>;
}): SortDefinition => ({ }): SortDefinition => ({
fieldId: field.id, fieldMetadataId: field.id,
label: field.label, label: field.label,
Icon: icons[field.icon ?? 'Icon123'], Icon: icons[field.icon ?? 'Icon123'],
}); });

View File

@ -10,10 +10,10 @@ export const generateFindOneCustomObjectQuery = ({
objectMetadataItem: ObjectMetadataItem; objectMetadataItem: ObjectMetadataItem;
}) => { }) => {
return gql` return gql`
query FindOne${objectMetadataItem.nameSingular}($objectId: UUID!) { query FindOne${objectMetadataItem.nameSingular}($objectMetadataId: UUID!) {
${objectMetadataItem.nameSingular}(filter: { ${objectMetadataItem.nameSingular}(filter: {
id: { id: {
eq: $objectId eq: $objectMetadataId
} }
}){ }){
id id

View File

@ -27,7 +27,7 @@ import { getLogoUrlFromDomainName } from '~/utils';
export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[] = export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[] =
[ [
{ {
fieldId: 'displayName', fieldMetadataId: 'displayName',
label: 'People', label: 'People',
Icon: IconUser, Icon: IconUser,
size: 210, size: 210,
@ -45,7 +45,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
basePathToShowPage: '/person/', basePathToShowPage: '/person/',
} satisfies ColumnDefinition<FieldDoubleTextChipMetadata>, } satisfies ColumnDefinition<FieldDoubleTextChipMetadata>,
{ {
fieldId: 'email', fieldMetadataId: 'email',
label: 'Email', label: 'Email',
Icon: IconMail, Icon: IconMail,
size: 150, size: 150,
@ -58,7 +58,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
infoTooltipContent: 'Contacts Email.', infoTooltipContent: 'Contacts Email.',
} satisfies ColumnDefinition<FieldEmailMetadata>, } satisfies ColumnDefinition<FieldEmailMetadata>,
{ {
fieldId: 'company', fieldMetadataId: 'company',
label: 'Company', label: 'Company',
Icon: IconBuildingSkyscraper, Icon: IconBuildingSkyscraper,
size: 150, size: 150,
@ -78,7 +78,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
}, },
} satisfies ColumnDefinition<FieldRelationMetadata>, } satisfies ColumnDefinition<FieldRelationMetadata>,
{ {
fieldId: 'phone', fieldMetadataId: 'phone',
label: 'Phone', label: 'Phone',
Icon: IconPhone, Icon: IconPhone,
size: 150, size: 150,
@ -91,7 +91,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
infoTooltipContent: 'Contacts phone number.', infoTooltipContent: 'Contacts phone number.',
} satisfies ColumnDefinition<FieldPhoneMetadata>, } satisfies ColumnDefinition<FieldPhoneMetadata>,
{ {
fieldId: 'createdAt', fieldMetadataId: 'createdAt',
label: 'Creation', label: 'Creation',
Icon: IconCalendarEvent, Icon: IconCalendarEvent,
size: 150, size: 150,
@ -103,7 +103,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
infoTooltipContent: 'Date when the contact was added.', infoTooltipContent: 'Date when the contact was added.',
} satisfies ColumnDefinition<FieldDateMetadata>, } satisfies ColumnDefinition<FieldDateMetadata>,
{ {
fieldId: 'city', fieldMetadataId: 'city',
label: 'City', label: 'City',
Icon: IconMap, Icon: IconMap,
size: 150, size: 150,
@ -116,7 +116,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
infoTooltipContent: 'Contacts city.', infoTooltipContent: 'Contacts city.',
} satisfies ColumnDefinition<FieldTextMetadata>, } satisfies ColumnDefinition<FieldTextMetadata>,
{ {
fieldId: 'jobTitle', fieldMetadataId: 'jobTitle',
label: 'Job title', label: 'Job title',
Icon: IconBriefcase, Icon: IconBriefcase,
size: 150, size: 150,
@ -129,7 +129,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
infoTooltipContent: 'Contacts job title.', infoTooltipContent: 'Contacts job title.',
} satisfies ColumnDefinition<FieldTextMetadata>, } satisfies ColumnDefinition<FieldTextMetadata>,
{ {
fieldId: 'linkedin', fieldMetadataId: 'linkedin',
label: 'LinkedIn', label: 'LinkedIn',
Icon: IconBrandLinkedin, Icon: IconBrandLinkedin,
size: 150, size: 150,
@ -142,7 +142,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
infoTooltipContent: 'Contacts Linkedin account.', infoTooltipContent: 'Contacts Linkedin account.',
} satisfies ColumnDefinition<FieldURLMetadata>, } satisfies ColumnDefinition<FieldURLMetadata>,
{ {
fieldId: 'x', fieldMetadataId: 'x',
label: 'Twitter', label: 'Twitter',
Icon: IconBrandX, Icon: IconBrandX,
size: 150, size: 150,

View File

@ -18,7 +18,7 @@ import { Person } from '~/generated/graphql';
export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[] = export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[] =
[ [
{ {
fieldId: 'closeDate', fieldMetadataId: 'closeDate',
label: 'Close Date', label: 'Close Date',
Icon: IconCalendarEvent, Icon: IconCalendarEvent,
position: 0, position: 0,
@ -32,7 +32,7 @@ export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[
'Specified date by which an opportunity must be completed.', 'Specified date by which an opportunity must be completed.',
} satisfies ColumnDefinition<FieldDateMetadata>, } satisfies ColumnDefinition<FieldDateMetadata>,
{ {
fieldId: 'amount', fieldMetadataId: 'amount',
label: 'Amount', label: 'Amount',
Icon: IconCurrencyDollar, Icon: IconCurrencyDollar,
position: 1, position: 1,
@ -46,7 +46,7 @@ export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[
infoTooltipContent: 'Potential monetary value of a business opportunity.', infoTooltipContent: 'Potential monetary value of a business opportunity.',
} satisfies ColumnDefinition<FieldNumberMetadata>, } satisfies ColumnDefinition<FieldNumberMetadata>,
{ {
fieldId: 'probability', fieldMetadataId: 'probability',
label: 'Probability', label: 'Probability',
Icon: IconProgressCheck, Icon: IconProgressCheck,
position: 2, position: 2,
@ -60,7 +60,7 @@ export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[
"Level of certainty in the lead's potential to convert into a success.", "Level of certainty in the lead's potential to convert into a success.",
} satisfies ColumnDefinition<FieldProbabilityMetadata>, } satisfies ColumnDefinition<FieldProbabilityMetadata>,
{ {
fieldId: 'pointOfContact', fieldMetadataId: 'pointOfContact',
label: 'Point of Contact', label: 'Point of Contact',
Icon: IconUser, Icon: IconUser,
position: 3, position: 3,

View File

@ -141,7 +141,7 @@ export const SettingsObjectFieldPreview = ({
fieldDefinition: { fieldDefinition: {
type: parseFieldType(fieldType as FieldMetadataType), type: parseFieldType(fieldType as FieldMetadataType),
Icon: FieldIcon, Icon: FieldIcon,
fieldId: '', fieldMetadataId: '',
label: fieldLabel, label: fieldLabel,
metadata: { fieldName: fieldName || 'new-field' }, metadata: { fieldName: fieldName || 'new-field' },
}, },

View File

@ -19,7 +19,7 @@ export enum AppPath {
OpportunitiesPage = '/opportunities', OpportunitiesPage = '/opportunities',
RecordTablePage = '/objects/:objectNamePlural', RecordTablePage = '/objects/:objectNamePlural',
RecordShowPage = '/object/:objectNameSingular/:objectId', RecordShowPage = '/object/:objectNameSingular/:objectMetadataId',
SettingsCatchAll = `/settings/*`, SettingsCatchAll = `/settings/*`,
DevelopersCatchAll = `/developers/*`, DevelopersCatchAll = `/developers/*`,

View File

@ -19,7 +19,7 @@ export const useBoardCardFields = () => {
) => { ) => {
setBoardCardFields((previousFields) => setBoardCardFields((previousFields) =>
previousFields.map((previousField) => previousFields.map((previousField) =>
previousField.fieldId === field.fieldId previousField.fieldMetadataId === field.fieldMetadataId
? { ...previousField, isVisible: !field.isVisible } ? { ...previousField, isVisible: !field.isVisible }
: previousField, : previousField,
), ),

View File

@ -12,5 +12,5 @@ export const boardCardFieldsByKeyScopedSelector = selectorFamily({
({ get }) => ({ get }) =>
get(boardCardFieldsScopedState(scopeId)).reduce< get(boardCardFieldsScopedState(scopeId)).reduce<
Record<string, BoardFieldDefinition<FieldMetadata>> Record<string, BoardFieldDefinition<FieldMetadata>>
>((result, field) => ({ ...result, [field.fieldId]: field }), {}), >((result, field) => ({ ...result, [field.fieldMetadataId]: field }), {}),
}); });

View File

@ -9,10 +9,10 @@ export const hiddenBoardCardFieldsScopedSelector = selectorFamily({
(scopeId: string) => (scopeId: string) =>
({ get }) => { ({ get }) => {
const fields = get(boardCardFieldsScopedState(scopeId)); const fields = get(boardCardFieldsScopedState(scopeId));
const fieldKeys = fields.map(({ fieldId }) => fieldId); const fieldKeys = fields.map(({ fieldMetadataId }) => fieldMetadataId);
const otherAvailableKeys = get( const otherAvailableKeys = get(
availableBoardCardFieldsScopedState(scopeId), availableBoardCardFieldsScopedState(scopeId),
).filter(({ fieldId }) => !fieldKeys.includes(fieldId)); ).filter(({ fieldMetadataId }) => !fieldKeys.includes(fieldMetadataId));
return [ return [
...fields.filter((field) => !field.isVisible), ...fields.filter((field) => !field.isVisible),

View File

@ -12,5 +12,5 @@ export const savedBoardCardFieldsByKeyFamilySelector = selectorFamily({
({ get }) => ({ get }) =>
get(savedBoardCardFieldsFamilyState(viewId)).reduce< get(savedBoardCardFieldsFamilyState(viewId)).reduce<
Record<string, BoardFieldDefinition<FieldMetadata>> Record<string, BoardFieldDefinition<FieldMetadata>>
>((result, field) => ({ ...result, [field.fieldId]: field }), {}), >((result, field) => ({ ...result, [field.fieldMetadataId]: field }), {}),
}); });

View File

@ -9,7 +9,7 @@ export const useFieldInitialValue = () => {
const fieldInitialValue = useRecoilValue( const fieldInitialValue = useRecoilValue(
entityFieldInitialValueFamilyState({ entityFieldInitialValueFamilyState({
fieldId: fieldDefinition.fieldId, fieldMetadataId: fieldDefinition.fieldMetadataId,
entityId, entityId,
}), }),
); );

View File

@ -10,7 +10,7 @@ export const useIsFieldEmpty = () => {
const isFieldEmpty = useRecoilValue( const isFieldEmpty = useRecoilValue(
isEntityFieldEmptyFamilySelector({ isEntityFieldEmptyFamilySelector({
fieldDefinition: { fieldDefinition: {
fieldId: fieldDefinition.fieldId, fieldMetadataId: fieldDefinition.fieldMetadataId,
label: fieldDefinition.label, label: fieldDefinition.label,
type: fieldDefinition.type, type: fieldDefinition.type,
metadata: fieldDefinition.metadata, metadata: fieldDefinition.metadata,

View File

@ -27,7 +27,7 @@ const meta: Meta = {
value={{ value={{
entityId: '', entityId: '',
fieldDefinition: { fieldDefinition: {
fieldId: 'date', fieldMetadataId: 'date',
label: 'Date', label: 'Date',
type: 'DATE', type: 'DATE',
metadata: { metadata: {

View File

@ -32,7 +32,7 @@ const meta: Meta = {
value={{ value={{
entityId: '', entityId: '',
fieldDefinition: { fieldDefinition: {
fieldId: 'double-text', fieldMetadataId: 'double-text',
label: 'Double-Text', label: 'Double-Text',
type: 'DOUBLE_TEXT', type: 'DOUBLE_TEXT',
metadata: { metadata: {

View File

@ -26,7 +26,7 @@ const meta: Meta = {
value={{ value={{
entityId: '', entityId: '',
fieldDefinition: { fieldDefinition: {
fieldId: 'email', fieldMetadataId: 'email',
label: 'Email', label: 'Email',
type: 'EMAIL', type: 'EMAIL',
metadata: { metadata: {

View File

@ -25,7 +25,7 @@ const meta: Meta = {
value={{ value={{
entityId: '', entityId: '',
fieldDefinition: { fieldDefinition: {
fieldId: 'money', fieldMetadataId: 'money',
label: 'Money', label: 'Money',
type: 'MONEY_AMOUNT', type: 'MONEY_AMOUNT',
metadata: { metadata: {

View File

@ -25,7 +25,7 @@ const meta: Meta = {
value={{ value={{
entityId: '', entityId: '',
fieldDefinition: { fieldDefinition: {
fieldId: 'number', fieldMetadataId: 'number',
label: 'Number', label: 'Number',
type: 'NUMBER', type: 'NUMBER',
metadata: { metadata: {

View File

@ -26,7 +26,7 @@ const meta: Meta = {
value={{ value={{
entityId: '', entityId: '',
fieldDefinition: { fieldDefinition: {
fieldId: 'phone', fieldMetadataId: 'phone',
label: 'Phone', label: 'Phone',
type: 'PHONE', type: 'PHONE',
metadata: { metadata: {

View File

@ -25,7 +25,7 @@ const meta: Meta = {
value={{ value={{
entityId: '', entityId: '',
fieldDefinition: { fieldDefinition: {
fieldId: 'text', fieldMetadataId: 'text',
label: 'Text', label: 'Text',
type: 'TEXT', type: 'TEXT',
metadata: { metadata: {

View File

@ -26,7 +26,7 @@ const meta: Meta = {
value={{ value={{
entityId: '', entityId: '',
fieldDefinition: { fieldDefinition: {
fieldId: 'URL', fieldMetadataId: 'URL',
label: 'URL', label: 'URL',
type: 'URL', type: 'URL',
metadata: { metadata: {

View File

@ -34,7 +34,7 @@ const BooleanFieldInputWithContext = ({
return ( return (
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'boolean', fieldMetadataId: 'boolean',
label: 'Boolean', label: 'Boolean',
type: 'BOOLEAN', type: 'BOOLEAN',
metadata: { metadata: {

View File

@ -44,7 +44,7 @@ const ChipFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'chip', fieldMetadataId: 'chip',
label: 'Chip', label: 'Chip',
type: 'CHIP', type: 'CHIP',
metadata: { metadata: {

View File

@ -44,7 +44,7 @@ const DateFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'date', fieldMetadataId: 'date',
label: 'Date', label: 'Date',
type: 'DATE', type: 'DATE',
metadata: { metadata: {

View File

@ -57,7 +57,7 @@ const DoubleTextChipFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'double-text-chip', fieldMetadataId: 'double-text-chip',
label: 'Double-Text-Chip', label: 'Double-Text-Chip',
type: 'DOUBLE_TEXT_CHIP', type: 'DOUBLE_TEXT_CHIP',
metadata: { metadata: {

View File

@ -55,7 +55,7 @@ const DoubleTextFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'double-text', fieldMetadataId: 'double-text',
label: 'Double-Text', label: 'Double-Text',
type: 'DOUBLE_TEXT', type: 'DOUBLE_TEXT',
metadata: { metadata: {

View File

@ -43,7 +43,7 @@ const EmailFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'email', fieldMetadataId: 'email',
label: 'Email', label: 'Email',
type: 'EMAIL', type: 'EMAIL',
metadata: { metadata: {

View File

@ -43,7 +43,7 @@ const MoneyFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'moneyAmount', fieldMetadataId: 'moneyAmount',
label: 'MoneyAmout', label: 'MoneyAmout',
type: 'MONEY_AMOUNT', type: 'MONEY_AMOUNT',
metadata: { metadata: {

View File

@ -43,7 +43,7 @@ const NumberFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'number', fieldMetadataId: 'number',
label: 'Number', label: 'Number',
type: 'NUMBER', type: 'NUMBER',
metadata: { metadata: {

View File

@ -43,7 +43,7 @@ const PhoneFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'phone', fieldMetadataId: 'phone',
label: 'Phone', label: 'Phone',
type: 'PHONE', type: 'PHONE',
metadata: { metadata: {

View File

@ -41,7 +41,7 @@ const ProbabilityFieldInputWithContext = ({
return ( return (
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'probability', fieldMetadataId: 'probability',
label: 'Probability', label: 'Probability',
type: 'PROBABILITY', type: 'PROBABILITY',
metadata: { metadata: {

View File

@ -46,7 +46,7 @@ const RelationFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'relation', fieldMetadataId: 'relation',
label: 'Relation', label: 'Relation',
type: 'RELATION', type: 'RELATION',
metadata: { metadata: {

View File

@ -43,7 +43,7 @@ const TextFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'text', fieldMetadataId: 'text',
label: 'Text', label: 'Text',
type: 'TEXT', type: 'TEXT',
metadata: { metadata: {

View File

@ -43,7 +43,7 @@ const URLFieldInputWithContext = ({
<div> <div>
<FieldContextProvider <FieldContextProvider
fieldDefinition={{ fieldDefinition={{
fieldId: 'url', fieldMetadataId: 'url',
label: 'URL', label: 'URL',
type: 'URL', type: 'URL',
metadata: { metadata: {

View File

@ -4,7 +4,7 @@ import { FieldInitialValue } from '../types/FieldInitialValue';
export const entityFieldInitialValueFamilyState = atomFamily< export const entityFieldInitialValueFamilyState = atomFamily<
FieldInitialValue | undefined, FieldInitialValue | undefined,
{ entityId: string; fieldId: string } { entityId: string; fieldMetadataId: string }
>({ >({
key: 'entityFieldInitialValueFamilyState', key: 'entityFieldInitialValueFamilyState',
default: undefined, default: undefined,

View File

@ -33,7 +33,7 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
}: { }: {
fieldDefinition: Pick< fieldDefinition: Pick<
FieldDefinition<FieldMetadata>, FieldDefinition<FieldMetadata>,
'type' | 'metadata' | 'fieldId' | 'label' 'type' | 'metadata' | 'fieldMetadataId' | 'label'
>; >;
entityId: string; entityId: string;
}) => { }) => {

View File

@ -5,7 +5,7 @@ import { FieldMetadata } from './FieldMetadata';
import { FieldType } from './FieldType'; import { FieldType } from './FieldType';
export type FieldDefinition<T extends FieldMetadata> = { export type FieldDefinition<T extends FieldMetadata> = {
fieldId: string; fieldMetadataId: string;
label: string; label: string;
Icon?: IconComponent; Icon?: IconComponent;
type: FieldType; type: FieldType;

View File

@ -14,7 +14,7 @@ export const ObjectFilterDropdownDateSearchInput = () => {
if (!filterDefinitionUsedInDropdown || !selectedOperandInDropdown) return; if (!filterDefinitionUsedInDropdown || !selectedOperandInDropdown) return;
selectFilter?.({ selectFilter?.({
fieldId: filterDefinitionUsedInDropdown.fieldId, fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
value: date.toISOString(), value: date.toISOString(),
operand: selectedOperandInDropdown, operand: selectedOperandInDropdown,
displayValue: date.toLocaleDateString(), displayValue: date.toLocaleDateString(),

View File

@ -42,7 +42,7 @@ export const ObjectFilterDropdownEntitySearchSelect = ({
selectFilter?.({ selectFilter?.({
displayValue: selectedEntity.name, displayValue: selectedEntity.name,
fieldId: filterDefinitionUsedInDropdown.fieldId, fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
operand: selectedOperandInDropdown, operand: selectedOperandInDropdown,
value: selectedEntity.id, value: selectedEntity.id,
displayAvatarUrl: selectedEntity.avatarUrl, displayAvatarUrl: selectedEntity.avatarUrl,
@ -72,7 +72,7 @@ export const ObjectFilterDropdownEntitySearchSelect = ({
selectFilter?.({ selectFilter?.({
displayValue: filterDefinitionUsedInDropdown.selectAllLabel, displayValue: filterDefinitionUsedInDropdown.selectAllLabel,
fieldId: filterDefinitionUsedInDropdown.fieldId, fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
operand: ViewFilterOperand.IsNotNull, operand: ViewFilterOperand.IsNotNull,
value: '', value: '',
definition: filterDefinitionUsedInDropdown, definition: filterDefinitionUsedInDropdown,

View File

@ -20,7 +20,7 @@ export const ObjectFilterDropdownNumberSearchInput = () => {
placeholder={filterDefinitionUsedInDropdown.label} placeholder={filterDefinitionUsedInDropdown.label}
onChange={(event: ChangeEvent<HTMLInputElement>) => { onChange={(event: ChangeEvent<HTMLInputElement>) => {
selectFilter?.({ selectFilter?.({
fieldId: filterDefinitionUsedInDropdown.fieldId, fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
value: event.target.value, value: event.target.value,
operand: selectedOperandInDropdown, operand: selectedOperandInDropdown,
displayValue: event.target.value, displayValue: event.target.value,

View File

@ -26,7 +26,7 @@ export const ObjectFilterDropdownOperandSelect = () => {
if (filterDefinitionUsedInDropdown && selectedFilter) { if (filterDefinitionUsedInDropdown && selectedFilter) {
selectFilter?.({ selectFilter?.({
fieldId: selectedFilter.fieldId, fieldMetadataId: selectedFilter.fieldMetadataId,
displayValue: selectedFilter.displayValue, displayValue: selectedFilter.displayValue,
operand: newOperand, operand: newOperand,
value: selectedFilter.value, value: selectedFilter.value,

View File

@ -26,7 +26,7 @@ export const ObjectFilterDropdownTextSearchInput = () => {
setObjectFilterDropdownSearchInput(event.target.value); setObjectFilterDropdownSearchInput(event.target.value);
selectFilter?.({ selectFilter?.({
fieldId: filterDefinitionUsedInDropdown.fieldId, fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
value: event.target.value, value: event.target.value,
operand: selectedOperandInDropdown, operand: selectedOperandInDropdown,
displayValue: event.target.value, displayValue: event.target.value,

View File

@ -3,7 +3,7 @@ import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { FilterDefinition } from './FilterDefinition'; import { FilterDefinition } from './FilterDefinition';
export type Filter = { export type Filter = {
fieldId: string; fieldMetadataId: string;
value: string; value: string;
displayValue: string; displayValue: string;
displayAvatarUrl?: string; displayAvatarUrl?: string;

View File

@ -3,7 +3,7 @@ import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { FilterType } from './FilterType'; import { FilterType } from './FilterType';
export type FilterDefinition = { export type FilterDefinition = {
fieldId: string; fieldMetadataId: string;
label: string; label: string;
Icon: IconComponent; Icon: IconComponent;
type: FilterType; type: FilterType;

View File

@ -1,5 +1,5 @@
import { FilterDefinition } from './FilterDefinition'; import { FilterDefinition } from './FilterDefinition';
export type FilterDefinitionByEntity<T> = FilterDefinition & { export type FilterDefinitionByEntity<T> = FilterDefinition & {
fieldId: keyof T; fieldMetadataId: keyof T;
}; };

View File

@ -18,7 +18,7 @@ export const turnFilterIntoWhereClause = (
switch (filter.operand) { switch (filter.operand) {
case ViewFilterOperand.IsNotNull: case ViewFilterOperand.IsNotNull:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
not: null, not: null,
}, },
}; };
@ -28,14 +28,14 @@ export const turnFilterIntoWhereClause = (
switch (filter.operand) { switch (filter.operand) {
case ViewFilterOperand.Contains: case ViewFilterOperand.Contains:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
contains: filter.value, contains: filter.value,
mode: QueryMode.Insensitive, mode: QueryMode.Insensitive,
}, },
}; };
case ViewFilterOperand.DoesNotContain: case ViewFilterOperand.DoesNotContain:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
not: { not: {
contains: filter.value, contains: filter.value,
mode: QueryMode.Insensitive, mode: QueryMode.Insensitive,
@ -51,13 +51,13 @@ export const turnFilterIntoWhereClause = (
switch (filter.operand) { switch (filter.operand) {
case ViewFilterOperand.GreaterThan: case ViewFilterOperand.GreaterThan:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
gte: parseFloat(filter.value), gte: parseFloat(filter.value),
}, },
}; };
case ViewFilterOperand.LessThan: case ViewFilterOperand.LessThan:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
lte: parseFloat(filter.value), lte: parseFloat(filter.value),
}, },
}; };
@ -70,13 +70,13 @@ export const turnFilterIntoWhereClause = (
switch (filter.operand) { switch (filter.operand) {
case ViewFilterOperand.GreaterThan: case ViewFilterOperand.GreaterThan:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
gte: filter.value, gte: filter.value,
}, },
}; };
case ViewFilterOperand.LessThan: case ViewFilterOperand.LessThan:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
lte: filter.value, lte: filter.value,
}, },
}; };
@ -89,13 +89,13 @@ export const turnFilterIntoWhereClause = (
switch (filter.operand) { switch (filter.operand) {
case ViewFilterOperand.Is: case ViewFilterOperand.Is:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
equals: filter.value, equals: filter.value,
}, },
}; };
case ViewFilterOperand.IsNot: case ViewFilterOperand.IsNot:
return { return {
[filter.fieldId]: { [filter.fieldMetadataId]: {
not: { equals: filter.value }, not: { equals: filter.value },
}, },
}; };

View File

@ -17,11 +17,11 @@ export const turnFiltersIntoWhereClauseV2 = (
filters.forEach((filter) => { filters.forEach((filter) => {
const correspondingField = fields.find( const correspondingField = fields.find(
(field) => field.id === filter.fieldId, (field) => field.id === filter.fieldMetadataId,
); );
if (!correspondingField) { if (!correspondingField) {
throw new Error( throw new Error(
`Could not find field ${filter.fieldId} in metadata object`, `Could not find field ${filter.fieldMetadataId} in metadata object`,
); );
} }

View File

@ -50,7 +50,7 @@ export const ObjectSortDropdownButton = ({
const handleAddSort = (selectedSortDefinition: SortDefinition) => { const handleAddSort = (selectedSortDefinition: SortDefinition) => {
toggleDropdown(); toggleDropdown();
onSortSelect?.({ onSortSelect?.({
fieldId: selectedSortDefinition.fieldId, fieldMetadataId: selectedSortDefinition.fieldMetadataId,
direction: selectedSortDirection, direction: selectedSortDirection,
definition: selectedSortDefinition, definition: selectedSortDefinition,
}); });

View File

@ -2,7 +2,7 @@ import { SortDefinition } from './SortDefinition';
import { SortDirection } from './SortDirection'; import { SortDirection } from './SortDirection';
export type Sort = { export type Sort = {
fieldId: string; fieldMetadataId: string;
direction: SortDirection; direction: SortDirection;
definition: SortDefinition; definition: SortDefinition;
}; };

View File

@ -3,7 +3,7 @@ import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { SortDirection } from './SortDirection'; import { SortDirection } from './SortDirection';
export type SortDefinition = { export type SortDefinition = {
fieldId: string; fieldMetadataId: string;
label: string; label: string;
Icon?: IconComponent; Icon?: IconComponent;
getOrderByTemplate?: (direction: SortDirection) => any[]; getOrderByTemplate?: (direction: SortDirection) => any[];

View File

@ -10,7 +10,7 @@ export const reduceSortsToOrderBy = (sorts: Sort[]): any[] =>
if (sort.definition.getOrderByTemplate) { if (sort.definition.getOrderByTemplate) {
return sort.definition.getOrderByTemplate(direction); return sort.definition.getOrderByTemplate(direction);
} else { } else {
return [{ [sort.definition.fieldId]: direction }]; return [{ [sort.definition.fieldMetadataId]: direction }];
} }
}) })
.flat(); .flat();

View File

@ -9,11 +9,11 @@ export const turnSortsIntoOrderByV2 = (
const sortsObject: Record<string, 'AscNullsFirst' | 'DescNullsLast'> = {}; const sortsObject: Record<string, 'AscNullsFirst' | 'DescNullsLast'> = {};
sorts.forEach((sort) => { sorts.forEach((sort) => {
const correspondingField = fields.find( const correspondingField = fields.find(
(field) => field.id === sort.fieldId, (field) => field.id === sort.fieldMetadataId,
); );
if (!correspondingField) { if (!correspondingField) {
throw new Error( throw new Error(
`Could not find field ${sort.fieldId} in metadata object`, `Could not find field ${sort.fieldMetadataId} in metadata object`,
); );
} }
const direction = const direction =

View File

@ -21,7 +21,7 @@ export const ColumnHeadWithDropdown = ({
primaryColumnKey, primaryColumnKey,
}: ColumnHeadWithDropdownProps) => { }: ColumnHeadWithDropdownProps) => {
return ( return (
<DropdownScope dropdownScopeId={column.fieldId + '-header'}> <DropdownScope dropdownScopeId={column.fieldMetadataId + '-header'}>
<Dropdown <Dropdown
clickableComponent={<ColumnHead column={column} />} clickableComponent={<ColumnHead column={column} />}
dropdownComponents={ dropdownComponents={
@ -34,7 +34,7 @@ export const ColumnHeadWithDropdown = ({
} }
dropdownOffset={{ x: -1 }} dropdownOffset={{ x: -1 }}
dropdownPlacement="bottom-start" dropdownPlacement="bottom-start"
dropdownHotkeyScope={{ scope: column.fieldId + '-header' }} dropdownHotkeyScope={{ scope: column.fieldMetadataId + '-header' }}
/> />
</DropdownScope> </DropdownScope>
); );

View File

@ -46,7 +46,7 @@ export const RecordTableColumnDropdownMenu = ({
handleColumnVisibilityChange(column); handleColumnVisibilityChange(column);
}; };
return column.fieldId === primaryColumnKey ? ( return column.fieldMetadataId === primaryColumnKey ? (
<></> <></>
) : ( ) : (
<DropdownMenuItemsContainer> <DropdownMenuItemsContainer>

View File

@ -156,7 +156,7 @@ export const RecordTableHeader = () => {
if (nextWidth !== tableColumnsByKey[resizedFieldKey].size) { if (nextWidth !== tableColumnsByKey[resizedFieldKey].size) {
const nextColumns = tableColumns.map((column) => const nextColumns = tableColumns.map((column) =>
column.fieldId === resizedFieldKey column.fieldMetadataId === resizedFieldKey
? { ...column, size: nextWidth } ? { ...column, size: nextWidth }
: column, : column,
); );
@ -194,11 +194,13 @@ export const RecordTableHeader = () => {
</th> </th>
{visibleTableColumns.map((column) => ( {visibleTableColumns.map((column) => (
<StyledColumnHeaderCell <StyledColumnHeaderCell
key={column.fieldId} key={column.fieldMetadataId}
isResizing={resizedFieldKey === column.fieldId} isResizing={resizedFieldKey === column.fieldMetadataId}
columnWidth={Math.max( columnWidth={Math.max(
tableColumnsByKey[column.fieldId].size + tableColumnsByKey[column.fieldMetadataId].size +
(resizedFieldKey === column.fieldId ? resizeFieldOffset : 0), (resizedFieldKey === column.fieldMetadataId
? resizeFieldOffset
: 0),
COLUMN_MIN_WIDTH, COLUMN_MIN_WIDTH,
)} )}
> >
@ -209,20 +211,21 @@ export const RecordTableHeader = () => {
isLastColumn={ isLastColumn={
column.position === visibleTableColumns.length - 1 column.position === visibleTableColumns.length - 1
} }
primaryColumnKey={primaryColumn?.fieldId || ''} primaryColumnKey={primaryColumn?.fieldMetadataId || ''}
/> />
</StyledColumnHeadContainer> </StyledColumnHeadContainer>
<StyledResizeHandler <StyledResizeHandler
className="cursor-col-resize" className="cursor-col-resize"
role="separator" role="separator"
onPointerDown={() => { onPointerDown={() => {
setResizedFieldKey(column.fieldId); setResizedFieldKey(column.fieldMetadataId);
}} }}
/> />
</StyledColumnHeaderCell> </StyledColumnHeaderCell>
))} ))}
{hiddenTableColumns.length > 0 && (
<StyledPlusIconHeaderCell> <StyledPlusIconHeaderCell>
{hiddenTableColumns.length > 0 && (
<DropdownScope <DropdownScope
dropdownScopeId={HIDDEN_TABLE_COLUMN_DROPDOWN_SCOPE_ID} dropdownScopeId={HIDDEN_TABLE_COLUMN_DROPDOWN_SCOPE_ID}
> >
@ -239,8 +242,8 @@ export const RecordTableHeader = () => {
}} }}
/> />
</DropdownScope> </DropdownScope>
</StyledPlusIconHeaderCell> )}
)} </StyledPlusIconHeaderCell>
</tr> </tr>
</StyledTableHead> </StyledTableHead>
); );

View File

@ -32,7 +32,7 @@ export const RecordTableHeaderPlusButtonContent = () => {
<DropdownMenuItemsContainer> <DropdownMenuItemsContainer>
{hiddenTableColumns.map((column) => ( {hiddenTableColumns.map((column) => (
<MenuItem <MenuItem
key={column.fieldId} key={column.fieldMetadataId}
iconButtons={[ iconButtons={[
{ {
Icon: IconPlus, Icon: IconPlus,

View File

@ -42,7 +42,7 @@ export const RecordTableRow = forwardRef<
.sort((columnA, columnB) => columnA.position - columnB.position) .sort((columnA, columnB) => columnA.position - columnB.position)
.map((column, columnIndex) => { .map((column, columnIndex) => {
return ( return (
<ColumnContext.Provider value={column} key={column.fieldId}> <ColumnContext.Provider value={column} key={column.fieldMetadataId}>
<RecordTableCell cellIndex={columnIndex} /> <RecordTableCell cellIndex={columnIndex} />
</ColumnContext.Provider> </ColumnContext.Provider>
); );

View File

@ -47,13 +47,14 @@ export const useTableColumns = () => {
viewField: Omit<ColumnDefinition<FieldMetadata>, 'size' | 'position'>, viewField: Omit<ColumnDefinition<FieldMetadata>, 'size' | 'position'>,
) => { ) => {
const isNewColumn = !tableColumns.some( const isNewColumn = !tableColumns.some(
(tableColumns) => tableColumns.fieldId === viewField.fieldId, (tableColumns) =>
tableColumns.fieldMetadataId === viewField.fieldMetadataId,
); );
if (isNewColumn) { if (isNewColumn) {
const newColumn = availableTableColumns.find( const newColumn = availableTableColumns.find(
(availableTableColumn) => (availableTableColumn) =>
availableTableColumn.fieldId === viewField.fieldId, availableTableColumn.fieldMetadataId === viewField.fieldMetadataId,
); );
if (!newColumn) return; if (!newColumn) return;
@ -65,7 +66,7 @@ export const useTableColumns = () => {
await handleColumnsChange(nextColumns); await handleColumnsChange(nextColumns);
} else { } else {
const nextColumns = tableColumns.map((previousColumn) => const nextColumns = tableColumns.map((previousColumn) =>
previousColumn.fieldId === viewField.fieldId previousColumn.fieldMetadataId === viewField.fieldMetadataId
? { ...previousColumn, isVisible: !viewField.isVisible } ? { ...previousColumn, isVisible: !viewField.isVisible }
: previousColumn, : previousColumn,
); );
@ -82,7 +83,8 @@ export const useTableColumns = () => {
column: ColumnDefinition<FieldMetadata>, column: ColumnDefinition<FieldMetadata>,
) => { ) => {
const currentColumnArrayIndex = visibleTableColumns.findIndex( const currentColumnArrayIndex = visibleTableColumns.findIndex(
(visibleColumn) => visibleColumn.fieldId === column.fieldId, (visibleColumn) =>
visibleColumn.fieldMetadataId === column.fieldMetadataId,
); );
const columns = handleColumnMove( const columns = handleColumnMove(

View File

@ -42,7 +42,7 @@ export const useTableCell = () => {
const [, setFieldInitialValue] = useRecoilState( const [, setFieldInitialValue] = useRecoilState(
entityFieldInitialValueFamilyState({ entityFieldInitialValueFamilyState({
entityId, entityId,
fieldId: fieldDefinition.fieldId, fieldMetadataId: fieldDefinition.fieldMetadataId,
}), }),
); );

View File

@ -9,10 +9,10 @@ export const hiddenTableColumnsScopedSelector = selectorFamily({
(scopeId: string) => (scopeId: string) =>
({ get }) => { ({ get }) => {
const columns = get(tableColumnsScopedState({ scopeId })); const columns = get(tableColumnsScopedState({ scopeId }));
const columnKeys = columns.map(({ fieldId }) => fieldId); const columnKeys = columns.map(({ fieldMetadataId }) => fieldMetadataId);
const otherAvailableColumns = get( const otherAvailableColumns = get(
availableTableColumnsScopedState({ scopeId }), availableTableColumnsScopedState({ scopeId }),
).filter(({ fieldId }) => !columnKeys.includes(fieldId)); ).filter(({ fieldMetadataId }) => !columnKeys.includes(fieldMetadataId));
return [ return [
...columns.filter((column) => !column.isVisible), ...columns.filter((column) => !column.isVisible),

View File

@ -12,5 +12,8 @@ export const savedTableColumnsByKeyFamilySelector = selectorFamily({
({ get }) => ({ get }) =>
get(savedTableColumnsFamilyState(viewId)).reduce< get(savedTableColumnsFamilyState(viewId)).reduce<
Record<string, ColumnDefinition<FieldMetadata>> Record<string, ColumnDefinition<FieldMetadata>>
>((result, column) => ({ ...result, [column.fieldId]: column }), {}), >(
(result, column) => ({ ...result, [column.fieldMetadataId]: column }),
{},
),
}); });

View File

@ -12,5 +12,8 @@ export const tableColumnsByKeyScopedSelector = selectorFamily({
({ get }) => ({ get }) =>
get(tableColumnsScopedState({ scopeId })).reduce< get(tableColumnsScopedState({ scopeId })).reduce<
Record<string, ColumnDefinition<FieldMetadata>> Record<string, ColumnDefinition<FieldMetadata>>
>((result, column) => ({ ...result, [column.fieldId]: column }), {}), >(
(result, column) => ({ ...result, [column.fieldMetadataId]: column }),
{},
),
}); });

View File

@ -11,12 +11,13 @@ export const visibleTableColumnsScopedSelector = selectorFamily({
const columns = get(tableColumnsScopedState({ scopeId })); const columns = get(tableColumnsScopedState({ scopeId }));
const availableColumnKeys = get( const availableColumnKeys = get(
availableTableColumnsScopedState({ scopeId }), availableTableColumnsScopedState({ scopeId }),
).map(({ fieldId }) => fieldId); ).map(({ fieldMetadataId }) => fieldMetadataId);
return [...columns] return [...columns]
.filter( .filter(
(column) => (column) =>
column.isVisible && availableColumnKeys.includes(column.fieldId), column.isVisible &&
availableColumnKeys.includes(column.fieldMetadataId),
) )
.sort((a, b) => a.position - b.position); .sort((a, b) => a.position - b.position);
}, },

View File

@ -126,12 +126,12 @@ export const ViewBarDetails = ({
{currentViewSorts?.map((sort) => { {currentViewSorts?.map((sort) => {
return ( return (
<SortOrFilterChip <SortOrFilterChip
key={sort.fieldId} key={sort.fieldMetadataId}
testId={sort.fieldId} testId={sort.fieldMetadataId}
labelValue={sort.definition.label} labelValue={sort.definition.label}
Icon={sort.direction === 'desc' ? IconArrowDown : IconArrowUp} Icon={sort.direction === 'desc' ? IconArrowDown : IconArrowUp}
isSort isSort
onRemove={() => removeViewSort(sort.fieldId)} onRemove={() => removeViewSort(sort.fieldMetadataId)}
/> />
); );
})} })}
@ -143,15 +143,15 @@ export const ViewBarDetails = ({
{currentViewFilters?.map((filter) => { {currentViewFilters?.map((filter) => {
return ( return (
<SortOrFilterChip <SortOrFilterChip
key={filter.fieldId} key={filter.fieldMetadataId}
testId={filter.fieldId} testId={filter.fieldMetadataId}
labelKey={filter.definition.label} labelKey={filter.definition.label}
labelValue={`${getOperandLabelShort(filter.operand)} ${ labelValue={`${getOperandLabelShort(filter.operand)} ${
filter.displayValue filter.displayValue
}`} }`}
Icon={filter.definition.Icon} Icon={filter.definition.Icon}
onRemove={() => { onRemove={() => {
removeViewFilter(filter.fieldId); removeViewFilter(filter.fieldMetadataId);
}} }}
/> />
); );

View File

@ -35,14 +35,14 @@ export const ViewBarEffect = () => {
useFindManyObjects({ useFindManyObjects({
objectNamePlural: 'viewsV2', objectNamePlural: 'viewsV2',
filter: { type: { eq: viewType }, objectId: { eq: viewObjectId } }, filter: { type: { eq: viewType }, objectMetadataId: { eq: viewObjectId } },
onCompleted: useRecoilCallback( onCompleted: useRecoilCallback(
({ snapshot, set }) => ({ snapshot, set }) =>
async (data: PaginatedObjectTypeResults<View>) => { async (data: PaginatedObjectTypeResults<View>) => {
const nextViews = data.edges.map((view) => ({ const nextViews = data.edges.map((view) => ({
id: view.node.id, id: view.node.id,
name: view.node.name, name: view.node.name,
objectId: view.node.objectId, objectMetadataId: view.node.objectMetadataId,
})); }));
const { viewsState } = getViewScopedStatesFromSnapshot({ const { viewsState } = getViewScopedStatesFromSnapshot({
@ -132,7 +132,8 @@ export const ViewBarEffect = () => {
const queriedViewFilters = data.edges const queriedViewFilters = data.edges
.map(({ node }) => { .map(({ node }) => {
const availableFilterDefinition = availableFilterDefinitions.find( const availableFilterDefinition = availableFilterDefinitions.find(
(filterDefinition) => filterDefinition.fieldId === node.fieldId, (filterDefinition) =>
filterDefinition.fieldMetadataId === node.fieldMetadataId,
); );
if (!availableFilterDefinition) return null; if (!availableFilterDefinition) return null;
@ -185,14 +186,14 @@ export const ViewBarEffect = () => {
const queriedViewSorts = data.edges const queriedViewSorts = data.edges
.map(({ node }) => { .map(({ node }) => {
const availableSortDefinition = availableSortDefinitions.find( const availableSortDefinition = availableSortDefinitions.find(
(sort) => sort.fieldId === node.fieldId, (sort) => sort.fieldMetadataId === node.fieldMetadataId,
); );
if (!availableSortDefinition) return null; if (!availableSortDefinition) return null;
return { return {
id: node.id, id: node.id,
fieldId: node.fieldId, fieldMetadataId: node.fieldMetadataId,
direction: node.direction, direction: node.direction,
definition: availableSortDefinition, definition: availableSortDefinition,
}; };

View File

@ -97,12 +97,12 @@ export const ViewFieldsVisibilityDropdownSection = ({
.sort((a, b) => a.position - b.position) .sort((a, b) => a.position - b.position)
.map((field, index) => ( .map((field, index) => (
<DraggableItem <DraggableItem
key={field.fieldId} key={field.fieldMetadataId}
draggableId={field.fieldId} draggableId={field.fieldMetadataId}
index={index + 1} index={index + 1}
itemComponent={ itemComponent={
<MenuItemDraggable <MenuItemDraggable
key={field.fieldId} key={field.fieldMetadataId}
LeftIcon={field.Icon} LeftIcon={field.Icon}
iconButtons={getIconButtons(index + 1, field)} iconButtons={getIconButtons(index + 1, field)}
isTooltipOpen={openToolTipIndex === index + 1} isTooltipOpen={openToolTipIndex === index + 1}
@ -120,7 +120,7 @@ export const ViewFieldsVisibilityDropdownSection = ({
) : ( ) : (
fields.map((field, index) => ( fields.map((field, index) => (
<MenuItem <MenuItem
key={field.fieldId} key={field.fieldMetadataId}
LeftIcon={field.Icon} LeftIcon={field.Icon}
iconButtons={getIconButtons(index, field)} iconButtons={getIconButtons(index, field)}
isTooltipOpen={openToolTipIndex === index} isTooltipOpen={openToolTipIndex === index}

View File

@ -40,7 +40,7 @@ export const useViewFields = (viewScopeId: string) => {
mutation: createOneMutation, mutation: createOneMutation,
variables: { variables: {
input: { input: {
fieldId: viewField.fieldId, fieldMetadataId: viewField.fieldMetadataId,
viewId: viewIdToPersist, viewId: viewIdToPersist,
isVisible: viewField.isVisible, isVisible: viewField.isVisible,
size: viewField.size, size: viewField.size,
@ -76,18 +76,18 @@ export const useViewFields = (viewScopeId: string) => {
}; };
const viewFieldsToCreate = viewFieldsToPersist.filter( const viewFieldsToCreate = viewFieldsToPersist.filter(
(viewField) => !savedViewFieldsByKey[viewField.fieldId], (viewField) => !savedViewFieldsByKey[viewField.fieldMetadataId],
); );
const viewFieldsToUpdate = viewFieldsToPersist.filter( const viewFieldsToUpdate = viewFieldsToPersist.filter(
(viewFieldToPersit) => (viewFieldToPersit) =>
savedViewFieldsByKey[viewFieldToPersit.fieldId] && savedViewFieldsByKey[viewFieldToPersit.fieldMetadataId] &&
(savedViewFieldsByKey[viewFieldToPersit.fieldId].size !== (savedViewFieldsByKey[viewFieldToPersit.fieldMetadataId].size !==
viewFieldToPersit.size || viewFieldToPersit.size ||
savedViewFieldsByKey[viewFieldToPersit.fieldId].position !== savedViewFieldsByKey[viewFieldToPersit.fieldMetadataId]
viewFieldToPersit.position || .position !== viewFieldToPersit.position ||
savedViewFieldsByKey[viewFieldToPersit.fieldId].isVisible !== savedViewFieldsByKey[viewFieldToPersit.fieldMetadataId]
viewFieldToPersit.isVisible), .isVisible !== viewFieldToPersit.isVisible),
); );
await _createViewFields(viewFieldsToCreate); await _createViewFields(viewFieldsToCreate);

View File

@ -53,7 +53,7 @@ export const useViewFilters = (viewScopeId: string) => {
mutation: createOneMutation, mutation: createOneMutation,
variables: { variables: {
input: { input: {
fieldId: viewFilter.fieldId, fieldMetadataId: viewFilter.fieldMetadataId,
viewId: viewId ?? currentViewId, viewId: viewId ?? currentViewId,
value: viewFilter.value, value: viewFilter.value,
displayValue: viewFilter.displayValue, displayValue: viewFilter.displayValue,
@ -102,19 +102,23 @@ export const useViewFilters = (viewScopeId: string) => {
}; };
const filtersToCreate = currentViewFilters.filter( const filtersToCreate = currentViewFilters.filter(
(filter) => !savedViewFiltersByKey[filter.fieldId], (filter) => !savedViewFiltersByKey[filter.fieldMetadataId],
); );
await createViewFilters(filtersToCreate); await createViewFilters(filtersToCreate);
const filtersToUpdate = currentViewFilters.filter( const filtersToUpdate = currentViewFilters.filter(
(filter) => (filter) =>
savedViewFiltersByKey[filter.fieldId] && savedViewFiltersByKey[filter.fieldMetadataId] &&
(savedViewFiltersByKey[filter.fieldId].operand !== filter.operand || (savedViewFiltersByKey[filter.fieldMetadataId].operand !==
savedViewFiltersByKey[filter.fieldId].value !== filter.value), filter.operand ||
savedViewFiltersByKey[filter.fieldMetadataId].value !==
filter.value),
); );
await updateViewFilters(filtersToUpdate); await updateViewFilters(filtersToUpdate);
const filterKeys = currentViewFilters.map((filter) => filter.fieldId); const filterKeys = currentViewFilters.map(
(filter) => filter.fieldMetadataId,
);
const filterKeysToDelete = Object.keys(savedViewFiltersByKey).filter( const filterKeysToDelete = Object.keys(savedViewFiltersByKey).filter(
(previousFilterKey) => !filterKeys.includes(previousFilterKey), (previousFilterKey) => !filterKeys.includes(previousFilterKey),
); );
@ -159,12 +163,13 @@ export const useViewFilters = (viewScopeId: string) => {
} }
const existingSavedFilterId = const existingSavedFilterId =
savedViewFiltersByKey[filterToUpsert.fieldId]?.id; savedViewFiltersByKey[filterToUpsert.fieldMetadataId]?.id;
set(currentViewFiltersState, (filters) => { set(currentViewFiltersState, (filters) => {
const newViewFilters = produce(filters, (filtersDraft) => { const newViewFilters = produce(filters, (filtersDraft) => {
const existingFilterIndex = filtersDraft.findIndex( const existingFilterIndex = filtersDraft.findIndex(
(filter) => filter.fieldId === filterToUpsert.fieldId, (filter) =>
filter.fieldMetadataId === filterToUpsert.fieldMetadataId,
); );
if (existingFilterIndex === -1) { if (existingFilterIndex === -1) {
@ -189,7 +194,7 @@ export const useViewFilters = (viewScopeId: string) => {
const removeViewFilter = useRecoilCallback( const removeViewFilter = useRecoilCallback(
({ snapshot, set }) => ({ snapshot, set }) =>
(fieldId: string) => { (fieldMetadataId: string) => {
const { currentViewId, currentViewFilters, onViewFiltersChange } = const { currentViewId, currentViewFilters, onViewFiltersChange } =
getViewScopedStateValuesFromSnapshot({ getViewScopedStateValuesFromSnapshot({
snapshot, snapshot,
@ -201,7 +206,7 @@ export const useViewFilters = (viewScopeId: string) => {
} }
const newViewFilters = currentViewFilters.filter((filter) => { const newViewFilters = currentViewFilters.filter((filter) => {
return filter.fieldId !== fieldId; return filter.fieldMetadataId !== fieldMetadataId;
}); });
set(currentViewFiltersState, newViewFilters); set(currentViewFiltersState, newViewFilters);
onViewFiltersChange?.(newViewFilters); onViewFiltersChange?.(newViewFilters);

View File

@ -54,7 +54,7 @@ export const useViewSorts = (viewScopeId: string) => {
mutation: createOneMutation, mutation: createOneMutation,
variables: { variables: {
input: { input: {
fieldId: viewSort.fieldId, fieldMetadataId: viewSort.fieldMetadataId,
viewId: viewId ?? currentViewId, viewId: viewId ?? currentViewId,
direction: viewSort.direction, direction: viewSort.direction,
}, },
@ -99,19 +99,20 @@ export const useViewSorts = (viewScopeId: string) => {
}; };
const sortsToCreate = currentViewSorts.filter( const sortsToCreate = currentViewSorts.filter(
(sort) => !savedViewSortsByKey[sort.fieldId], (sort) => !savedViewSortsByKey[sort.fieldMetadataId],
); );
await createViewSorts(sortsToCreate); await createViewSorts(sortsToCreate);
const sortsToUpdate = currentViewSorts.filter( const sortsToUpdate = currentViewSorts.filter(
(sort) => (sort) =>
savedViewSortsByKey[sort.fieldId] && savedViewSortsByKey[sort.fieldMetadataId] &&
savedViewSortsByKey[sort.fieldId].direction !== sort.direction, savedViewSortsByKey[sort.fieldMetadataId].direction !==
sort.direction,
); );
await updateViewSorts(sortsToUpdate); await updateViewSorts(sortsToUpdate);
const sortKeys = currentViewSorts.map((sort) => sort.fieldId); const sortKeys = currentViewSorts.map((sort) => sort.fieldMetadataId);
const sortKeysToDelete = Object.keys(savedViewSortsByKey).filter( const sortKeysToDelete = Object.keys(savedViewSortsByKey).filter(
(previousSortKey) => !sortKeys.includes(previousSortKey), (previousSortKey) => !sortKeys.includes(previousSortKey),
); );
@ -155,12 +156,12 @@ export const useViewSorts = (viewScopeId: string) => {
} }
const existingSavedSortId = const existingSavedSortId =
savedViewSortsByKey[sortToUpsert.fieldId]?.id; savedViewSortsByKey[sortToUpsert.fieldMetadataId]?.id;
set(currentViewSortsState, (sorts) => { set(currentViewSortsState, (sorts) => {
const newViewSorts = produce(sorts, (sortsDraft) => { const newViewSorts = produce(sorts, (sortsDraft) => {
const existingSortIndex = sortsDraft.findIndex( const existingSortIndex = sortsDraft.findIndex(
(sort) => sort.fieldId === sortToUpsert.fieldId, (sort) => sort.fieldMetadataId === sortToUpsert.fieldMetadataId,
); );
if (existingSortIndex === -1) { if (existingSortIndex === -1) {
@ -182,7 +183,7 @@ export const useViewSorts = (viewScopeId: string) => {
const removeViewSort = useRecoilCallback( const removeViewSort = useRecoilCallback(
({ snapshot, set }) => ({ snapshot, set }) =>
(fieldId: string) => { (fieldMetadataId: string) => {
const { currentViewId, onViewSortsChange, currentViewSorts } = const { currentViewId, onViewSortsChange, currentViewSorts } =
getViewScopedStateValuesFromSnapshot({ getViewScopedStateValuesFromSnapshot({
snapshot, snapshot,
@ -194,7 +195,7 @@ export const useViewSorts = (viewScopeId: string) => {
} }
const newViewSorts = currentViewSorts.filter((filter) => { const newViewSorts = currentViewSorts.filter((filter) => {
return filter.fieldId !== fieldId; return filter.fieldMetadataId !== fieldMetadataId;
}); });
set(currentViewSortsState, newViewSorts); set(currentViewSortsState, newViewSorts);
onViewSortsChange?.(newViewSorts); onViewSortsChange?.(newViewSorts);

View File

@ -34,7 +34,7 @@ export const useViews = (scopeId: string) => {
variables: { variables: {
input: { input: {
...view, ...view,
objectId: viewObjectId, objectMetadataId: viewObjectId,
type: viewType, type: viewType,
}, },
}, },

View File

@ -25,7 +25,7 @@ export const savedViewFieldByKeyScopedFamilySelector = selectorFamily({
familyKey: viewId, familyKey: viewId,
}), }),
).reduce<Record<string, ViewField>>( ).reduce<Record<string, ViewField>>(
(result, column) => ({ ...result, [column.fieldId]: column }), (result, column) => ({ ...result, [column.fieldMetadataId]: column }),
{}, {},
); );
}, },

View File

@ -18,7 +18,7 @@ export const savedViewFiltersByKeyScopedFamilySelector = selectorFamily({
familyKey: viewId, familyKey: viewId,
}), }),
).reduce<Record<string, ViewFilter>>( ).reduce<Record<string, ViewFilter>>(
(result, filter) => ({ ...result, [filter.fieldId]: filter }), (result, filter) => ({ ...result, [filter.fieldMetadataId]: filter }),
{}, {},
); );
}, },

View File

@ -18,7 +18,7 @@ export const savedViewSortsByKeyScopedFamilySelector = selectorFamily({
familyKey: viewId, familyKey: viewId,
}), }),
).reduce<Record<string, ViewSort>>( ).reduce<Record<string, ViewSort>>(
(result, sort) => ({ ...result, [sort.fieldId]: sort }), (result, sort) => ({ ...result, [sort.fieldMetadataId]: sort }),
{}, {},
); );
}, },

View File

@ -1 +1 @@
export type View = { id: string; name: string; objectId: string }; export type View = { id: string; name: string; objectMetadataId: string };

View File

@ -3,7 +3,7 @@ import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinitio
export type ViewField = { export type ViewField = {
id: string; id: string;
fieldId: string; fieldMetadataId: string;
position: number; position: number;
isVisible: boolean; isVisible: boolean;
size: number; size: number;

View File

@ -4,7 +4,7 @@ import { ViewFilterOperand } from './ViewFilterOperand';
export type ViewFilter = { export type ViewFilter = {
id?: string; id?: string;
fieldId: string; fieldMetadataId: string;
operand: ViewFilterOperand; operand: ViewFilterOperand;
value: string; value: string;
displayValue: string; displayValue: string;

View File

@ -3,7 +3,7 @@ import { SortDirection } from '@/ui/object/object-sort-dropdown/types/SortDirect
export type ViewSort = { export type ViewSort = {
id?: string; id?: string;
fieldId: string; fieldMetadataId: string;
direction: SortDirection; direction: SortDirection;
definition: SortDefinition; definition: SortDefinition;
}; };

View File

@ -8,7 +8,7 @@ export const mapColumnDefinitionsToViewFields = (
): ViewField[] => { ): ViewField[] => {
return columnDefinitions.map((columnDefinition) => ({ return columnDefinitions.map((columnDefinition) => ({
id: columnDefinition.viewFieldId || '', id: columnDefinition.viewFieldId || '',
fieldId: columnDefinition.fieldId, fieldMetadataId: columnDefinition.fieldMetadataId,
position: columnDefinition.position, position: columnDefinition.position,
size: columnDefinition.size, size: columnDefinition.size,
isVisible: columnDefinition.isVisible ?? true, isVisible: columnDefinition.isVisible ?? true,

View File

@ -11,12 +11,12 @@ export const mapViewFieldsToBoardFieldDefinitions = (
return viewFields return viewFields
.map((viewField) => { .map((viewField) => {
const correspondingFieldMetadata = fieldsMetadata.find( const correspondingFieldMetadata = fieldsMetadata.find(
({ fieldId }) => viewField.fieldId === fieldId, ({ fieldMetadataId }) => viewField.fieldMetadataId === fieldMetadataId,
); );
return correspondingFieldMetadata return correspondingFieldMetadata
? { ? {
fieldId: viewField.fieldId, fieldMetadataId: viewField.fieldMetadataId,
label: correspondingFieldMetadata.label, label: correspondingFieldMetadata.label,
metadata: correspondingFieldMetadata.metadata, metadata: correspondingFieldMetadata.metadata,
entityChipDisplayMapper: entityChipDisplayMapper:

View File

@ -11,12 +11,12 @@ export const mapViewFieldsToColumnDefinitions = (
return viewFields return viewFields
.map((viewField) => { .map((viewField) => {
const correspondingFieldMetadata = fieldsMetadata.find( const correspondingFieldMetadata = fieldsMetadata.find(
({ fieldId }) => viewField.fieldId === fieldId, ({ fieldMetadataId }) => viewField.fieldMetadataId === fieldMetadataId,
); );
return correspondingFieldMetadata return correspondingFieldMetadata
? { ? {
fieldId: viewField.fieldId, fieldMetadataId: viewField.fieldMetadataId,
label: correspondingFieldMetadata.label, label: correspondingFieldMetadata.label,
metadata: correspondingFieldMetadata.metadata, metadata: correspondingFieldMetadata.metadata,
entityChipDisplayMapper: entityChipDisplayMapper:

View File

@ -7,7 +7,7 @@ export const mapViewFiltersToFilters = (
): Filter[] => { ): Filter[] => {
return viewFilters.map((viewFilter) => { return viewFilters.map((viewFilter) => {
return { return {
fieldId: viewFilter.fieldId, fieldMetadataId: viewFilter.fieldMetadataId,
value: viewFilter.value, value: viewFilter.value,
displayValue: viewFilter.displayValue, displayValue: viewFilter.displayValue,
operand: viewFilter.operand, operand: viewFilter.operand,

View File

@ -5,7 +5,7 @@ import { ViewSort } from '../types/ViewSort';
export const mapViewSortsToSorts = (viewSorts: ViewSort[]): Sort[] => { export const mapViewSortsToSorts = (viewSorts: ViewSort[]): Sort[] => {
return viewSorts.map((viewSort) => { return viewSorts.map((viewSort) => {
return { return {
fieldId: viewSort.fieldId, fieldMetadataId: viewSort.fieldMetadataId,
direction: viewSort.direction, direction: viewSort.direction,
definition: viewSort.definition, definition: viewSort.definition,
}; };

View File

@ -93,10 +93,11 @@ export const CompanyShow = () => {
{companyShowFieldDefinitions.map((fieldDefinition) => { {companyShowFieldDefinitions.map((fieldDefinition) => {
return ( return (
<FieldContext.Provider <FieldContext.Provider
key={company.id + fieldDefinition.fieldId} key={company.id + fieldDefinition.fieldMetadataId}
value={{ value={{
entityId: company.id, entityId: company.id,
recoilScopeId: company.id + fieldDefinition.fieldId, recoilScopeId:
company.id + fieldDefinition.fieldMetadataId,
fieldDefinition, fieldDefinition,
useUpdateEntityMutation: useUpdateOneCompanyMutation, useUpdateEntityMutation: useUpdateOneCompanyMutation,
hotkeyScope: InlineCellHotkeyScope.InlineCell, hotkeyScope: InlineCellHotkeyScope.InlineCell,

View File

@ -22,7 +22,7 @@ import { User } from '~/generated/graphql';
export const companyShowFieldDefinitions: FieldDefinition<FieldMetadata>[] = [ export const companyShowFieldDefinitions: FieldDefinition<FieldMetadata>[] = [
{ {
fieldId: 'domainName', fieldMetadataId: 'domainName',
label: 'Domain name', label: 'Domain name',
Icon: IconLink, Icon: IconLink,
type: 'URL', type: 'URL',
@ -32,7 +32,7 @@ export const companyShowFieldDefinitions: FieldDefinition<FieldMetadata>[] = [
}, },
} satisfies FieldDefinition<FieldURLMetadata>, } satisfies FieldDefinition<FieldURLMetadata>,
{ {
fieldId: 'accountOwner', fieldMetadataId: 'accountOwner',
label: 'Account owner', label: 'Account owner',
Icon: IconUserCircle, Icon: IconUserCircle,
type: 'RELATION', type: 'RELATION',
@ -49,7 +49,7 @@ export const companyShowFieldDefinitions: FieldDefinition<FieldMetadata>[] = [
}, },
} satisfies FieldDefinition<FieldRelationMetadata>, } satisfies FieldDefinition<FieldRelationMetadata>,
{ {
fieldId: 'employees', fieldMetadataId: 'employees',
label: 'Employees', label: 'Employees',
Icon: IconUsers, Icon: IconUsers,
type: 'NUMBER', type: 'NUMBER',
@ -59,7 +59,7 @@ export const companyShowFieldDefinitions: FieldDefinition<FieldMetadata>[] = [
}, },
} satisfies FieldDefinition<FieldNumberMetadata>, } satisfies FieldDefinition<FieldNumberMetadata>,
{ {
fieldId: 'address', fieldMetadataId: 'address',
label: 'Address', label: 'Address',
Icon: IconMap, Icon: IconMap,
type: 'TEXT', type: 'TEXT',
@ -69,7 +69,7 @@ export const companyShowFieldDefinitions: FieldDefinition<FieldMetadata>[] = [
}, },
} satisfies FieldDefinition<FieldTextMetadata>, } satisfies FieldDefinition<FieldTextMetadata>,
{ {
fieldId: 'idealCustomerProfile', fieldMetadataId: 'idealCustomerProfile',
label: 'ICP', label: 'ICP',
Icon: IconTarget, Icon: IconTarget,
type: 'BOOLEAN', type: 'BOOLEAN',
@ -78,7 +78,7 @@ export const companyShowFieldDefinitions: FieldDefinition<FieldMetadata>[] = [
}, },
} satisfies FieldDefinition<FieldBooleanMetadata>, } satisfies FieldDefinition<FieldBooleanMetadata>,
{ {
fieldId: 'xUrl', fieldMetadataId: 'xUrl',
label: 'Twitter', label: 'Twitter',
Icon: IconBrandX, Icon: IconBrandX,
type: 'URL', type: 'URL',
@ -88,7 +88,7 @@ export const companyShowFieldDefinitions: FieldDefinition<FieldMetadata>[] = [
}, },
} satisfies FieldDefinition<FieldURLMetadata>, } satisfies FieldDefinition<FieldURLMetadata>,
{ {
fieldId: 'createdAt', fieldMetadataId: 'createdAt',
label: 'Created at', label: 'Created at',
Icon: IconCalendar, Icon: IconCalendar,
type: 'DATE', type: 'DATE',

View File

@ -13,37 +13,37 @@ import { Company } from '~/generated/graphql';
export const companyTableFilterDefinitions: FilterDefinitionByEntity<Company>[] = export const companyTableFilterDefinitions: FilterDefinitionByEntity<Company>[] =
[ [
{ {
fieldId: 'name', fieldMetadataId: 'name',
label: 'Name', label: 'Name',
Icon: IconBuildingSkyscraper, Icon: IconBuildingSkyscraper,
type: 'TEXT', type: 'TEXT',
}, },
{ {
fieldId: 'employees', fieldMetadataId: 'employees',
label: 'Employees', label: 'Employees',
Icon: IconUsers, Icon: IconUsers,
type: 'NUMBER', type: 'NUMBER',
}, },
{ {
fieldId: 'domainName', fieldMetadataId: 'domainName',
label: 'URL', label: 'URL',
Icon: IconLink, Icon: IconLink,
type: 'TEXT', type: 'TEXT',
}, },
{ {
fieldId: 'address', fieldMetadataId: 'address',
label: 'Address', label: 'Address',
Icon: IconMap, Icon: IconMap,
type: 'TEXT', type: 'TEXT',
}, },
{ {
fieldId: 'createdAt', fieldMetadataId: 'createdAt',
label: 'Created at', label: 'Created at',
Icon: IconCalendarEvent, Icon: IconCalendarEvent,
type: 'DATE', type: 'DATE',
}, },
{ {
fieldId: 'accountOwnerId', fieldMetadataId: 'accountOwnerId',
label: 'Account owner', label: 'Account owner',
Icon: IconUser, Icon: IconUser,
type: 'ENTITY', type: 'ENTITY',

View File

@ -9,27 +9,27 @@ import { SortDefinition } from '@/ui/object/object-sort-dropdown/types/SortDefin
export const companyTableSortDefinitions: SortDefinition[] = [ export const companyTableSortDefinitions: SortDefinition[] = [
{ {
fieldId: 'name', fieldMetadataId: 'name',
label: 'Name', label: 'Name',
Icon: IconBuildingSkyscraper, Icon: IconBuildingSkyscraper,
}, },
{ {
fieldId: 'employees', fieldMetadataId: 'employees',
label: 'Employees', label: 'Employees',
Icon: IconUsers, Icon: IconUsers,
}, },
{ {
fieldId: 'domainName', fieldMetadataId: 'domainName',
label: 'Url', label: 'Url',
Icon: IconLink, Icon: IconLink,
}, },
{ {
fieldId: 'address', fieldMetadataId: 'address',
label: 'Address', label: 'Address',
Icon: IconMap, Icon: IconMap,
}, },
{ {
fieldId: 'createdAt', fieldMetadataId: 'createdAt',
label: 'Creation', label: 'Creation',
Icon: IconCalendarEvent, Icon: IconCalendarEvent,
}, },

View File

@ -13,26 +13,26 @@ import { FilterDropdownPeopleSearchSelect } from '../../../modules/people/compon
export const opportunityBoardFilterDefinitions: FilterDefinitionByEntity<PipelineProgress>[] = export const opportunityBoardFilterDefinitions: FilterDefinitionByEntity<PipelineProgress>[] =
[ [
{ {
fieldId: 'amount', fieldMetadataId: 'amount',
label: 'Amount', label: 'Amount',
Icon: IconCurrencyDollar, Icon: IconCurrencyDollar,
type: 'NUMBER', type: 'NUMBER',
}, },
{ {
fieldId: 'closeDate', fieldMetadataId: 'closeDate',
label: 'Close date', label: 'Close date',
Icon: IconCalendarEvent, Icon: IconCalendarEvent,
type: 'DATE', type: 'DATE',
}, },
{ {
fieldId: 'companyId', fieldMetadataId: 'companyId',
label: 'Company', label: 'Company',
Icon: IconBuildingSkyscraper, Icon: IconBuildingSkyscraper,
type: 'ENTITY', type: 'ENTITY',
entitySelectComponent: <FilterDropdownCompanySearchSelect />, entitySelectComponent: <FilterDropdownCompanySearchSelect />,
}, },
{ {
fieldId: 'pointOfContactId', fieldMetadataId: 'pointOfContactId',
label: 'Point of contact', label: 'Point of contact',
Icon: IconUser, Icon: IconUser,
type: 'ENTITY', type: 'ENTITY',

Some files were not shown because too many files have changed in this diff Show More