Skip to content
Snippets Groups Projects
Commit e677212c authored by paflov's avatar paflov
Browse files

makes the testController only connect to commands-stream if the testMode has...

makes the testController only connect to commands-stream if the testMode has the new capabillity `isMonitorable`
parent e876bc7f
No related branches found
No related tags found
No related merge requests found
...@@ -29,3 +29,4 @@ test like a testtaker. ...@@ -29,3 +29,4 @@ test like a testtaker.
|Sollte ein Testabschnitt mit einem Freigabewort geschützt sein, wird dieses bei der Eingabebox schon eingetragen.|X |X | |X |X | |Sollte ein Testabschnitt mit einem Freigabewort geschützt sein, wird dieses bei der Eingabebox schon eingetragen.|X |X | |X |X |
|Sollte eine Maximalzeit für einen Testabschnitt festgelegt sein, wird die verbleibende Zeit angezeigt, auch wenn die Booklet-Konfiguration dies unterbindet.|X |X | |X | | |Sollte eine Maximalzeit für einen Testabschnitt festgelegt sein, wird die verbleibende Zeit angezeigt, auch wenn die Booklet-Konfiguration dies unterbindet.|X |X | |X | |
|Die Seite mit der Aufgaben-Übersicht wird erlaubt, auch wenn das Booklet dies unterbindet.| | | |X | | |Die Seite mit der Aufgaben-Übersicht wird erlaubt, auch wenn das Booklet dies unterbindet.| | | |X | |
|Kann aus dem Gruppen-Monitor aus gesteuert werden| | |X | | |
...@@ -5,5 +5,6 @@ ...@@ -5,5 +5,6 @@
"forceNaviRestrictions": "Alle Navigationsbeschränkungen des Booklets werden angewendet (z. B. erst weiter, wenn vollständig angezeigt).", "forceNaviRestrictions": "Alle Navigationsbeschränkungen des Booklets werden angewendet (z. B. erst weiter, wenn vollständig angezeigt).",
"presetCode": "Sollte ein Testabschnitt mit einem Freigabewort geschützt sein, wird dieses bei der Eingabebox schon eingetragen.", "presetCode": "Sollte ein Testabschnitt mit einem Freigabewort geschützt sein, wird dieses bei der Eingabebox schon eingetragen.",
"showTimeLeft": "Sollte eine Maximalzeit für einen Testabschnitt festgelegt sein, wird die verbleibende Zeit angezeigt, auch wenn die Booklet-Konfiguration dies unterbindet.", "showTimeLeft": "Sollte eine Maximalzeit für einen Testabschnitt festgelegt sein, wird die verbleibende Zeit angezeigt, auch wenn die Booklet-Konfiguration dies unterbindet.",
"showUnitMenu": "Die Seite mit der Aufgaben-Übersicht wird erlaubt, auch wenn das Booklet dies unterbindet." "showUnitMenu": "Die Seite mit der Aufgaben-Übersicht wird erlaubt, auch wenn das Booklet dies unterbindet.",
"isMonitorable": "Kann aus dem Gruppen-Monitor aus gesteuert werden"
} }
...@@ -12,6 +12,7 @@ export class TestMode { ...@@ -12,6 +12,7 @@ export class TestMode {
presetCode: true; presetCode: true;
showTimeLeft: true; showTimeLeft: true;
showUnitMenu: false; showUnitMenu: false;
isMonitorable: false;
modeLabel: "Nur Ansicht (Demo)"; modeLabel: "Nur Ansicht (Demo)";
modeId: string = "DEMO"; modeId: string = "DEMO";
...@@ -28,6 +29,7 @@ export class TestMode { ...@@ -28,6 +29,7 @@ export class TestMode {
this.presetCode = modeConfig.config.presetCode; this.presetCode = modeConfig.config.presetCode;
this.showTimeLeft = modeConfig.config.showTimeLeft; this.showTimeLeft = modeConfig.config.showTimeLeft;
this.showUnitMenu = modeConfig.config.showUnitMenu; this.showUnitMenu = modeConfig.config.showUnitMenu;
this.isMonitorable = modeConfig.config.isMonitorable;
this.modeLabel = modeConfig.label; this.modeLabel = modeConfig.label;
this.modeId = mode; this.modeId = mode;
} else { } else {
......
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
"forceNaviRestrictions": false, "forceNaviRestrictions": false,
"presetCode": true, "presetCode": true,
"showTimeLeft": true, "showTimeLeft": true,
"showUnitMenu": false "showUnitMenu": false,
"isMonitorable": false
} }
}, },
"MONITOR-GROUP": { "MONITOR-GROUP": {
...@@ -20,7 +21,8 @@ ...@@ -20,7 +21,8 @@
"forceNaviRestrictions": false, "forceNaviRestrictions": false,
"presetCode": true, "presetCode": true,
"showTimeLeft": true, "showTimeLeft": true,
"showUnitMenu": false "showUnitMenu": false,
"isMonitorable": false
} }
}, },
"HOT": { "HOT": {
...@@ -32,7 +34,8 @@ ...@@ -32,7 +34,8 @@
"forceNaviRestrictions": true, "forceNaviRestrictions": true,
"presetCode": false, "presetCode": false,
"showTimeLeft": false, "showTimeLeft": false,
"showUnitMenu": false "showUnitMenu": false,
"isMonitorable": true
} }
}, },
"REVIEW": { "REVIEW": {
...@@ -44,7 +47,8 @@ ...@@ -44,7 +47,8 @@
"forceNaviRestrictions": false, "forceNaviRestrictions": false,
"presetCode": true, "presetCode": true,
"showTimeLeft": true, "showTimeLeft": true,
"showUnitMenu": true "showUnitMenu": true,
"isMonitorable": false
} }
}, },
"TRIAL": { "TRIAL": {
...@@ -56,7 +60,8 @@ ...@@ -56,7 +60,8 @@
"forceNaviRestrictions": true, "forceNaviRestrictions": true,
"presetCode": true, "presetCode": true,
"showTimeLeft": false, "showTimeLeft": false,
"showUnitMenu": false "showUnitMenu": false,
"isMonitorable": false
} }
} }
} }
...@@ -10,7 +10,8 @@ import { ...@@ -10,7 +10,8 @@ import {
map, map,
mergeMap, mergeMap,
startWith, startWith,
switchMap, tap switchMap,
tap
} from 'rxjs/operators'; } from 'rxjs/operators';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { import {
...@@ -72,12 +73,16 @@ export class CommandService extends WebsocketBackendService<Command[]> implement ...@@ -72,12 +73,16 @@ export class CommandService extends WebsocketBackendService<Command[]> implement
// this unsubscriptions are only for the case, the project's architecture will be changed dramatically once // this unsubscriptions are only for the case, the project's architecture will be changed dramatically once
// while not having a OnInit-hook services *do have* an OnDestroy-hook (see: https://v9.angular.io/api/core/OnDestroy) // while not having a OnInit-hook services *do have* an OnDestroy-hook (see: https://v9.angular.io/api/core/OnDestroy)
ngOnDestroy(): void { ngOnDestroy(): void {
this.commandSubscription.unsubscribe(); if (this.commandSubscription) {
this.testStartedSubscription.unsubscribe(); this.commandSubscription.unsubscribe();
}
if (this.testStartedSubscription) {
this.testStartedSubscription.unsubscribe();
}
} }
private subscribeReceivedCommands() { private subscribeReceivedCommands() {
this.commandReceived$ this.commandSubscription = this.commandReceived$
.pipe( .pipe(
filter((command: Command) => (this.executedCommandIds.indexOf(command.id) < 0)), filter((command: Command) => (this.executedCommandIds.indexOf(command.id) < 0)),
// min delay between items // min delay between items
...@@ -103,7 +108,7 @@ export class CommandService extends WebsocketBackendService<Command[]> implement ...@@ -103,7 +108,7 @@ export class CommandService extends WebsocketBackendService<Command[]> implement
distinctUntilChanged(), distinctUntilChanged(),
map(CommandService.testStartedOrStopped), map(CommandService.testStartedOrStopped),
filter(testStartedOrStopped => testStartedOrStopped !== ''), filter(testStartedOrStopped => testStartedOrStopped !== ''),
map(testStartedOrStopped => ((testStartedOrStopped === 'started') ? `test/${this.tcs.testId}/commands` : '')), map(testStartedOrStopped => (((testStartedOrStopped === 'started') && (this.tcs.testMode.isMonitorable)) ? `test/${this.tcs.testId}/commands` : '')),
filter(newPollingEndpoint => newPollingEndpoint !== this.pollingEndpoint), filter(newPollingEndpoint => newPollingEndpoint !== this.pollingEndpoint),
switchMap((pollingEndpoint: string) => { switchMap((pollingEndpoint: string) => {
this.pollingEndpoint = pollingEndpoint; this.pollingEndpoint = pollingEndpoint;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment