From 2ac832846d4bf27801f58dddb6abeda65c602fa6 Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Fri, 18 Nov 2016 18:47:34 -0200 Subject: [PATCH] LT-372: Preventing creation of targets with no size --- .../client/compatibility/nonTargetTool.js | 23 +++---------------- .../measurementLocationDialog.js | 4 ++++ .../ohif-lesiontracker/client/lib/index.js | 1 + .../client/lib/removeMeasurementIfInvalid.js | 16 +++++++++++++ 4 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 Packages/ohif-lesiontracker/client/lib/removeMeasurementIfInvalid.js diff --git a/Packages/ohif-lesiontracker/client/compatibility/nonTargetTool.js b/Packages/ohif-lesiontracker/client/compatibility/nonTargetTool.js index cbeebe797..e8590a939 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/nonTargetTool.js +++ b/Packages/ohif-lesiontracker/client/compatibility/nonTargetTool.js @@ -1,6 +1,5 @@ import { OHIF } from 'meteor/ohif:core'; import { toolManager } from 'meteor/ohif:viewerbase'; -import { _ } from 'meteor/underscore'; (function($, cornerstone, cornerstoneMath, cornerstoneTools) { @@ -32,26 +31,10 @@ import { _ } from 'meteor/underscore'; }; }; - const validateMeasurement = (measurementData, eventData) => { - if (!measurementData) { - return false; - } - - const handles = measurementData.handles; - const start = _.pick(handles.start, ['x', 'y']); - const end = _.pick(handles.end, ['x', 'y']); - if (_.isEqual(start, end)) { - cornerstoneTools.removeToolState(eventData.element, toolType, measurementData); - return false; - } - - return true; - }; - // Define a callback to get your text annotation // This could be used, e.g. to open a modal function getMeasurementLocationCallback(measurementData, eventData) { - if (!validateMeasurement(measurementData, eventData)) { + if (OHIF.lesiontracker.removeMeasurementIfInvalid(measurementData, eventData)) { return; } @@ -64,7 +47,7 @@ import { _ } from 'meteor/underscore'; } function changeMeasurementLocationCallback(measurementData, eventData) { - if (!validateMeasurement(measurementData, eventData)) { + if (OHIF.lesiontracker.removeMeasurementIfInvalid(measurementData, eventData)) { return; } @@ -139,7 +122,7 @@ import { _ } from 'meteor/underscore'; $(element).on('CornerstoneToolsMouseMove', eventData, cornerstoneTools.nonTarget.mouseMoveCallback); $(element).on('CornerstoneToolsMouseDown', eventData, cornerstoneTools.nonTarget.mouseDownCallback); $(element).on('CornerstoneToolsMouseDownActivate', eventData, cornerstoneTools.nonTarget.mouseDownActivateCallback); - $(element).on('CornerstoneToolsMouseDoubleClick', eventData, doubleClickCallback); + $(element).on('CornerstoneToolsMouseDoubleClick', eventData, doubleClickCallback); cornerstone.updateImage(mouseEventData.element); }); diff --git a/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js b/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js index b4e871a2e..ef3eb4132 100644 --- a/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js +++ b/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js @@ -40,6 +40,10 @@ Template.measurementLocationDialog.onCreated(() => { const timepointApi = instance.data.timepointApi; const toggleLabel = (measurementData, eventData, doneCallback) => { + if (OHIF.lesiontracker.removeMeasurementIfInvalid(measurementData, eventData)) { + return; + } + const getHandlePosition = key => _.pick(measurementData.handles[key], ['x', 'y']); const start = getHandlePosition('start'); const end = getHandlePosition('end'); diff --git a/Packages/ohif-lesiontracker/client/lib/index.js b/Packages/ohif-lesiontracker/client/lib/index.js index d9a2ecdcd..f02943228 100644 --- a/Packages/ohif-lesiontracker/client/lib/index.js +++ b/Packages/ohif-lesiontracker/client/lib/index.js @@ -6,6 +6,7 @@ import './studylist/studylistModification.js'; import './TrialCriteriaConstraints.js'; import './MeasurementValidation.js'; import './pixelSpacingAutorunCheck.js'; +import './removeMeasurementIfInvalid.js'; import './toggleLesionTrackerTools.js'; import './clearMeasurementTimepointData.js'; import './convertToNonTarget.js'; diff --git a/Packages/ohif-lesiontracker/client/lib/removeMeasurementIfInvalid.js b/Packages/ohif-lesiontracker/client/lib/removeMeasurementIfInvalid.js new file mode 100644 index 000000000..32aa46db5 --- /dev/null +++ b/Packages/ohif-lesiontracker/client/lib/removeMeasurementIfInvalid.js @@ -0,0 +1,16 @@ +import { OHIF } from 'meteor/ohif:core'; +import { _ } from 'meteor/underscore'; + +OHIF.lesiontracker.removeMeasurementIfInvalid = (measurementData, eventData) => { + const handles = measurementData.handles; + const start = _.pick(handles.start, ['x', 'y']); + const end = _.pick(handles.end, ['x', 'y']); + const element = eventData.element; + const toolType = measurementData.toolType; + if (_.isEqual(start, end)) { + cornerstoneTools.removeToolState(element, toolType, measurementData); + return true; + } + + return false; +};