-
+
+
+
-
-
{{ taskDef.name }}
+
+
{{ taskDef.name }}
-
+
@if (taskDef.isGroupTask()) {
group
+ } @else {
+
person
}
{{ gradeNames[taskDef.targetGrade] }} Task
- @if (hasTasks && taskForTaskDef(taskDef)) {
-
{{ taskForTaskDef(taskDef).status }}
- }
-
-
-
+
+ @if (hasTasks && taskForTaskDef(taskDef)) {
+
+ }
}
+ } @empty {
+
No tasks to display
}
diff --git a/src/app/units/task-viewer/directives/unit-task-list/unit-task-list.component.scss b/src/app/units/task-viewer/directives/unit-task-list/unit-task-list.component.scss
index 635ffef224..9914e6c47c 100644
--- a/src/app/units/task-viewer/directives/unit-task-list/unit-task-list.component.scss
+++ b/src/app/units/task-viewer/directives/unit-task-list/unit-task-list.component.scss
@@ -72,7 +72,7 @@ $my-palette: mat.m2-define-palette($md-formatif);
cursor: pointer;
}
-.mat-mdc-list-item .item-content.selected {
+.mat-mdc-list-item.selected {
background-color: var(--background-gray);
}
diff --git a/src/app/units/task-viewer/directives/unit-task-list/unit-task-list.component.ts b/src/app/units/task-viewer/directives/unit-task-list/unit-task-list.component.ts
index 9ff21d0c78..7e314da9d2 100644
--- a/src/app/units/task-viewer/directives/unit-task-list/unit-task-list.component.ts
+++ b/src/app/units/task-viewer/directives/unit-task-list/unit-task-list.component.ts
@@ -3,6 +3,7 @@ import {Grade} from 'src/app/api/models/grade';
import {TaskDefinition, Task} from 'src/app/api/models/doubtfire-model';
import {TaskDefinitionNamePipe} from 'src/app/common/filters/task-definition-name.pipe';
import {BehaviorSubject} from 'rxjs';
+import {StateService, UIRouter} from '@uirouter/core';
@Component({
selector: 'f-unit-task-list',
@@ -25,6 +26,11 @@ export class FUnitTaskListComponent implements OnInit {
taskDefinitionNamePipe = new TaskDefinitionNamePipe();
protected gradeNames: string[] = Grade.GRADES;
+ constructor(
+ private router: UIRouter,
+ private stateService: StateService,
+ ) {}
+
applyFilters() {
this.filteredTaskDefinitions = this.taskDefinitionNamePipe.transform(
this.taskDefinitions,
@@ -44,6 +50,12 @@ export class FUnitTaskListComponent implements OnInit {
return this.tasks.find((task) => task.definition.id === taskDef?.id);
}
+ /*
+ TODO: There's still an issue where loading the route for the first time will cause child components (like task-dashboard) to load trigger OnInit and OnChanges twice...
+ Causing duplicate queries to submission_details and task comments.
+ One hack would be to always keep the task-dashboard rendered using [hidden].
+ */
+
ngOnInit(): void {
this.applyFilters();
@@ -65,13 +77,31 @@ export class FUnitTaskListComponent implements OnInit {
// if (this.taskDefinitions.length > 0) {
// this.setSelectedTaskDefinition(this.taskDefinitions[0]);
// }
+
+ // Load selected task from URL
+ const current = this.selectedTaskDefinition$.value;
+ const param = this.router.globals.params.taskAbbreviation;
+
+ if (param) {
+ const taskDef = this.taskDefinitions.find((t) => t.abbreviation === param);
+
+ if (taskDef !== current) {
+ this.selectedTaskDefinition$.next(taskDef);
+ }
+ } else {
+ if (current !== null) {
+ this.selectedTaskDefinition$.next(null);
+ }
+ }
}
setSelectedTaskDefinition(taskDef: TaskDefinition) {
if (this.isSelectedTaskDefinition(taskDef)) {
this.selectedTaskDefinition$.next(null);
+ this.stateService.go('.', {taskAbbreviation: null}, {location: 'replace'});
} else {
this.selectedTaskDefinition$.next(taskDef);
+ this.stateService.go('.', {taskAbbreviation: taskDef.abbreviation}, {location: 'replace'});
}
// this.selectedTaskDefinition.emit(taskDef);