diff --git a/src/app/group-monitor/group-monitor.component.ts b/src/app/group-monitor/group-monitor.component.ts index 206a195236d699c8461fb26c9dfa270a05c600ae..66b12e2c82c21eaf27f712adfd67bb1689a0fb1f 100644 --- a/src/app/group-monitor/group-monitor.component.ts +++ b/src/app/group-monitor/group-monitor.component.ts @@ -9,7 +9,7 @@ import { } from './group-monitor.interfaces'; import {ActivatedRoute} from '@angular/router'; import {ConnectionStatus} from '../shared/websocket-backend.service'; -import {map} from 'rxjs/operators'; +import {map, tap} from 'rxjs/operators'; import {Sort} from '@angular/material/sort'; import {MatSidenav} from '@angular/material/sidenav'; import {MatCheckboxChange} from '@angular/material/checkbox'; @@ -112,6 +112,7 @@ export class GroupMonitorComponent implements OnInit, OnDestroy { combineLatest<[Sort, TestSessionFilter[], TestSession[]]>([this.sortBy$, this.filters$, this.monitor$]) .pipe( map(([sortBy, filters, sessions]) => this.sortSessions(sortBy, this.filterSessions(sessions, filters))), + tap(sessions => this.updateChecked(sessions)) ) .subscribe(this.sessions$); @@ -172,6 +173,18 @@ export class GroupMonitorComponent implements OnInit, OnDestroy { }, true); } + private updateChecked(sessions: TestSession[]): void { + const newCheckedSessions: {[sessionFullId: number]: TestSession} = {}; + sessions + .forEach(session => { + const sessionFullId = GroupMonitorComponent.getPersonXTestId(session); + if (typeof this.checkedSessions[sessionFullId] !== 'undefined') { + newCheckedSessions[sessionFullId] = session; + } + }); + this.checkedSessions = newCheckedSessions; + } + adjustViewModeOnBookletLoad(bookletId: string): void { if (bookletId && this.bookletIdsViewIsAdjustedFor.indexOf(bookletId) === -1) { this.bookletIdsViewIsAdjustedFor.push(bookletId);