+ {tasks.map((t: any) => (
+
+
{t.title}
+ {t.fields ? (
+
+ {t.fields.map((f: any, i: number) => (
+ {f.label}={f.value}
+ ))}
+
+ ) : null}
+
+ ))}
+
+ ),
+}));
+
+const ttData = [
+ {
+ id: '1',
+ name: 'Task 1',
+ start_date: '2024-01-01',
+ end_date: '2024-01-10',
+ // A `date` field and a `datetime` field — the two schema-typed branches.
+ due_date: '2024-01-05',
+ reviewed_at: '2024-01-05T08:30:00',
+ },
+];
+
+function makeDataSource(): DataSource {
+ return {
+ find: vi.fn().mockResolvedValue({ data: ttData }),
+ findOne: vi.fn(),
+ create: vi.fn(),
+ update: vi.fn(),
+ delete: vi.fn(),
+ getObjectSchema: vi.fn().mockResolvedValue({
+ fields: {
+ name: { type: 'text' },
+ start_date: { type: 'date' },
+ end_date: { type: 'date' },
+ due_date: { type: 'date', label: 'Due' },
+ reviewed_at: { type: 'datetime', label: 'Reviewed' },
+ },
+ }),
+ } as any;
+}
+
+function renderSession(language: string) {
+ const schema: any = {
+ type: 'gantt',
+ gantt: {
+ titleField: 'name',
+ startDateField: 'start_date',
+ endDateField: 'end_date',
+ tooltipFields: ['due_date', 'reviewed_at'],
+ },
+ data: { provider: 'object', object: 'tasks' },
+ };
+ return render(
+