From 63a9fdab6254e0506d7c34e19381611a808e589e Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Fri, 4 May 2018 08:38:42 -0300 Subject: [PATCH] fix(save-measurements): Prevent users from saving by hotkey when saving is disabled --- .../ohif-measurements/client/lib/index.js | 1 + .../client/lib/isSaveDisabled.js | 24 +++++++++++++++++++ .../client/lib/saveMeasurements.js | 10 ++++---- 3 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 Packages/ohif-measurements/client/lib/isSaveDisabled.js diff --git a/Packages/ohif-measurements/client/lib/index.js b/Packages/ohif-measurements/client/lib/index.js index 088d3eeef..6768b3b80 100644 --- a/Packages/ohif-measurements/client/lib/index.js +++ b/Packages/ohif-measurements/client/lib/index.js @@ -14,6 +14,7 @@ import './getTimepointName'; import './getToolConfiguration'; import './hangingProtocolCustomizations'; import './isNewLesionsMeasurement'; +import './isSaveDisabled'; import './MeasurementHandlers'; import './MeasurementManager'; import './navigateOverLesions'; diff --git a/Packages/ohif-measurements/client/lib/isSaveDisabled.js b/Packages/ohif-measurements/client/lib/isSaveDisabled.js new file mode 100644 index 000000000..687425074 --- /dev/null +++ b/Packages/ohif-measurements/client/lib/isSaveDisabled.js @@ -0,0 +1,24 @@ +import { OHIF } from 'meteor/ohif:core'; + +OHIF.measurements.isSaveDisabled = timepointId => { + const basePath = `viewer.studyViewer.measurements.${timepointId}`; + + // Get the timepoint object + const timepoint = OHIF.viewer.timepointApi.timepoints.findOne({ timepointId }); + + // Check if the timepoint is locked + let isLocked = (timepoint && timepoint.isLocked); + if (typeof isLocked === 'undefined') { + isLocked = true; + } + + // Check if the given timepoint suffered changes + const hasChanges = OHIF.ui.unsavedChanges.probe(basePath) !== 0; + + // Check if the given timepoint has nonconformities + const nonconformities = OHIF.viewer.conformanceCriteria.nonconformities.get(); + const hasNonconformities = nonconformities && !!nonconformities.length; + + // Prevent saving if timepoint is locked, has no changes or has nonconformities + return isLocked || !hasChanges || hasNonconformities; +}; diff --git a/Packages/ohif-measurements/client/lib/saveMeasurements.js b/Packages/ohif-measurements/client/lib/saveMeasurements.js index dae43de6e..996da8a60 100644 --- a/Packages/ohif-measurements/client/lib/saveMeasurements.js +++ b/Packages/ohif-measurements/client/lib/saveMeasurements.js @@ -4,12 +4,10 @@ OHIF.measurements.saveMeasurements = (measurementApi, timepointId) => { const { unsavedChanges, notifications, showDialog } = OHIF.ui; const basePath = `viewer.studyViewer.measurements.${timepointId}`; - // Stop here if there are nonconformities in the timepoints - const nonconformities = OHIF.viewer.conformanceCriteria.nonconformities.get(); - if (nonconformities.length) return; - - // Stop here if there were no changes to the timepoint - if (unsavedChanges.probe(basePath) === 0) return; + // Prevent saving if it's disabled + if (OHIF.measurements.isSaveDisabled(timepointId)) { + return; + } // Clear unsaved changes state and display success message const successHandler = () => {