Replace status tabs with multi-select checkbox dropdown, default to Open + In Progress
Build & Push / Test (client) (push) Successful in 29s
Build & Push / Test (server) (push) Successful in 26s
Build & Push / Build Client (push) Successful in 1m9s
Build & Push / Build Server (push) Successful in 1m17s

Status filtering now supports selecting multiple statuses via a dropdown with checkboxes.
Backend updated to accept comma-separated status values using Prisma `in` operator.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-22 22:52:13 -04:00
parent cfe7ad56ff
commit c6ec47a8fc
4 changed files with 61 additions and 33 deletions
+8 -1
View File
@@ -6,7 +6,14 @@ function whereConditions(query: string, filters: TicketFilters): Prisma.Sql[] {
const conds: Prisma.Sql[] = [
Prisma.sql`"searchVector" @@ plainto_tsquery('english', ${query})`,
];
if (filters.status) conds.push(Prisma.sql`"status" = ${filters.status}::"TicketStatus"`);
if (filters.status) {
const statuses = filters.status.split(',');
if (statuses.length === 1) {
conds.push(Prisma.sql`"status" = ${statuses[0]}::"TicketStatus"`);
} else {
conds.push(Prisma.sql`"status" IN (${Prisma.join(statuses.map(s => Prisma.sql`${s}::"TicketStatus"`))})`);
}
}
if (filters.severity !== undefined) conds.push(Prisma.sql`"severity" = ${filters.severity}`);
if (filters.assigneeId) conds.push(Prisma.sql`"assigneeId" = ${filters.assigneeId}`);
if (filters.createdById) conds.push(Prisma.sql`"createdById" = ${filters.createdById}`);
+6 -1
View File
@@ -80,7 +80,12 @@ export function findByIdOrDisplay(idOrDisplay: string) {
export function buildTicketWhere(filters: TicketFilters): Prisma.TicketWhereInput {
const where: Prisma.TicketWhereInput = {};
if (filters.status) where.status = filters.status as Prisma.TicketWhereInput['status'];
if (filters.status) {
const statuses = filters.status.split(',');
where.status = statuses.length === 1
? (statuses[0] as Prisma.TicketWhereInput['status'])
: { in: statuses as string[] } as Prisma.TicketWhereInput['status'];
}
if (filters.severity) where.severity = filters.severity;
if (filters.assigneeId) where.assigneeId = filters.assigneeId;
if (filters.createdById) where.createdById = filters.createdById;