From 525c2b9d109ebf9136316230752945ba3aa493c9 Mon Sep 17 00:00:00 2001 From: Edward Moyse Date: Fri, 20 Sep 2024 14:06:40 +0200 Subject: [PATCH] Hopefully fix the issues with loading configurations. Fixes #582. --- .../phoenix-event-display/src/helpers/file.ts | 21 ++++++++++++------- .../src/managers/state-manager.ts | 2 ++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/phoenix-event-display/src/helpers/file.ts b/packages/phoenix-event-display/src/helpers/file.ts index eb83f986..be1ac540 100644 --- a/packages/phoenix-event-display/src/helpers/file.ts +++ b/packages/phoenix-event-display/src/helpers/file.ts @@ -28,10 +28,19 @@ export const loadFile = ( contentType: string = 'application/json', ) => { // Create a mock input file element and use that to read the file - let inputFile = document.createElement('input'); + const inputFile = document.createElement('input'); + document.body.appendChild(inputFile); inputFile.type = 'file'; inputFile.accept = contentType; - inputFile.onchange = (e: any) => { + inputFile.onclick = (e: any) => { + e.target.value = ''; + }; + + inputFile.addEventListener('invalid', (e) => { + console.log(JSON.stringify(e)); + }); + + const fileSelected = (e: any) => { const configFile = e.target?.files[0]; const reader = new FileReader(); reader.onload = (e) => { @@ -39,13 +48,11 @@ export const loadFile = ( onFileRead?.(e.target.result.toString()); } inputFile.remove(); - inputFile = document.createElement('input'); - // For explanation, see https://stackoverflow.com/a/26221525 }; reader.readAsText(configFile); }; + + inputFile.oninput = fileSelected; + inputFile.onchange = fileSelected; inputFile.click(); - setTimeout(() => { - console.log('Let us just wait a second'); - }, 1000); }; diff --git a/packages/phoenix-event-display/src/managers/state-manager.ts b/packages/phoenix-event-display/src/managers/state-manager.ts index b2c8d97c..158f7993 100644 --- a/packages/phoenix-event-display/src/managers/state-manager.ts +++ b/packages/phoenix-event-display/src/managers/state-manager.ts @@ -106,11 +106,13 @@ export class StateManager { typeof json === 'string' ? JSON.parse(json) : json; if (jsonData['phoenixMenu'] && this.phoenixMenuRoot) { + console.log('StateManager: Processing phoenixMenu configuration'); this.phoenixMenuRoot.loadStateFromJSON(jsonData['phoenixMenu']); this.phoenixMenuRoot.configActive = false; } if (jsonData['eventDisplay']) { + console.log('StateManager: Processing eventDisplay configuration'); this.activeCamera.position.fromArray( jsonData['eventDisplay']?.['cameraPosition'], );