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:
2026-10-08 14:14:38 +02:00
parent 0606f53026
commit 298383f19f
46 changed files with 2922 additions and 26 deletions

View File

@@ -7,3 +7,4 @@ export * from './activity.read-model';
export * from './project-stats.read-model';
export * from './analytics.read-model';
export * from './notification.read-model';
export * from './saved-filter.read-model';

View File

@@ -0,0 +1,29 @@
import { IssuePriority } from '../issue/issue.enums';
import { UserRefReadModel } from './user-ref.read-model';
/** What a saved view of the board narrows the tickets to. Empty: everything. */
export class SavedFilterCriteriaReadModel {
/** Ticket type ids of the project's settings. */
types?: string[];
areas?: string[];
priorities?: IssuePriority[];
assigneeId?: string | null;
unassigned?: boolean;
releaseId?: string | null;
labels?: string[];
search?: string | null;
}
/**
* A named set of board filters. Private to whoever saved it, or shared with
* the whole project. Preferences, not history: kept outside the event store.
*/
export class SavedFilterReadModel {
id!: string;
projectId!: string;
owner!: UserRefReadModel;
name!: string;
shared!: boolean;
criteria!: SavedFilterCriteriaReadModel;
createdAt!: string;
}