fix: treat NA and CANCELLED as terminal statuses in task list UI
The 'Assigned' tab, overdue count, and card filters were only excluding COMPLETED tasks. NA and CANCELLED tasks with old due dates were showing as overdue. Now all three terminal statuses are excluded from active views.
This commit is contained in:
parent
f81817c0f6
commit
33ec8b2799
1 changed files with 10 additions and 9 deletions
|
|
@ -532,17 +532,18 @@ export function TasksClient({ initialTasks, currentUserId, isPrivileged, users }
|
|||
const week2End = new Date(now); week2End.setDate(now.getDate() + 14); week2End.setHours(23,59,59,999)
|
||||
const week3End = new Date(now); week3End.setDate(now.getDate() + 21); week3End.setHours(23,59,59,999)
|
||||
|
||||
const overdue = tasks.filter((t) => new Date(t.dueDate) < now && t.status !== 'COMPLETED')
|
||||
const dueToday = tasks.filter((t) => { const d = new Date(t.dueDate); return d >= now && d <= week1End && t.status !== 'COMPLETED' })
|
||||
const due1Week = tasks.filter((t) => { const d = new Date(t.dueDate); return d > week1End && d <= week2End && t.status !== 'COMPLETED' })
|
||||
const due2Weeks = tasks.filter((t) => { const d = new Date(t.dueDate); return d > week1End && d <= week3End && t.status !== 'COMPLETED' })
|
||||
const isTerminal = (s: string) => s === 'COMPLETED' || s === 'NA' || s === 'CANCELLED'
|
||||
const overdue = tasks.filter((t) => new Date(t.dueDate) < now && !isTerminal(t.status))
|
||||
const dueToday = tasks.filter((t) => { const d = new Date(t.dueDate); return d >= now && d <= week1End && !isTerminal(t.status) })
|
||||
const due1Week = tasks.filter((t) => { const d = new Date(t.dueDate); return d > week1End && d <= week2End && !isTerminal(t.status) })
|
||||
const due2Weeks = tasks.filter((t) => { const d = new Date(t.dueDate); return d > week1End && d <= week3End && !isTerminal(t.status) })
|
||||
|
||||
const applyCardFilter = (base: Task[]) => {
|
||||
if (!cardFilter) return base
|
||||
if (cardFilter === 'overdue') return base.filter((t) => new Date(t.dueDate) < now && t.status !== 'COMPLETED')
|
||||
if (cardFilter === 'today') return base.filter((t) => { const d = new Date(t.dueDate); return d >= now && d <= week1End && t.status !== 'COMPLETED' })
|
||||
if (cardFilter === '1week') return base.filter((t) => { const d = new Date(t.dueDate); return d > week1End && d <= week2End && t.status !== 'COMPLETED' })
|
||||
if (cardFilter === '2weeks') return base.filter((t) => { const d = new Date(t.dueDate); return d > week1End && d <= week3End && t.status !== 'COMPLETED' })
|
||||
if (cardFilter === 'overdue') return base.filter((t) => new Date(t.dueDate) < now && !isTerminal(t.status))
|
||||
if (cardFilter === 'today') return base.filter((t) => { const d = new Date(t.dueDate); return d >= now && d <= week1End && !isTerminal(t.status) })
|
||||
if (cardFilter === '1week') return base.filter((t) => { const d = new Date(t.dueDate); return d > week1End && d <= week2End && !isTerminal(t.status) })
|
||||
if (cardFilter === '2weeks') return base.filter((t) => { const d = new Date(t.dueDate); return d > week1End && d <= week3End && !isTerminal(t.status) })
|
||||
if (cardFilter === 'custom' && customFrom && customTo) {
|
||||
const from = new Date(customFrom); from.setHours(0,0,0,0)
|
||||
const to = new Date(customTo); to.setHours(23,59,59,999)
|
||||
|
|
@ -552,7 +553,7 @@ export function TasksClient({ initialTasks, currentUserId, isPrivileged, users }
|
|||
}
|
||||
|
||||
const baseVisible =
|
||||
filter === 'assigned' ? tasks.filter((t) => t.status !== 'COMPLETED') :
|
||||
filter === 'assigned' ? tasks.filter((t) => !isTerminal(t.status)) :
|
||||
filter === 'completed' ? tasks.filter((t) => t.status === 'COMPLETED') :
|
||||
tasks
|
||||
const visibleTasks = applyCardFilter(baseVisible)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue