From 826bf9bf1623797b9132f0edf1b9d4e564449b8d Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Mon, 17 Oct 2016 21:17:31 +0100 Subject: [PATCH] LT-275: Migrating ohif:lesiontracker to the new import structure --- .../client/components/viewer/viewer.js | 4 +- LesionTracker/client/routes.js | 2 +- PETSUVMeasurements/client/routes.js | 2 +- Packages/ohif-lesiontracker/both/base.js | 3 + .../both/configuration/bidirectional.js | 6 +- .../both/configuration/index.js | 7 ++ Packages/ohif-lesiontracker/both/index.js | 2 + .../client/collections/index.js | 2 + .../client/compatibility/index.js | 5 ++ .../client/components/index.js | 22 +++++ .../measurementLocationDialog.js | 2 +- Packages/ohif-lesiontracker/client/index.js | 12 +++ .../{ => client}/lib/MeasurementValidation.js | 6 +- .../lib/TrialCriteriaConstraints.js | 25 +++--- .../lib/clearMeasurementTimepointData.js | 38 ++++----- .../{ => client}/lib/convertNonTarget.js | 2 +- .../{ => client}/lib/convertToNonTarget.js | 16 ++-- .../ohif-lesiontracker/client/lib/index.js | 12 +++ .../lib/pixelSpacingAutorunCheck.js | 16 ++-- .../lib/studylist/openNewTabWithTimepoint.js | 2 +- .../lib/studylist/studylistModification.js | 2 +- .../lib/toggleLesionTrackerTools.js | 12 +-- Packages/ohif-lesiontracker/package.js | 84 +------------------ Packages/ohif-lesiontracker/server/index.js | 1 + .../measurementTableHeaderRow.js | 2 +- .../measurementTableTimepointCell.js | 6 +- 26 files changed, 142 insertions(+), 151 deletions(-) create mode 100644 Packages/ohif-lesiontracker/both/base.js create mode 100644 Packages/ohif-lesiontracker/both/configuration/index.js create mode 100644 Packages/ohif-lesiontracker/both/index.js create mode 100644 Packages/ohif-lesiontracker/client/collections/index.js create mode 100644 Packages/ohif-lesiontracker/client/compatibility/index.js create mode 100644 Packages/ohif-lesiontracker/client/components/index.js create mode 100644 Packages/ohif-lesiontracker/client/index.js rename Packages/ohif-lesiontracker/{ => client}/lib/MeasurementValidation.js (97%) rename Packages/ohif-lesiontracker/{ => client}/lib/TrialCriteriaConstraints.js (94%) rename Packages/ohif-lesiontracker/{ => client}/lib/clearMeasurementTimepointData.js (60%) rename Packages/ohif-lesiontracker/{ => client}/lib/convertNonTarget.js (95%) rename Packages/ohif-lesiontracker/{ => client}/lib/convertToNonTarget.js (86%) create mode 100644 Packages/ohif-lesiontracker/client/lib/index.js rename Packages/ohif-lesiontracker/{ => client}/lib/pixelSpacingAutorunCheck.js (58%) rename Packages/ohif-lesiontracker/{ => client}/lib/studylist/openNewTabWithTimepoint.js (97%) rename Packages/ohif-lesiontracker/{ => client}/lib/studylist/studylistModification.js (95%) rename Packages/ohif-lesiontracker/{ => client}/lib/toggleLesionTrackerTools.js (84%) create mode 100644 Packages/ohif-lesiontracker/server/index.js diff --git a/LesionTracker/client/components/viewer/viewer.js b/LesionTracker/client/components/viewer/viewer.js index f962a8cc5..717ef0262 100644 --- a/LesionTracker/client/components/viewer/viewer.js +++ b/LesionTracker/client/components/viewer/viewer.js @@ -17,7 +17,7 @@ Template.viewer.onCreated(() => { const contentId = instance.data.contentId; OHIF.viewer.functionList = $.extend(OHIF.viewer.functionList, { - toggleLesionTrackerTools: toggleLesionTrackerTools, + toggleLesionTrackerTools: OHIF.lesiontracker.toggleLesionTrackerTools, clearTools: clearTools, bidirectional: () => { // Used for hotkeys @@ -49,7 +49,7 @@ Template.viewer.onCreated(() => { Session.set('activeViewport', ViewerData[contentId].activeViewport || false); // Set lesion tool buttons as disabled if pixel spacing is not available for active element - instance.autorun(pixelSpacingAutorunCheck); + instance.autorun(OHIF.lesiontracker.pixelSpacingAutorunCheck); // Update the ViewerStudies collection with the loaded studies ViewerStudies.remove({}); diff --git a/LesionTracker/client/routes.js b/LesionTracker/client/routes.js index a09188878..e2912152a 100644 --- a/LesionTracker/client/routes.js +++ b/LesionTracker/client/routes.js @@ -46,7 +46,7 @@ Router.route('/viewer/timepoints/:_id', { var timepointId = this.params._id; this.render('app', routerOptions); - openNewTabWithTimepoint(timepointId); + OHIF.lesiontracker.openNewTabWithTimepoint(timepointId); } }); diff --git a/PETSUVMeasurements/client/routes.js b/PETSUVMeasurements/client/routes.js index c2eafc5f9..990a70715 100644 --- a/PETSUVMeasurements/client/routes.js +++ b/PETSUVMeasurements/client/routes.js @@ -40,7 +40,7 @@ Router.route('/viewer/timepoints/:_id', { var timepointId = this.params._id; this.render('app', routerOptions); - openNewTabWithTimepoint(timepointId); + OHIF.lesiontracker.openNewTabWithTimepoint(timepointId); } }); diff --git a/Packages/ohif-lesiontracker/both/base.js b/Packages/ohif-lesiontracker/both/base.js new file mode 100644 index 000000000..fa6fc276d --- /dev/null +++ b/Packages/ohif-lesiontracker/both/base.js @@ -0,0 +1,3 @@ +import { OHIF } from 'meteor/ohif:core'; + +OHIF.lesiontracker = {}; diff --git a/Packages/ohif-lesiontracker/both/configuration/bidirectional.js b/Packages/ohif-lesiontracker/both/configuration/bidirectional.js index 6addddb8a..e535335df 100644 --- a/Packages/ohif-lesiontracker/both/configuration/bidirectional.js +++ b/Packages/ohif-lesiontracker/both/configuration/bidirectional.js @@ -60,7 +60,7 @@ function displayFunction(data) { return criteria.id; }); - const currentConstraints = getTrialCriteriaConstraints(criteriaTypes, data.imageId); + const currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes, data.imageId); if (data.shortestDiameter) { // TODO: Make this check criteria again to see if we should display @@ -81,6 +81,6 @@ export const bidirectional = { measurementTableOptions: { displayFunction: displayFunction }, - includeInCaseProgress: true, + includeInCaseProgress: true, }, -} \ No newline at end of file +} diff --git a/Packages/ohif-lesiontracker/both/configuration/index.js b/Packages/ohif-lesiontracker/both/configuration/index.js new file mode 100644 index 000000000..28f727374 --- /dev/null +++ b/Packages/ohif-lesiontracker/both/configuration/index.js @@ -0,0 +1,7 @@ +import './nonTarget.js'; +import './ellipse.js'; +import './length.js'; +import './measurementTools.js'; +import './dataExchange.js'; +import './dataValidation.js'; +import './configuration.js'; diff --git a/Packages/ohif-lesiontracker/both/index.js b/Packages/ohif-lesiontracker/both/index.js new file mode 100644 index 000000000..8d5e3b1f1 --- /dev/null +++ b/Packages/ohif-lesiontracker/both/index.js @@ -0,0 +1,2 @@ +import './base.js'; +import './configuration'; diff --git a/Packages/ohif-lesiontracker/client/collections/index.js b/Packages/ohif-lesiontracker/client/collections/index.js new file mode 100644 index 000000000..a1de5335d --- /dev/null +++ b/Packages/ohif-lesiontracker/client/collections/index.js @@ -0,0 +1,2 @@ +import './LesionLocations.js'; +import './LocationResponses.js'; diff --git a/Packages/ohif-lesiontracker/client/compatibility/index.js b/Packages/ohif-lesiontracker/client/compatibility/index.js new file mode 100644 index 000000000..abbd6373d --- /dev/null +++ b/Packages/ohif-lesiontracker/client/compatibility/index.js @@ -0,0 +1,5 @@ +import './bidirectionalTool.js'; +import './nonTargetTool.js'; +import './scaleOverlayTool.js'; +import './deleteLesionKeyboardTool.js'; +import './qualitativeTargetTools.js'; diff --git a/Packages/ohif-lesiontracker/client/components/index.js b/Packages/ohif-lesiontracker/client/components/index.js new file mode 100644 index 000000000..d25e3bd23 --- /dev/null +++ b/Packages/ohif-lesiontracker/client/components/index.js @@ -0,0 +1,22 @@ +import './optionsModal/optionsModal.html'; +import './optionsModal/optionsModal.styl'; +import './optionsModal/optionsModal.js'; + +import './optionsModal/recistDescription/recistDescription.html'; +import './optionsModal/irRCDescription/irRCDescription.html'; + +import './measurementLocationDialog/measurementLocationDialog.html'; +import './measurementLocationDialog/measurementLocationDialog.js'; +import './measurementLocationDialog/measurementLocationDialog.styl'; + +import './nonTargetLesionDialog/nonTargetLesionDialog.html'; +import './nonTargetLesionDialog/nonTargetLesionDialog.styl'; +import './nonTargetLesionDialog/nonTargetLesionDialog.js'; + +import './nonTargetResponseDialog/nonTargetResponseDialog.html'; +import './nonTargetResponseDialog/nonTargetResponseDialog.styl'; +import './nonTargetResponseDialog/nonTargetResponseDialog.js'; + +import './measureFlow/measureFlow.html'; +import './measureFlow/measureFlow.styl'; +import './measureFlow/measureFlow.js'; diff --git a/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js b/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js index a98723ca9..4e3fcb0e4 100644 --- a/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js +++ b/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js @@ -268,7 +268,7 @@ Template.measurementLocationDialog.events({ const instance = Template.instance(); const measurementApi = instance.data.measurementApi; - convertToNonTarget(measurementApi, measurementData); + OHIF.lesiontracker.convertToNonTarget(measurementApi, measurementData); closeHandler(dialog); }, diff --git a/Packages/ohif-lesiontracker/client/index.js b/Packages/ohif-lesiontracker/client/index.js new file mode 100644 index 000000000..35d04e191 --- /dev/null +++ b/Packages/ohif-lesiontracker/client/index.js @@ -0,0 +1,12 @@ +// Client-side collections +import './collections'; + +// Additional Custom Cornerstone Tools for Lesion Tracker +import './compatibility'; + +import './tools.js'; + +// UI Components +import './components'; + +import './lib'; diff --git a/Packages/ohif-lesiontracker/lib/MeasurementValidation.js b/Packages/ohif-lesiontracker/client/lib/MeasurementValidation.js similarity index 97% rename from Packages/ohif-lesiontracker/lib/MeasurementValidation.js rename to Packages/ohif-lesiontracker/client/lib/MeasurementValidation.js index b41fc5b21..63928e864 100644 --- a/Packages/ohif-lesiontracker/lib/MeasurementValidation.js +++ b/Packages/ohif-lesiontracker/client/lib/MeasurementValidation.js @@ -223,7 +223,7 @@ function validateSingleMeasurement(measurementData) { }).map(function(criteria) { return criteria.id; }); - var currentConstraints = getTrialCriteriaConstraints(criteriaTypes, measurementData.imageId); + var currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes, measurementData.imageId); // If we have no relevant constraints, stop here if (!currentConstraints) { @@ -275,7 +275,7 @@ function validateGroups() { }); // Criteria for the specific image are retrieved from the general set of criteria. - var currentConstraints = getTrialCriteriaConstraints(criteriaTypes); + var currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes); if (!currentConstraints) { return; } @@ -320,7 +320,7 @@ function validateAll() { currentMeasurement._id = measurement._id; // Criteria for the specific image are retrieved from the general set of criteria. - var currentConstraints = getTrialCriteriaConstraints(criteriaTypes, currentMeasurement.imageId); + var currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes, currentMeasurement.imageId); if (!currentConstraints) { return; } diff --git a/Packages/ohif-lesiontracker/lib/TrialCriteriaConstraints.js b/Packages/ohif-lesiontracker/client/lib/TrialCriteriaConstraints.js similarity index 94% rename from Packages/ohif-lesiontracker/lib/TrialCriteriaConstraints.js rename to Packages/ohif-lesiontracker/client/lib/TrialCriteriaConstraints.js index fadf08f63..0ae797923 100644 --- a/Packages/ohif-lesiontracker/lib/TrialCriteriaConstraints.js +++ b/Packages/ohif-lesiontracker/client/lib/TrialCriteriaConstraints.js @@ -1,7 +1,8 @@ +import { Template } from 'meteor/templating'; import { OHIF } from 'meteor/ohif:core'; // Define the Trial Criteria Structure -TrialCriteriaConstraints = { +OHIF.lesiontracker.TrialCriteriaConstraints = { RECIST: RECIST, irRC: irRC }; @@ -331,41 +332,41 @@ function irRC(image) { * @param imageId A Cornerstone Image ID * @returns {*} An Object of Trial Criteria that can be used to validate measurements' conformance */ -getTrialCriteriaConstraints = function(criteriaTypes, imageId) { +OHIF.lesiontracker.getTrialCriteriaConstraints = (criteriaTypes, imageId) => { // TODO: update this when we allow multiple criteria - var allCriteria = []; + const allCriteria = []; criteriaTypes.forEach(function(criteriaType) { - if (!TrialCriteriaConstraints[criteriaType]) { + if (!OHIF.lesiontracker.TrialCriteriaConstraints[criteriaType]) { throw 'No such Trial Criteria defined: ' + criteriaType; } // If no imageId was specified, skip customization of the criteria // and return the requested criteria right away - var criteria; + let criteria; if (!imageId) { - criteria = TrialCriteriaConstraints[criteriaType](); + criteria = OHIF.lesiontracker.TrialCriteriaConstraints[criteriaType](); allCriteria.push(criteria); return; } // Otherwise, retrieve the series metaData to identify the modality of the image - var seriesMetaData = cornerstoneTools.metaData.get('series', imageId); + const seriesMetaData = cornerstoneTools.metaData.get('series', imageId); if (!seriesMetaData) { return; } // TODO: Get the rest of the metaData that has already been loaded by Cornerstone - var image = {}; + const image = {}; // If we are looking at an MR or CT image, we should pass the slice thickness // to the Trial Criteria functions so that they can customize the validation rules if (seriesMetaData.modality === 'MR' || seriesMetaData.modality === 'CT') { - var instanceMetaData = cornerstoneTools.metaData.get('instance', imageId); + const instanceMetaData = cornerstoneTools.metaData.get('instance', imageId); image.acquisitionSliceThickness = instanceMetaData.sliceThickness; } // Retrieve the study metaData in order to find the timepoint type - var studyMetaData = cornerstoneTools.metaData.get('study', imageId); + const studyMetaData = cornerstoneTools.metaData.get('study', imageId); if (!studyMetaData) { return; } @@ -383,10 +384,10 @@ getTrialCriteriaConstraints = function(criteriaTypes, imageId) { } // Retrieve the Timepoint's type (e.g. 'baseline' or 'followup') - var timepointType = timepoint.timepointType; + const timepointType = timepoint.timepointType; // Obtain the customized trial criteria given the image metaData - criteria = TrialCriteriaConstraints[criteriaType](image); + criteria = OHIF.lesiontracker.TrialCriteriaConstraints[criteriaType](image); // Return the relevant criteria given the current timepoint type allCriteria.push(criteria[timepointType]); diff --git a/Packages/ohif-lesiontracker/lib/clearMeasurementTimepointData.js b/Packages/ohif-lesiontracker/client/lib/clearMeasurementTimepointData.js similarity index 60% rename from Packages/ohif-lesiontracker/lib/clearMeasurementTimepointData.js rename to Packages/ohif-lesiontracker/client/lib/clearMeasurementTimepointData.js index cdd9b968f..a728a4648 100644 --- a/Packages/ohif-lesiontracker/lib/clearMeasurementTimepointData.js +++ b/Packages/ohif-lesiontracker/client/lib/clearMeasurementTimepointData.js @@ -1,38 +1,21 @@ import { OHIF } from 'meteor/ohif:core'; -clearMeasurementTimepointData = function(measurementId, timepointId) { - var data = Measurements.findOne(measurementId); - - // Clear the Measurement data for this timepoint - var imageId = data.timepoints[timepointId].imageId; - var toolType = data.toolType; - removeToolDataWithMeasurementId(imageId, toolType, measurementId); - - // Update any viewports that are currently displaying this imageId - var enabledElements = cornerstone.getEnabledElementsByImageId(imageId); - enabledElements.forEach(function(enabledElement) { - cornerstone.updateImage(enabledElement.element); - }); - - -}; - -function removeToolDataWithMeasurementId(imageId, toolType, measurementId) { +const removeToolDataWithMeasurementId = (imageId, toolType, measurementId) => { OHIF.log.info('removeToolDataWithMeasurementId'); - var toolState = cornerstoneTools.globalImageIdSpecificToolStateManager.toolState; + const toolState = cornerstoneTools.globalImageIdSpecificToolStateManager.toolState; // Find any related toolData if (!toolState[imageId] || !toolState[imageId][toolType]) { return; } - var toolData = toolState[imageId][toolType].data; + const toolData = toolState[imageId][toolType].data; if (!toolData.length) { return; } // Search toolData for entries linked to the specified Measurement - var toRemove = []; + const toRemove = []; toolData.forEach(function(measurement, index) { if (measurement.id === measurementId || measurement._id === measurementId) { @@ -50,3 +33,16 @@ function removeToolDataWithMeasurementId(imageId, toolType, measurementId) { toolData.splice(index, 1); }); }; + +OHIF.lesiontracker.clearMeasurementTimepointData = (measurementId, timepointId) => { + const data = Measurements.findOne(measurementId); + + // Clear the Measurement data for this timepoint + const imageId = data.timepoints[timepointId].imageId; + const toolType = data.toolType; + removeToolDataWithMeasurementId(imageId, toolType, measurementId); + + // Update any viewports that are currently displaying this imageId + const enabledElements = cornerstone.getEnabledElementsByImageId(imageId); + enabledElements.forEach(enabledElement => cornerstone.updateImage(enabledElement.element)); +}; diff --git a/Packages/ohif-lesiontracker/lib/convertNonTarget.js b/Packages/ohif-lesiontracker/client/lib/convertNonTarget.js similarity index 95% rename from Packages/ohif-lesiontracker/lib/convertNonTarget.js rename to Packages/ohif-lesiontracker/client/lib/convertNonTarget.js index beace0787..eb8b85c14 100644 --- a/Packages/ohif-lesiontracker/lib/convertNonTarget.js +++ b/Packages/ohif-lesiontracker/client/lib/convertNonTarget.js @@ -67,6 +67,6 @@ convertNonTarget = function(measurementApi, measurementData, newTooltype) { if (measurement) { // Remove the timepointData from this Measurement and update it // in the database, if it is already in the database - clearMeasurementTimepointData(measurement._id, measurementData.timepointId); + OHIF.lesiontracker.clearMeasurementTimepointData(measurement._id, measurementData.timepointId); } }; diff --git a/Packages/ohif-lesiontracker/lib/convertToNonTarget.js b/Packages/ohif-lesiontracker/client/lib/convertToNonTarget.js similarity index 86% rename from Packages/ohif-lesiontracker/lib/convertToNonTarget.js rename to Packages/ohif-lesiontracker/client/lib/convertToNonTarget.js index 6957e9461..a961fdb49 100644 --- a/Packages/ohif-lesiontracker/lib/convertToNonTarget.js +++ b/Packages/ohif-lesiontracker/client/lib/convertToNonTarget.js @@ -1,17 +1,19 @@ -convertToNonTarget = function(measurementApi, measurementData) { +import { OHIF } from 'meteor/ohif:core'; + +OHIF.lesiontracker.convertToNonTarget = (measurementApi, measurementData) => { if (measurementData.isTarget === false) { return; } - var measurement = Measurements.findOne(measurementData.id); + const measurement = Measurements.findOne(measurementData.id); - var timepoint = Timepoints.findOne({ + const timepoint = Timepoints.findOne({ timepointId: measurementData.timepointId }); // Next, update the measurementData and add it to the new tool type - var toolType = 'nonTarget'; - var newMeasurement = { + const toolType = 'nonTarget'; + const newMeasurement = { id: 'notready', lesionNumber: LesionManager.getNewLesionNumber(measurementData.timepointId, false), visible: true, @@ -23,7 +25,7 @@ convertToNonTarget = function(measurementApi, measurementData) { isTarget: false, toolType: toolType }; - + if (timepoint && timepoint.timepointType === 'baseline') { newMeasurement.response = 'Present'; } else { @@ -79,6 +81,6 @@ convertToNonTarget = function(measurementApi, measurementData) { if (measurement) { // Remove the timepointData from this Measurement and update it // in the database, if it is already in the database - clearMeasurementTimepointData(measurement._id, measurementData.timepointId); + OHIF.lesiontracker.clearMeasurementTimepointData(measurement._id, measurementData.timepointId); } }; diff --git a/Packages/ohif-lesiontracker/client/lib/index.js b/Packages/ohif-lesiontracker/client/lib/index.js new file mode 100644 index 000000000..d9a2ecdcd --- /dev/null +++ b/Packages/ohif-lesiontracker/client/lib/index.js @@ -0,0 +1,12 @@ +// StudyList-related functions +import './studylist/openNewTabWithTimepoint.js'; +import './studylist/studylistModification.js'; + +// Library functions +import './TrialCriteriaConstraints.js'; +import './MeasurementValidation.js'; +import './pixelSpacingAutorunCheck.js'; +import './toggleLesionTrackerTools.js'; +import './clearMeasurementTimepointData.js'; +import './convertToNonTarget.js'; +import './convertNonTarget.js'; diff --git a/Packages/ohif-lesiontracker/lib/pixelSpacingAutorunCheck.js b/Packages/ohif-lesiontracker/client/lib/pixelSpacingAutorunCheck.js similarity index 58% rename from Packages/ohif-lesiontracker/lib/pixelSpacingAutorunCheck.js rename to Packages/ohif-lesiontracker/client/lib/pixelSpacingAutorunCheck.js index 4ffadce7c..552bc90fd 100644 --- a/Packages/ohif-lesiontracker/lib/pixelSpacingAutorunCheck.js +++ b/Packages/ohif-lesiontracker/client/lib/pixelSpacingAutorunCheck.js @@ -1,24 +1,26 @@ +import { Session } from 'meteor/session'; import { OHIF } from 'meteor/ohif:core'; -pixelSpacingAutorunCheck = function() { +OHIF.lesiontracker.pixelSpacingAutorunCheck = () => { OHIF.log.info('lesionTool button change autorun'); // Get oncology tools - var oncologyTools = $('button#lesion, button#nonTarget'); + const $oncologyTools = $('button#lesion, button#nonTarget'); // TODO: Set activeViewport for empty viewport element - var activeViewportIndex = Session.get('activeViewport'); + const activeViewportIndex = Session.get('activeViewport'); if (activeViewportIndex === undefined) { return; } - var element = $('.imageViewerViewport').get(activeViewportIndex); + const element = $('.imageViewerViewport').get(activeViewportIndex); if (!element) { return; } + let enabledElement; try { - var enabledElement = cornerstone.getEnabledElement(element); + enabledElement = cornerstone.getEnabledElement(element); } catch(error) { return; } @@ -29,10 +31,10 @@ pixelSpacingAutorunCheck = function() { !enabledElement.image.rowPixelSpacing || !enabledElement.image.columnPixelSpacing) { // Disable Lesion Buttons - oncologyTools.prop('disabled', true); + $oncologyTools.prop('disabled', true); } else { // Enable Lesion Buttons - oncologyTools.prop('disabled', false); + $oncologyTools.prop('disabled', false); } }; diff --git a/Packages/ohif-lesiontracker/lib/studylist/openNewTabWithTimepoint.js b/Packages/ohif-lesiontracker/client/lib/studylist/openNewTabWithTimepoint.js similarity index 97% rename from Packages/ohif-lesiontracker/lib/studylist/openNewTabWithTimepoint.js rename to Packages/ohif-lesiontracker/client/lib/studylist/openNewTabWithTimepoint.js index fba9e5a6e..608de6c8d 100644 --- a/Packages/ohif-lesiontracker/lib/studylist/openNewTabWithTimepoint.js +++ b/Packages/ohif-lesiontracker/client/lib/studylist/openNewTabWithTimepoint.js @@ -7,7 +7,7 @@ import { OHIF } from 'meteor/ohif:core'; * @param timepointId The UID of the Timepoint to be opened * @param title The title to be used for the tab heading */ -openNewTabWithTimepoint = function(timepointId, title) { +OHIF.lesiontracker.openNewTabWithTimepoint = (timepointId, title) => { const contentId = 'viewerTab'; const Timepoints = StudyList.timepointApi.timepoints; diff --git a/Packages/ohif-lesiontracker/lib/studylist/studylistModification.js b/Packages/ohif-lesiontracker/client/lib/studylist/studylistModification.js similarity index 95% rename from Packages/ohif-lesiontracker/lib/studylist/studylistModification.js rename to Packages/ohif-lesiontracker/client/lib/studylist/studylistModification.js index b10eb14e8..84ce3c67a 100644 --- a/Packages/ohif-lesiontracker/lib/studylist/studylistModification.js +++ b/Packages/ohif-lesiontracker/client/lib/studylist/studylistModification.js @@ -28,7 +28,7 @@ function dblClickOnStudy(data) { if (timepoint) { // Add the Timepoint name to the Patient name to create the tab title title += ' ' + timepointApi.name(timepoint); - openNewTabWithTimepoint(timepoint.timepointId, title); + OHIF.lesiontracker.openNewTabWithTimepoint(timepoint.timepointId, title); } else { open(data.studyInstanceUid, title); } diff --git a/Packages/ohif-lesiontracker/lib/toggleLesionTrackerTools.js b/Packages/ohif-lesiontracker/client/lib/toggleLesionTrackerTools.js similarity index 84% rename from Packages/ohif-lesiontracker/lib/toggleLesionTrackerTools.js rename to Packages/ohif-lesiontracker/client/lib/toggleLesionTrackerTools.js index a78926dab..b311bc995 100644 --- a/Packages/ohif-lesiontracker/lib/toggleLesionTrackerTools.js +++ b/Packages/ohif-lesiontracker/client/lib/toggleLesionTrackerTools.js @@ -1,20 +1,22 @@ +import { OHIF } from 'meteor/ohif:core'; + /** * Show / hide lesion tracker tools */ -var previousStates; -var previousActiveTool; +let previousStates; +let previousActiveTool; -var toolsShown = true; +let toolsShown = true; -toggleLesionTrackerTools = function() { +OHIF.lesiontracker.toggleLesionTrackerTools = () => { if (toolsShown === true) { // Save the current settings for later previousStates = toolManager.getToolDefaultStates(); previousActiveTool = toolManager.getActiveTool(); // Hide the tools (set them all to disabled) - var toolDefaultStates = { + const toolDefaultStates = { activate: [ 'deleteLesionKeyboardTool' ], deactivate: [], enable: [], diff --git a/Packages/ohif-lesiontracker/package.js b/Packages/ohif-lesiontracker/package.js index 94c638b91..e1d1a0bd9 100644 --- a/Packages/ohif-lesiontracker/package.js +++ b/Packages/ohif-lesiontracker/package.js @@ -25,89 +25,15 @@ Package.onUse(function(api) { api.use('ohif:cornerstone'); api.use('ohif:measurements'); - api.addFiles('both/configuration/bidirectional.js', [ 'client', 'server' ]); - api.addFiles('both/configuration/nonTarget.js', [ 'client', 'server' ]); - api.addFiles('both/configuration/ellipse.js', [ 'client', 'server' ]); - api.addFiles('both/configuration/length.js', [ 'client', 'server' ]); - api.addFiles('both/configuration/measurementTools.js', [ 'client', 'server' ]); + api.addFiles('both/index.js', [ 'client', 'server' ]); - api.addFiles('both/configuration/dataExchange.js', [ 'client', 'server' ]); - api.addFiles('both/configuration/dataValidation.js', [ 'client', 'server' ]); - api.addFiles('both/configuration/configuration.js', [ 'client', 'server' ]); + api.addFiles('server/index.js', 'server'); - - api.addFiles('server/methods.js', 'server'); - - - // Client-side collections - api.addFiles('client/collections/LesionLocations.js', 'client'); - api.addFiles('client/collections/LocationResponses.js', 'client'); - - // Additional Custom Cornerstone Tools for Lesion Tracker - api.addFiles([ - 'client/compatibility/bidirectionalTool.js', - 'client/compatibility/nonTargetTool.js', - 'client/compatibility/scaleOverlayTool.js', - 'client/compatibility/deleteLesionKeyboardTool.js', - 'client/compatibility/qualitativeTargetTools.js' - ], 'client', { - bare: true - }); - - api.addFiles('client/tools.js', 'client'); - - // UI Components - api.addFiles('client/components/optionsModal/optionsModal.html', 'client'); - api.addFiles('client/components/optionsModal/optionsModal.styl', 'client'); - api.addFiles('client/components/optionsModal/optionsModal.js', 'client'); - - api.addFiles('client/components/optionsModal/recistDescription/recistDescription.html', 'client'); - api.addFiles('client/components/optionsModal/irRCDescription/irRCDescription.html', 'client'); - - api.addFiles('client/components/measurementLocationDialog/measurementLocationDialog.html', 'client'); - api.addFiles('client/components/measurementLocationDialog/measurementLocationDialog.js', 'client'); - api.addFiles('client/components/measurementLocationDialog/measurementLocationDialog.styl', 'client'); - - api.addFiles('client/components/nonTargetLesionDialog/nonTargetLesionDialog.html', 'client'); - api.addFiles('client/components/nonTargetLesionDialog/nonTargetLesionDialog.styl', 'client'); - api.addFiles('client/components/nonTargetLesionDialog/nonTargetLesionDialog.js', 'client'); - - api.addFiles('client/components/nonTargetResponseDialog/nonTargetResponseDialog.html', 'client'); - api.addFiles('client/components/nonTargetResponseDialog/nonTargetResponseDialog.styl', 'client'); - api.addFiles('client/components/nonTargetResponseDialog/nonTargetResponseDialog.js', 'client'); - - api.addFiles('client/components/measureFlow/measureFlow.html', 'client'); - api.addFiles('client/components/measureFlow/measureFlow.styl', 'client'); - api.addFiles('client/components/measureFlow/measureFlow.js', 'client'); - - // StudyList-related functions - api.addFiles('lib/studylist/openNewTabWithTimepoint.js', 'client'); - api.addFiles('lib/studylist/studylistModification.js', 'client'); - - // Library functions - api.addFiles('lib/TrialCriteriaConstraints.js', 'client'); - api.addFiles('lib/MeasurementValidation.js', 'client'); - - api.addFiles('lib/pixelSpacingAutorunCheck.js', 'client'); - api.addFiles('lib/toggleLesionTrackerTools.js', 'client'); - api.addFiles('lib/clearMeasurementTimepointData.js', 'client'); - api.addFiles('lib/convertToNonTarget.js', 'client'); - api.addFiles('lib/convertNonTarget.js', 'client'); + api.addFiles('client/index.js', 'client'); // Export global functions - api.export('pixelSpacingAutorunCheck', 'client'); - api.export('syncImageMeasurementAndToolData', 'client'); - api.export('openNewTabWithTimepoint', 'client'); - api.export('toggleLesionTrackerTools', 'client'); - api.export('clearMeasurementTimepointData', 'client'); - api.export('getTrialCriteriaConstraints', 'client'); - api.export('convertToNonTarget', 'client'); api.export('convertNonTarget', 'client'); - // Export global objects - api.export('MeasurementValidation', 'client'); - api.export('TrialCriteriaConstraints', 'client'); - // Export client-side collections api.export('ValidationErrors', 'client'); api.export('LesionLocations', 'client'); @@ -116,9 +42,5 @@ Package.onUse(function(api) { // Export collections spanning both client and server api.export('AdditionalFindings', [ 'client', 'server' ]); - - // Export utility classes - api.export('FormUtils', 'client'); - api.export('Configuration', ['client', 'server']); }); diff --git a/Packages/ohif-lesiontracker/server/index.js b/Packages/ohif-lesiontracker/server/index.js new file mode 100644 index 000000000..29f8469d2 --- /dev/null +++ b/Packages/ohif-lesiontracker/server/index.js @@ -0,0 +1 @@ +import './methods.js'; diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js index d55296141..75aadeee0 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js @@ -29,7 +29,7 @@ Template.measurementTableHeaderRow.onCreated(() => { return criteria.id; }); - const currentConstraints = getTrialCriteriaConstraints(criteriaTypes); + const currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes); if (!currentConstraints) { return; } diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.js index 0a148d280..41966fdb8 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.js @@ -44,7 +44,7 @@ function doneCallback(measurementData, deleteTool) { // the specified Timepoint Cell if (deleteTool === true) { OHIF.log.info('Confirm clicked!'); - clearMeasurementTimepointData(measurementData.id, measurementData.timepointId); + OHIF.lesiontracker.clearMeasurementTimepointData(measurementData.id, measurementData.timepointId); } } @@ -80,7 +80,7 @@ Template.measurementTableTimepointCell.events({ if (currentMeasurement.isTarget) { showConfirmDialog(function() { - clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID); + OHIF.lesiontracker.clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID); }); } else { changeNonTargetResponse(measurementData, null, doneCallback); @@ -94,7 +94,7 @@ Template.measurementTableTimepointCell.events({ const currentTimepointID = this.timepointId; showConfirmDialog(function() { - clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID); + OHIF.lesiontracker.clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID); }); } }