From 4ae0183a9c230bcd17a2174db154f9e675d9aeff Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Mon, 21 Dec 2015 09:29:19 -0500 Subject: [PATCH] Bug fixes for confirmDelete and lesion management --- LesionTracker/client/components/viewer.js | 2 +- .../client/compatibility/LesionManager.js | 2 +- .../compatibility/deleteLesionKeyboardTool.js | 15 ++++++++---- .../confirmDeleteDialog.html | 4 ++-- .../confirmDeleteDialog.js | 23 +++++++++++++++---- .../lesionTableRow/lesionTableRow.js | 11 +++++++-- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/LesionTracker/client/components/viewer.js b/LesionTracker/client/components/viewer.js index df895021d..c2522b99a 100644 --- a/LesionTracker/client/components/viewer.js +++ b/LesionTracker/client/components/viewer.js @@ -44,7 +44,7 @@ Template.viewer.onCreated(function() { }, nonTarget: function() { toolManager.setActiveTool("nonTarget"); - }, + } }; // The hotkey can also be an array (e.g. ["NUMPAD0", "0"]) diff --git a/Packages/lesiontracker/client/compatibility/LesionManager.js b/Packages/lesiontracker/client/compatibility/LesionManager.js index 2ef59570b..d90557dbb 100644 --- a/Packages/lesiontracker/client/compatibility/LesionManager.js +++ b/Packages/lesiontracker/client/compatibility/LesionManager.js @@ -37,7 +37,7 @@ var LesionManager = (function() { // Find the specific lesion to be updated var existingMeasurement; - if (lesionData.id) { + if (lesionData.id && lesionData.id !== 'notready') { existingMeasurement = Measurements.findOne(lesionData.id); } else { existingMeasurement = Measurements.findOne({ diff --git a/Packages/lesiontracker/client/compatibility/deleteLesionKeyboardTool.js b/Packages/lesiontracker/client/compatibility/deleteLesionKeyboardTool.js index d8884ed73..c7dad92e5 100644 --- a/Packages/lesiontracker/client/compatibility/deleteLesionKeyboardTool.js +++ b/Packages/lesiontracker/client/compatibility/deleteLesionKeyboardTool.js @@ -22,6 +22,7 @@ }); } + // TODO = Check if we have the same function already in Cornerstone Tools function getNearbyToolData(element, coords, toolTypes) { var allTools = toolManager.getTools(); var pointNearTool = false; @@ -77,11 +78,17 @@ var toolTypes = ["lesion", "nonTarget"]; var nearbyToolData = getNearbyToolData(eventData.element, eventData.currentPoints.canvas, toolTypes); - if (nearbyToolData) { - removeMeasurementTimepoint(nearbyToolData.nearbyTool, - nearbyToolData.nearbyToolIndex, - nearbyToolData.nearbyToolType); + if (!nearbyToolData) { + return; } + + // TODO= Refactor this so the confirmation dialog is an + // optional settable callback in the tool's configuration + showConfirmDialog(function() { + removeMeasurementTimepoint(nearbyToolData.nearbyTool, + nearbyToolData.nearbyToolIndex, + nearbyToolData.nearbyToolType); + }); } } diff --git a/Packages/lesiontracker/client/components/confirmDeleteDialog/confirmDeleteDialog.html b/Packages/lesiontracker/client/components/confirmDeleteDialog/confirmDeleteDialog.html index 81f72abac..978fd1fe5 100644 --- a/Packages/lesiontracker/client/components/confirmDeleteDialog/confirmDeleteDialog.html +++ b/Packages/lesiontracker/client/components/confirmDeleteDialog/confirmDeleteDialog.html @@ -2,7 +2,7 @@
Remove Measurement?

Are you sure you would like to remove this measurement?

- - + +
\ No newline at end of file diff --git a/Packages/lesiontracker/client/components/confirmDeleteDialog/confirmDeleteDialog.js b/Packages/lesiontracker/client/components/confirmDeleteDialog/confirmDeleteDialog.js index 26971525a..ac97d0732 100644 --- a/Packages/lesiontracker/client/components/confirmDeleteDialog/confirmDeleteDialog.js +++ b/Packages/lesiontracker/client/components/confirmDeleteDialog/confirmDeleteDialog.js @@ -9,9 +9,10 @@ function closeHandler() { delete Template.confirmDeleteDialog.doneCallback; } -showConfirmDialog = function(doneCallback) { +showConfirmDialog = function(doneCallback, options) { // Show the backdrop - UI.render(Template.removableBackdrop, document.body); + options = options || {}; + UI.renderWithData(Template.removableBackdrop, options, document.body); // Make sure the context menu is closed when the user clicks away $(".removableBackdrop").one('mousedown touchstart', function() { @@ -25,13 +26,17 @@ showConfirmDialog = function(doneCallback) { } }; +var keys = { + ESC: 27, + ENTER: 13 +}; + Template.confirmDeleteDialog.events({ 'click #cancel, click #close': function() { closeHandler(); }, 'click #confirm': function() { var doneCallback = Template.confirmDeleteDialog.doneCallback; - if (doneCallback && typeof doneCallback === 'function') { doneCallback(); } @@ -39,12 +44,22 @@ Template.confirmDeleteDialog.events({ closeHandler(); }, 'keypress #confirmDeleteDialog': function(e) { + if (e.which === keys.ESC) { + closeHandler(); + } + if (this.keyPressAllowed === false) { return; } + var doneCallback = Template.confirmDeleteDialog.doneCallback; + // If Enter is pressed, close the dialog - if (e.which === 13) { + if (e.which === keys.ENTER) { + if (doneCallback && typeof doneCallback === 'function') { + doneCallback(); + } + closeHandler(); } } diff --git a/Packages/lesiontracker/client/components/lesionTableRow/lesionTableRow.js b/Packages/lesiontracker/client/components/lesionTableRow/lesionTableRow.js index df144b9c1..c69b76d32 100644 --- a/Packages/lesiontracker/client/components/lesionTableRow/lesionTableRow.js +++ b/Packages/lesiontracker/client/components/lesionTableRow/lesionTableRow.js @@ -34,15 +34,22 @@ Template.lesionTableRow.events({ }, 'keydown .location': function(e) { var keyCode = e.which; + if (keyCode === keys.DELETE || (keyCode === keys.D && e.ctrlKey === true)) { var currentMeasurement = this; + var options = { + keyPressAllowed: false + }; showConfirmDialog(function() { Meteor.call("removeMeasurement", currentMeasurement._id, function(error, response) { - console.log('Removed!'); + if (error) { + log.warn(error); + } + log.info(response); }); - }); + }, options); } } });