From 4928b110e59d4035ded17d5040eb58f41d434f80 Mon Sep 17 00:00:00 2001 From: ivmartel Date: Wed, 8 Jan 2025 11:08:36 +0100 Subject: [PATCH 1/2] Use first data for event and info layer --- src/applauncher.js | 46 +++++++++++++++++++++------------------ src/gui/infoController.js | 16 +++++++++++++- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/src/applauncher.js b/src/applauncher.js index 1eeccbfe..edc83dbc 100644 --- a/src/applauncher.js +++ b/src/applauncher.js @@ -82,7 +82,8 @@ function startApp() { loadboxGui.setup(loaderList); // info layer - var infoController = new dwvjq.gui.info.Controller(myapp); + var infoDataId = '0'; + var infoController = new dwvjq.gui.info.Controller(myapp, infoDataId); infoController.init(); var infoElement = document.getElementById('infoLayer'); @@ -112,19 +113,17 @@ function startApp() { var nLoadItem = null; var nReceivedLoadError = null; var nReceivedLoadAbort = null; - var isFirstRender = null; myapp.addEventListener('loadstart', function (event) { // reset counts nLoadItem = 0; nReceivedLoadError = 0; nReceivedLoadAbort = 0; - isFirstRender = true; // hide drop box dropBoxLoader.showDropbox(false); // reset progress bar dwvjq.gui.displayProgress(0); // update info controller - if (event.loadtype === 'image') { + if (event.loadtype === 'image' && event.dataid === infoDataId) { infoController.reset(); } // allow to cancel via crtl-x @@ -141,25 +140,30 @@ function startApp() { infoController.onLoadItem(event); } }); - myapp.addEventListener('renderstart', function (/*event*/) { - if (isFirstRender) { - infoController.addEventListener('valuechange', infoOverlay.onDataChange); - } - }); - myapp.addEventListener('renderend', function (/*event*/) { - if (isFirstRender) { - isFirstRender = false; - // initialise and display the toolbox on first render - toolboxGui.initialise(); - toolboxGui.display(true); + + // init controller at first render start + var initInfoController = function () { + infoController.addEventListener('valuechange', infoOverlay.onDataChange); + myapp.removeEventListener('renderstart', initInfoController); + }; + myapp.addEventListener('renderstart', initInfoController); + // init toolbox gui at first render end + var initToolboxGui = function () { + toolboxGui.initialise(); + toolboxGui.display(true); + myapp.removeEventListener('renderend', initToolboxGui); + }; + myapp.addEventListener('renderend', initToolboxGui); + + myapp.addEventListener('load', function (event) { + // only initialise at first data + if (event.dataid === infoDataId) { + // initialise undo gui + undoGui.setup(); + // update meta data table + metaDataGui.update(myapp.getMetaData('0')); } }); - myapp.addEventListener('load', function (/*event*/) { - // initialise undo gui - undoGui.setup(); - // update meta data table - metaDataGui.update(myapp.getMetaData(0)); - }); myapp.addEventListener('loaderror', function (event) { console.error('load error', event); ++nReceivedLoadError; diff --git a/src/gui/infoController.js b/src/gui/infoController.js index 20d60061..566ff400 100644 --- a/src/gui/infoController.js +++ b/src/gui/infoController.js @@ -15,8 +15,9 @@ function getNumberToPrecision(precision) { * DICOM Header overlay info controller. * @constructor * @param {Object} app The assciated app. + * @param {string} dataId The assciated data id. */ -dwvjq.gui.info.Controller = function (app) { +dwvjq.gui.info.Controller = function (app, dataId) { // overlay data var overlayData = []; @@ -49,6 +50,10 @@ dwvjq.gui.info.Controller = function (app) { * @param {Object} event The loaditem event. */ this.onLoadItem = function (event) { + // only handle input data id + if (event.dataid !== dataId) { + return; + } // create and store overlay data var data = event.data; var dataUid; @@ -82,6 +87,11 @@ dwvjq.gui.info.Controller = function (app) { * @param {Object} event The slicechange event. */ function onSliceChange(event) { + // only handle input data id + if (event.dataid !== dataId) { + return; + } + // update data if (typeof event.data !== 'undefined' && typeof event.data.imageUid !== 'undefined') { currentDataUid = event.data.imageUid; @@ -96,6 +106,10 @@ dwvjq.gui.info.Controller = function (app) { * registered in toggleListeners */ function updateData(event) { + // only handle input data id + if (event.dataid !== dataId) { + return; + } var sliceOverlayData = overlayData[currentDataUid]; if (typeof sliceOverlayData === 'undefined') { From b375d3cad1d3248d335e285d3a05ce56f7166f8b Mon Sep 17 00:00:00 2001 From: ivmartel Date: Wed, 8 Jan 2025 11:09:18 +0100 Subject: [PATCH 2/2] Update event names --- src/applauncher.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/applauncher.js b/src/applauncher.js index edc83dbc..4aee28f6 100644 --- a/src/applauncher.js +++ b/src/applauncher.js @@ -164,11 +164,11 @@ function startApp() { metaDataGui.update(myapp.getMetaData('0')); } }); - myapp.addEventListener('loaderror', function (event) { + myapp.addEventListener('error', function (event) { console.error('load error', event); ++nReceivedLoadError; }); - myapp.addEventListener('loadabort', function (/*event*/) { + myapp.addEventListener('abort', function (/*event*/) { ++nReceivedLoadAbort; }); myapp.addEventListener('loadend', function (/*event*/) {