feat: saved board views and richer board filters
The board now filters by text, type, priority and unassigned tickets as well. Any combination can be saved as a named view, private or shared with the project, and opened again with one click. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -22,10 +22,29 @@ export function matchesFilter(
|
||||
filter: BoardFilter | null,
|
||||
): boolean {
|
||||
if (!filter) return true;
|
||||
if (filter.assigneeId && issue.assignee?.id !== filter.assigneeId)
|
||||
if (filter.unassigned) {
|
||||
if (issue.assignee) return false;
|
||||
} else if (filter.assigneeId && issue.assignee?.id !== filter.assigneeId)
|
||||
return false;
|
||||
if (filter.releaseId && issue.release?.id !== filter.releaseId) return false;
|
||||
if (filter.area && issue.area !== filter.area) return false;
|
||||
if (filter.types?.length && !filter.types.includes(issue.type)) return false;
|
||||
if (filter.priorities?.length && !filter.priorities.includes(issue.priority))
|
||||
return false;
|
||||
if (
|
||||
filter.labels?.length &&
|
||||
!filter.labels.every((l) => issue.labels.includes(l.toLowerCase()))
|
||||
)
|
||||
return false;
|
||||
// Cards carry no description: a change that matched only by it drops off
|
||||
// until the next load, which is the safe side.
|
||||
const text = filter.search?.trim().toLowerCase();
|
||||
if (
|
||||
text &&
|
||||
!issue.key.toLowerCase().includes(text) &&
|
||||
!issue.title.toLowerCase().includes(text)
|
||||
)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user