diff --git a/server/routes/task-crud-list.routes.ts b/server/routes/task-crud-list.routes.ts index 6836767..5416ead 100644 --- a/server/routes/task-crud-list.routes.ts +++ b/server/routes/task-crud-list.routes.ts @@ -267,6 +267,30 @@ export function registerTaskCrudListRoutes(router: ReturnType }; + let numericFieldId: number | null = null; + let numericFieldIsDate = false; + if (sortColumn.startsWith('field_')) { + const fieldId = parseInt(sortColumn.replace('field_', '')); + const field = formFields.find((f) => f.id === fieldId); + if (field && ['date', 'datetime', 'number'].includes(field.type)) { + numericFieldId = fieldId; + numericFieldIsDate = field.type === 'date' || field.type === 'datetime'; + } + } + const toSortNumber = (t: TaskWithFV): number | null => { + const v = t.fieldValues?.[numericFieldId!]; + if (v === undefined || v === null || v === '') return null; + if (numericFieldIsDate) { + const ts = new Date(String(v)).getTime(); + return isNaN(ts) ? null : ts; + } + const n = Number(String(v).replace(/\s/g, '')); + return isNaN(n) ? null : n; + }; + tasks = [...tasks].sort((a, b) => { if (DATE_COLS.has(sortColumn)) { const _a = (a as Record)[sortColumn]; @@ -275,6 +299,15 @@ export function registerTaskCrudListRoutes(router: ReturnType