fix: improve kanban board filtering (#919)
- Render only the selected status column when status chips are active - Add status color treatments and default assignee normalization - Reuse profile avatars for Kanban card assignee tags - Cover status filtering, default assignee labels, and avatar rendering
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
export const DEFAULT_KANBAN_ASSIGNEE = 'default'
|
||||
|
||||
export interface KanbanAssigneeSummary {
|
||||
name: string
|
||||
counts?: Record<string, number> | null
|
||||
}
|
||||
|
||||
export function assigneeTaskTotal(assignee: KanbanAssigneeSummary): number {
|
||||
return Object.values(assignee.counts || {}).reduce((sum, count) => sum + count, 0)
|
||||
}
|
||||
|
||||
export function withDefaultAssignee<T extends KanbanAssigneeSummary>(
|
||||
assignees: T[],
|
||||
byAssignee: Record<string, number> = {},
|
||||
): KanbanAssigneeSummary[] {
|
||||
const defaultCount = byAssignee[DEFAULT_KANBAN_ASSIGNEE] || 0
|
||||
const hasDefault = assignees.some(assignee => assignee.name === DEFAULT_KANBAN_ASSIGNEE)
|
||||
const normalized = assignees.map(assignee => {
|
||||
if (assignee.name !== DEFAULT_KANBAN_ASSIGNEE || assignee.counts) return assignee
|
||||
return { ...assignee, counts: { total: defaultCount } }
|
||||
})
|
||||
if (hasDefault) return normalized
|
||||
return [
|
||||
{ name: DEFAULT_KANBAN_ASSIGNEE, counts: { total: defaultCount } },
|
||||
...normalized,
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user