From 4aa0204119a816ab99325396d663d95666b36ace Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Fri, 10 Nov 2017 13:54:48 -0200 Subject: [PATCH] Preventing duplicated deletion dialogs --- .../compatibility/deleteLesionKeyboardTool.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Packages/ohif-lesiontracker/client/compatibility/deleteLesionKeyboardTool.js b/Packages/ohif-lesiontracker/client/compatibility/deleteLesionKeyboardTool.js index 9057d6cd5..e7b3869bb 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/deleteLesionKeyboardTool.js +++ b/Packages/ohif-lesiontracker/client/compatibility/deleteLesionKeyboardTool.js @@ -17,6 +17,14 @@ const toolTypes = [ 'rectangleRoi' ]; +// Flag to prevent dialog from being displayed twice +let locked = false; + +// Handler to unlock the keydown handling +const unlock = () => { + locked = false; +}; + function removeMeasurementTimepoint(data, index, toolType, element) { let { imageId } = data; if (!imageId) { @@ -72,6 +80,9 @@ function getNearbyToolData(element, coords) { function keyDownCallback(event, eventData) { const keyCode = eventData.which; + // Stop here if the locked flag is set to true + if (locked) return; + if (keyCode === keys.DELETE || (keyCode === keys.D && eventData.event.ctrlKey === true)) { @@ -86,15 +97,19 @@ function keyDownCallback(event, eventData) { position: eventData.currentPoints.page }; + // Set the locked flag to true + locked = true; + // TODO= Refactor this so the confirmation dialog is an // optional settable callback in the tool's configuration OHIF.ui.showDialog('dialogConfirm', dialogSettings).then(() => { + unlock(); removeMeasurementTimepoint(nearbyToolData.tool, nearbyToolData.index, nearbyToolData.toolType, eventData.element ); - }); + }).catch(unlock); } }