From cd922a5efa2b90b6bc4a877a8f2d7140483ee02f Mon Sep 17 00:00:00 2001 From: jojohoch <joachim.hoch@iqb.hu-berlin.de> Date: Tue, 28 Sep 2021 11:01:40 +0200 Subject: [PATCH] [player] Reset pages when loading a new unit definition --- docs/release-notes.txt | 3 ++ projects/player/src/app/app.component.ts | 55 ++++++++++++++---------- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/docs/release-notes.txt b/docs/release-notes.txt index 7ce4440aa..e9a87162e 100644 --- a/docs/release-notes.txt +++ b/docs/release-notes.txt @@ -15,6 +15,9 @@ Editor Player ====== +next +- [bug] Reset pages when loading a new unit definition + 1.0.8 - [bug] Don't show needless scrollbars for radio button group and validation messages - [bug] Fix/Allow resizing of text area diff --git a/projects/player/src/app/app.component.ts b/projects/player/src/app/app.component.ts index 61c50aab6..669025669 100644 --- a/projects/player/src/app/app.component.ts +++ b/projects/player/src/app/app.component.ts @@ -1,5 +1,4 @@ import { Component, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { MatDialog } from '@angular/material/dialog'; import { @@ -17,13 +16,15 @@ import { SpecialCharacterService } from './services/special-character.service'; @Component({ selector: 'player-aspect', template: ` - <app-unit-state *ngIf="playerConfig" [pages]=pages [playerConfig]=playerConfig></app-unit-state> + <app-unit-state *ngIf="playerConfig && pages?.length" + [pages]=pages + [playerConfig]=playerConfig> + </app-unit-state> ` }) export class AppComponent implements OnInit { - form!: FormGroup; pages!: UnitPage[]; - playerConfig!: PlayerConfig; + playerConfig!: PlayerConfig | undefined; constructor(private translateService: TranslateService, private veronaSubscriptionService: VeronaSubscriptionService, @@ -71,24 +72,27 @@ export class AppComponent implements OnInit { } private onStart(message: VopStartCommand): void { - // eslint-disable-next-line no-console - console.log('player: onStart', message); - const unitDefinition: Unit = message.unitDefinition ? JSON.parse(message.unitDefinition) : {}; - if (this.metaDataService.verifyUnitDefinitionVersion(unitDefinition.veronaModuleVersion)) { - this.playerConfig = message.playerConfig || {}; - this.veronaPostService.sessionId = message.sessionId; - this.veronaPostService.stateReportPolicy = message.playerConfig?.stateReportPolicy || 'none'; - this.initUnitPages(unitDefinition.pages, message.unitState); - this.specialCharacterService.useKeyboard(false); - } else { - this.dialog.open(AlertDialogComponent, { - data: { - title: this.translateService.instant('dialogTitle.wrongUnitDefinitionType'), - content: this.translateService.instant('dialogContent.wrongUnitDefinitionType', - { version: this.metaDataService.playerMetadata.supportedUnitDefinitionTypes }) - } - }); - } + this.reset(); + setTimeout(() => { + // eslint-disable-next-line no-console + console.log('player: onStart', message); + const unitDefinition: Unit = message.unitDefinition ? JSON.parse(message.unitDefinition) : {}; + if (this.metaDataService.verifyUnitDefinitionVersion(unitDefinition.veronaModuleVersion)) { + this.playerConfig = message.playerConfig || {}; + this.veronaPostService.sessionId = message.sessionId; + this.veronaPostService.stateReportPolicy = message.playerConfig?.stateReportPolicy || 'none'; + this.initUnitPages(unitDefinition.pages, message.unitState); + this.specialCharacterService.useKeyboard(false); + } else { + this.dialog.open(AlertDialogComponent, { + data: { + title: this.translateService.instant('dialogTitle.wrongUnitDefinitionType'), + content: this.translateService.instant('dialogContent.wrongUnitDefinitionType', + { version: this.metaDataService.playerMetadata.supportedUnitDefinitionTypes }) + } + }); + } + }); } // structure of a unitPage: {sections: [{elements: [{id: ..., value: ...}]}]} @@ -124,4 +128,11 @@ export class AppComponent implements OnInit { console.log('player: onFocus', focused); this.veronaPostService.sendVopWindowFocusChangedNotification(focused); } + + private reset(): void { + // eslint-disable-next-line no-console + console.log('player: reset'); + this.pages = []; + this.playerConfig = {}; + } } -- GitLab