Skip to content

Commit

Permalink
Add family specific filters
Browse files Browse the repository at this point in the history
  • Loading branch information
omar-selo committed Jan 17, 2025
1 parent 0229ca8 commit 9bd73dc
Showing 1 changed file with 73 additions and 3 deletions.
76 changes: 73 additions & 3 deletions frontend/lib/models/filters.dart
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,16 @@ Filters<Artefact> createEmptyArtefactFilters(FamilyName family) {
switch (family) {
case FamilyName.image:
return emptyImageFilters;
default:
return emptyArtefactFilters;
case FamilyName.snap:
return emptySnapFilters;
case FamilyName.deb:
return emptyDebFilters;
case FamilyName.charm:
return emptyCharmFilters;
}
}

final emptyArtefactFilters = Filters<Artefact>(
final emptyCharmFilters = Filters<Artefact>(
filters: [
Filter<Artefact>(
name: 'Assignee',
Expand All @@ -116,6 +120,72 @@ final emptyArtefactFilters = Filters<Artefact>(
return 'Within a week';
},
),
Filter<Artefact>(
name: 'Risk',
extractOption: (artefact) => artefact.stage.name,
),
],
);

final emptyDebFilters = Filters<Artefact>(
filters: [
Filter<Artefact>(
name: 'Assignee',
extractOption: (artefact) => artefact.assignee?.name,
),
Filter<Artefact>(
name: 'Status',
extractOption: (artefact) => artefact.status.name,
),
Filter<Artefact>(
name: 'Due date',
extractOption: (artefact) {
final now = DateTime.now();
final dueDate = artefact.dueDate;

if (dueDate == null) return 'No due date';
if (dueDate.isBefore(now)) return 'Overdue';

final daysDueIn = now.difference(dueDate).inDays;
if (daysDueIn >= 7) return 'More than a week';
return 'Within a week';
},
),
Filter<Artefact>(
name: 'Series',
extractOption: (artefact) => artefact.series,
),
],
);

final emptySnapFilters = Filters<Artefact>(
filters: [
Filter<Artefact>(
name: 'Assignee',
extractOption: (artefact) => artefact.assignee?.name,
),
Filter<Artefact>(
name: 'Status',
extractOption: (artefact) => artefact.status.name,
),
Filter<Artefact>(
name: 'Due date',
extractOption: (artefact) {
final now = DateTime.now();
final dueDate = artefact.dueDate;

if (dueDate == null) return 'No due date';
if (dueDate.isBefore(now)) return 'Overdue';

final daysDueIn = now.difference(dueDate).inDays;
if (daysDueIn >= 7) return 'More than a week';
return 'Within a week';
},
),
Filter<Artefact>(
name: 'Risk',
extractOption: (artefact) => artefact.stage.name,
),
],
);

Expand Down

0 comments on commit 9bd73dc

Please sign in to comment.