4f60e23003
approvedSnapshot is only populated at approval time; pending and disapproved sheets had null snapshot so the card always displayed 0m · 0 tasks. Now totalSecs/taskCount are passed as nullable params from the parent; the card renders — when no snapshot is available yet. Also accept camelCase 'daySheets' URL param in parseProgrammerTasksTab alongside the existing hyphenated 'day-sheets' spelling. Co-Authored-By: claude-flow <ruv@ruv.net>
67 lines
1.8 KiB
Dart
67 lines
1.8 KiB
Dart
/// Tab enumeration and helpers for the Programmer Tasks list screen.
|
|
///
|
|
/// This-slice tabs (Task 10):
|
|
/// Admin: [monitor, mine, all]
|
|
/// Non-admin: [mine, all]
|
|
///
|
|
/// approvals and daySheets are deferred to later slices.
|
|
enum ProgrammerTasksTab { monitor, approvals, mine, all, daySheets }
|
|
|
|
/// Returns the ordered tab list for the current role.
|
|
///
|
|
/// Admin: [monitor, approvals, mine, all]
|
|
/// Programmer: [mine, all, daySheets]
|
|
List<ProgrammerTasksTab> programmerTasksTabsFor({required bool isStrictAdmin}) {
|
|
if (isStrictAdmin) {
|
|
return [
|
|
ProgrammerTasksTab.monitor,
|
|
ProgrammerTasksTab.approvals,
|
|
ProgrammerTasksTab.mine,
|
|
ProgrammerTasksTab.all,
|
|
];
|
|
}
|
|
return [
|
|
ProgrammerTasksTab.mine,
|
|
ProgrammerTasksTab.all,
|
|
ProgrammerTasksTab.daySheets,
|
|
];
|
|
}
|
|
|
|
/// Parses a URL query-parameter value to a [ProgrammerTasksTab].
|
|
///
|
|
/// Valid values: 'monitor', 'approvals', 'mine', 'all', 'day-sheets'.
|
|
/// Returns null for unrecognised or null input.
|
|
ProgrammerTasksTab? parseProgrammerTasksTab(String? q) {
|
|
switch (q) {
|
|
case 'monitor':
|
|
return ProgrammerTasksTab.monitor;
|
|
case 'approvals':
|
|
return ProgrammerTasksTab.approvals;
|
|
case 'mine':
|
|
return ProgrammerTasksTab.mine;
|
|
case 'all':
|
|
return ProgrammerTasksTab.all;
|
|
case 'day-sheets':
|
|
case 'daySheets':
|
|
return ProgrammerTasksTab.daySheets;
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// Human-readable tab label for display in [TabBar].
|
|
String programmerTasksTabLabel(ProgrammerTasksTab t) {
|
|
switch (t) {
|
|
case ProgrammerTasksTab.monitor:
|
|
return 'Monitor';
|
|
case ProgrammerTasksTab.approvals:
|
|
return 'Approvals';
|
|
case ProgrammerTasksTab.mine:
|
|
return 'Mine';
|
|
case ProgrammerTasksTab.all:
|
|
return 'All';
|
|
case ProgrammerTasksTab.daySheets:
|
|
return 'Day Sheets';
|
|
}
|
|
}
|