From 2732de648b3780eb1bb8cfbe6323f80fda269aa4 Mon Sep 17 00:00:00 2001 From: paflov <paf@titelfrei.de> Date: Tue, 22 Jun 2021 19:26:44 +0200 Subject: [PATCH] * Adds startPage in playerConfig in vopStartCommand to let the player jump to the previously selected page; this might also be helpful in evaluation use cases where (after the test) the given answers of items at a specific page are expected to be presented * makes validPages and currentPage optional in playerState for players w/o paging feature --- package-lock.json | 2 +- test/test.spec.js | 27 +++++++++++++++++++-------- verona-simple-player-1.html | 19 ++++++++++++++++--- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 314e7f9..a5660ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "verona-player-html", - "version": "1.1.1", + "version": "1.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/test/test.spec.js b/test/test.spec.js index 957d8a3..17b4899 100644 --- a/test/test.spec.js +++ b/test/test.spec.js @@ -70,6 +70,25 @@ describe('simple player', () => { done(); }); + it('should open the page in `startPage`', async done => { + await send({ + type: 'vopStartCommand', + unitDefinition: + '<fieldset><legend id="p1">Page 1</legend></fieldset><fieldset><legend id="p2">Page 2</legend></fieldset>', + sessionId: '1', + playerConfig: { + pagingMode: 'separate', + startPage: '2' + } + }); + + const page2 = await driver.findElement(By.id('p2')); + + expect (await page2.isDisplayed()).toBeTrue(); + + done(); + }); + it('should block unit on `vopStopCommand` and continue on `vopContinueCommand`', async done => { await send({ type: 'vopStartCommand', @@ -560,10 +579,6 @@ describe('simple player', () => { presentationProgress: 'complete', responseProgress: 'complete' }, - playerState: { - currentPage: 0, - validPages: { 0: '' } - }, unitStateDataTyp: 'verona-simple-player-1.0.0' }); @@ -609,10 +624,6 @@ describe('simple player', () => { presentationProgress: 'complete', responseProgress: 'complete' }, - playerState: { - currentPage: 0, - validPages: { 0: '' } - }, unitStateDataTyp: 'verona-simple-player-1.0.0' }); diff --git a/verona-simple-player-1.html b/verona-simple-player-1.html index 9d26832..c10c308 100755 --- a/verona-simple-player-1.html +++ b/verona-simple-player-1.html @@ -277,6 +277,11 @@ let sessionId = ""; const isDefined = v => (typeof v !== "undefined"); + const isEmpty = object => { + // noinspection LoopStatementThatDoesntLoopJS + for(let property in object) return false; + return true; + } const Time = new class { throttle = (callback, limit) => { @@ -370,10 +375,12 @@ } const playerState = this._getPlayerState(); - console.log("ps", playerState); if (complete || (JSON.stringify(playerState) !== JSON.stringify(this._lastStates.playerState))) { - message.playerState = playerState; this._lastStates.playerState = playerState; + console.log('state of the game', playerState); + if (!isEmpty(playerState)) { + message.playerState = playerState; + } } const unitState = this._getUnitState(); @@ -433,7 +440,8 @@ sessionId = data.sessionId || new Error("session ID missing"); this._setUnit(data["unitDefinition"] || new Error("unitDefinition missing")); - this._setPlayerConfig(data["playerConfig"] || {}); + const playerConfig = data["playerConfig"] || {}; + this._setPlayerConfig(playerConfig); this._setUnitData(data["unitState"] || {}); if (data['unitDefinitionType'] !== "verona-simple-player-1.0.0") { @@ -441,6 +449,11 @@ } PlayerUI.toggleUnitNavButtons(); + PlayerUI.togglePageNavButtons(); + + if (playerConfig['startPage']) { + Pages.got(playerConfig.startPage); + } } getData = () => ({ -- GitLab