Timelineactivites-views-seeder (#16103)

seeder for Timelineactivites views

Fixes https://github.com/twentyhq/core-team-issues/issues/1904


<img width="850" height="348" alt="CleanShot 2025-11-26 at 17 30 32"
src="https://github.com/user-attachments/assets/41a311c1-0b60-4201-885f-d0e8400dd6d5"
/>
This commit is contained in:
Guillim
2025-11-26 18:00:06 +01:00
committed by GitHub
parent 60e69f92d9
commit 7f441d741b
4 changed files with 147 additions and 2 deletions
@@ -1400,7 +1400,28 @@ export const STANDARD_OBJECTS = {
TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.linkedObjectMetadataId,
},
},
views: {},
views: {
allTimelineActivities: {
universalIdentifier: '20202020-b101-4b01-8b01-ba5cc01aa001',
viewFields: {
name: {
universalIdentifier: '20202020-bf01-4b01-8b01-ba5cc01aa011',
},
happensAt: {
universalIdentifier: '20202020-bf01-4b01-8b01-ba5cc01aa012',
},
properties: {
universalIdentifier: '20202020-bf01-4b01-8b01-ba5cc01aa019',
},
workspaceMember: {
universalIdentifier: '20202020-bf01-4b01-8b01-ba5cc01aa013',
},
linkedRecordCachedName: {
universalIdentifier: '20202020-bf01-4b01-8b01-ba5cc01aa017',
},
},
},
},
},
view: {
universalIdentifier: STANDARD_OBJECT_IDS.view,
@@ -28,6 +28,7 @@ import { peopleAllView } from 'src/engine/workspace-manager/standard-objects-pre
import { tasksAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-all.view';
import { tasksAssignedToMeView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me';
import { tasksByStatusView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-by-status.view';
import { timelineActivitiesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/timeline-activities-all.view';
import { workflowRunsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-runs-all.view';
import { workflowVersionsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view';
import { workflowsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workflows-all.view';
@@ -66,6 +67,7 @@ export const prefillCoreViews = async ({
messagesAllView,
messageThreadsAllView,
calendarEventsAllView,
timelineActivitiesAllView,
].map((seeder) =>
seeder({
objectMetadataItems,
@@ -0,0 +1,121 @@
import { msg } from '@lingui/core/macro';
import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata';
import { v4 } from 'uuid';
import { STANDARD_OBJECTS } from 'src/engine/core-modules/application/constants/standard-object.constant';
import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type';
import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ViewOpenRecordInType } from 'src/engine/metadata-modules/view/types/view-open-record-in-type.type';
import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface';
import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE';
import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
export const timelineActivitiesAllView = ({
objectMetadataItems,
useCoreNaming = false,
twentyStandardFlatApplication,
}: {
objectMetadataItems: ObjectMetadataEntity[];
useCoreNaming?: boolean;
twentyStandardFlatApplication: FlatApplication;
}): ViewDefinition => {
const timelineActivityObjectMetadata = objectMetadataItems.find(
(object) => object.standardId === STANDARD_OBJECT_IDS.timelineActivity,
);
if (!timelineActivityObjectMetadata) {
throw new Error('TimelineActivity object metadata not found');
}
const viewUniversalIdentifier =
STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities
.universalIdentifier;
return {
id: v4(),
universalIdentifier: viewUniversalIdentifier,
applicationId: twentyStandardFlatApplication.id,
name: useCoreNaming
? msg`All {objectLabelPlural}`
: 'All Timeline Activities',
objectMetadataId: timelineActivityObjectMetadata.id,
type: 'table',
key: 'INDEX',
position: 0,
icon: 'IconList',
openRecordIn: ViewOpenRecordInType.RECORD_PAGE,
kanbanFieldMetadataId: '',
filters: [],
fields: [
{
fieldMetadataId:
timelineActivityObjectMetadata.fields.find(
(field) =>
field.standardId === TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.name,
)?.id ?? '',
position: 0,
isVisible: true,
size: DEFAULT_VIEW_FIELD_SIZE,
universalIdentifier:
STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities
.viewFields.name.universalIdentifier,
},
{
fieldMetadataId:
timelineActivityObjectMetadata.fields.find(
(field) =>
field.standardId ===
TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.happensAt,
)?.id ?? '',
position: 1,
isVisible: true,
size: 150,
universalIdentifier:
STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities
.viewFields.happensAt.universalIdentifier,
},
{
fieldMetadataId:
timelineActivityObjectMetadata.fields.find(
(field) =>
field.standardId ===
TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.properties,
)?.id ?? '',
position: 2,
isVisible: true,
size: 200,
universalIdentifier:
STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities
.viewFields.properties.universalIdentifier,
},
{
fieldMetadataId:
timelineActivityObjectMetadata.fields.find(
(field) =>
field.standardId ===
TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.workspaceMember,
)?.id ?? '',
position: 3,
isVisible: true,
size: 150,
universalIdentifier:
STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities
.viewFields.workspaceMember.universalIdentifier,
},
{
fieldMetadataId:
timelineActivityObjectMetadata.fields.find(
(field) =>
field.standardId ===
TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.linkedRecordCachedName,
)?.id ?? '',
position: 4,
isVisible: true,
size: 200,
universalIdentifier:
STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities
.viewFields.linkedRecordCachedName.universalIdentifier,
},
],
};
};
@@ -1,6 +1,6 @@
import { msg } from '@lingui/core/macro';
import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types';
import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata';
import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
@@ -36,6 +36,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
labelPlural: msg`Timeline Activities`,
description: msg`Aggregated / filtered event to be displayed on the timeline`,
icon: STANDARD_OBJECT_ICONS.timelineActivity,
labelIdentifierStandardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.name,
})
@WorkspaceIsSystem()
@WorkspaceIsNotAuditLogged()