Skip to content

Commit ba56945

Browse files
committed
fix: enhance title field detection in ObjectKanban to support auto-detection from schema and object definition
1 parent b3590b6 commit ba56945

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

apps/console/src/__tests__/KanbanTodoDisplay.test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ describe('ObjectKanban Todo Example Display', () => {
1818

1919
const todoSchema = {
2020
name: 'todo_task',
21+
titleFormat: '{subject}', // Added titleFormat
2122
fields: {
2223
priority: {
2324
type: 'rating',
@@ -52,9 +53,8 @@ describe('ObjectKanban Todo Example Display', () => {
5253
schema={{
5354
type: 'kanban',
5455
objectName: 'todo_task',
55-
groupBy: 'priority',
56-
// Critical: Must map the card title to the correct field (subject)
57-
cardTitle: 'subject'
56+
groupBy: 'priority'
57+
// removed explicit cardTitle to test auto-detection
5858
} as any}
5959
dataSource={mockDataSource as any}
6060
/>

packages/plugin-kanban/src/ObjectKanban.tsx

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,23 @@ export const ObjectKanban: React.FC<ObjectKanbanProps> = ({
100100

101101
// Support cardTitle property from schema (passed by ObjectView)
102102
// @ts-ignore - cardTitle might not be in KanbanSchema type definition yet
103-
const titleField = schema.cardTitle || (schema as any).titleField || 'name';
103+
let titleField = schema.cardTitle || (schema as any).titleField;
104+
105+
// Fallback: Try to infer from object definition
106+
if (!titleField && objectDef) {
107+
// 1. Check for standard NAME_FIELD_KEY
108+
if (objectDef.NAME_FIELD_KEY) {
109+
titleField = objectDef.NAME_FIELD_KEY;
110+
}
111+
// 2. Check for titleFormat like "{subject}"
112+
else if (objectDef.titleFormat) {
113+
const match = /\{(.+?)\}/.exec(objectDef.titleFormat);
114+
if (match) titleField = match[1];
115+
}
116+
}
117+
118+
// Default to 'name'
119+
titleField = titleField || 'name';
104120

105121
return rawData.map(item => ({
106122
...item,
@@ -109,7 +125,7 @@ export const ObjectKanban: React.FC<ObjectKanbanProps> = ({
109125
// Map title
110126
title: item[titleField] || item.title || 'Untitled',
111127
}));
112-
}, [rawData, schema]);
128+
}, [rawData, schema, objectDef]);
113129

114130
// Generate columns if missing but groupBy is present
115131
const effectiveColumns = useMemo(() => {

0 commit comments

Comments
 (0)