Dedicated Assigned to me Tasks Tab
This commit is contained in:
parent
546c254326
commit
7c3a5a1cef
|
|
@ -151,9 +151,7 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
||||||
dateRange: _selectedDateRange,
|
dateRange: _selectedDateRange,
|
||||||
latestAssigneeByTaskId: latestAssigneeByTaskId,
|
latestAssigneeByTaskId: latestAssigneeByTaskId,
|
||||||
);
|
);
|
||||||
final summaryDashboard = _StatusSummaryRow(
|
|
||||||
counts: _taskStatusCounts(filteredTasks),
|
|
||||||
);
|
|
||||||
final filterHeader = Wrap(
|
final filterHeader = Wrap(
|
||||||
spacing: 12,
|
spacing: 12,
|
||||||
runSpacing: 12,
|
runSpacing: 12,
|
||||||
|
|
@ -241,17 +239,21 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
final listBody = TasQAdaptiveList<Task>(
|
|
||||||
items: filteredTasks,
|
// reusable helper for rendering a list given a subset of tasks
|
||||||
|
Widget makeList(List<Task> tasksList) {
|
||||||
|
final summary = _StatusSummaryRow(
|
||||||
|
counts: _taskStatusCounts(tasksList),
|
||||||
|
);
|
||||||
|
return TasQAdaptiveList<Task>(
|
||||||
|
items: tasksList,
|
||||||
onRowTap: (task) => context.go('/tasks/${task.id}'),
|
onRowTap: (task) => context.go('/tasks/${task.id}'),
|
||||||
summaryDashboard: summaryDashboard,
|
summaryDashboard: summary,
|
||||||
filterHeader: filterHeader,
|
filterHeader: filterHeader,
|
||||||
onRequestRefresh: () {
|
onRequestRefresh: () {
|
||||||
// For server-side pagination, update the query provider
|
// For server-side pagination, update the query provider
|
||||||
ref.read(tasksQueryProvider.notifier).state = const TaskQuery(
|
ref.read(tasksQueryProvider.notifier).state =
|
||||||
offset: 0,
|
const TaskQuery(offset: 0, limit: 50);
|
||||||
limit: 50,
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
columns: [
|
columns: [
|
||||||
|
|
@ -322,7 +324,9 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
||||||
],
|
],
|
||||||
mobileTileBuilder: (context, task, actions) {
|
mobileTileBuilder: (context, task, actions) {
|
||||||
final ticketId = task.ticketId;
|
final ticketId = task.ticketId;
|
||||||
final ticket = ticketId == null ? null : ticketById[ticketId];
|
final ticket = ticketId == null
|
||||||
|
? null
|
||||||
|
: ticketById[ticketId];
|
||||||
final officeId = ticket?.officeId ?? task.officeId;
|
final officeId = ticket?.officeId ?? task.officeId;
|
||||||
final officeName = officeId == null
|
final officeName = officeId == null
|
||||||
? 'Unassigned office'
|
? 'Unassigned office'
|
||||||
|
|
@ -332,7 +336,10 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
||||||
latestAssigneeByTaskId[task.id],
|
latestAssigneeByTaskId[task.id],
|
||||||
);
|
);
|
||||||
final subtitle = _buildSubtitle(officeName, task.status);
|
final subtitle = _buildSubtitle(officeName, task.status);
|
||||||
final hasMention = _hasTaskMention(notificationsAsync, task);
|
final hasMention = _hasTaskMention(
|
||||||
|
notificationsAsync,
|
||||||
|
task,
|
||||||
|
);
|
||||||
final typingState = ref.watch(
|
final typingState = ref.watch(
|
||||||
typingIndicatorProvider(task.id),
|
typingIndicatorProvider(task.id),
|
||||||
);
|
);
|
||||||
|
|
@ -397,6 +404,16 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
final currentUserId = profileAsync.valueOrNull?.id;
|
||||||
|
final myTasks = currentUserId == null
|
||||||
|
? <Task>[]
|
||||||
|
: filteredTasks
|
||||||
|
.where(
|
||||||
|
(t) => latestAssigneeByTaskId[t.id] == currentUserId,
|
||||||
|
)
|
||||||
|
.toList();
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
|
@ -415,7 +432,29 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Expanded(child: listBody),
|
Expanded(
|
||||||
|
child: DefaultTabController(
|
||||||
|
length: 2,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
const TabBar(
|
||||||
|
tabs: [
|
||||||
|
Tab(text: 'My Tasks'),
|
||||||
|
Tab(text: 'All Tasks'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: TabBarView(
|
||||||
|
children: [
|
||||||
|
makeList(myTasks),
|
||||||
|
makeList(filteredTasks),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user