From 60aa1d098255812afecf1e7bac8c207ae9e090c4 Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Tue, 20 Sep 2016 17:47:44 -0300 Subject: [PATCH] PWV-3: Creating ohif:log package and partially refactoring ohif:measurements --- LesionTracker/.meteor/versions | 1 + .../client/components/viewer/viewer.js | 4 +- OHIFViewer/client/components/viewer/viewer.js | 4 +- .../client/components/viewer/viewer.js | 4 +- Packages/ohif-core/client/index.js | 2 +- Packages/ohif-core/main.js | 1 + Packages/ohif-cornerstone/main.js | 24 ++++ Packages/ohif-cornerstone/package.js | 4 +- .../ruleEntryDialog/ruleEntryDialog.js | 8 +- Packages/ohif-hanging-protocols/log.js | 3 - Packages/ohif-hanging-protocols/package.js | 6 - .../components/optionsModal/optionsModal.js | 4 +- .../lib/MeasurementValidation.js | 12 +- .../lib/TrialCriteriaConstraints.js | 6 +- .../lib/clearMeasurementTimepointData.js | 8 +- .../lib/convertNonTarget.js | 4 +- .../lib/getTimepointName.js | 44 ------- .../lib/pixelSpacingAutorunCheck.js | 6 +- .../lib/studylist/openNewTabWithTimepoint.js | 6 +- .../lib/syncMeasurementAndToolData.js | 6 +- Packages/ohif-lesiontracker/log.js | 3 - Packages/ohif-lesiontracker/package.js | 14 +-- Packages/ohif-log/main.js | 7 ++ Packages/ohif-log/package.js | 20 +++ .../both/configuration/measurements.js | 1 - .../both/configuration/timepoints.js | 6 +- .../associationModal/associationModal.js | 4 +- .../longitudinalStudyListContextMenu.js | 4 +- .../measurementTable/measurementTable.js | 4 +- .../measurementTableRow.js | 8 +- .../measurementTableTimepointCell.js | 4 +- .../measurementTableView.html | 14 +-- .../ohif-measurements/client/helpers/index.js | 1 + .../client/helpers/measurements.js | 20 +-- .../client/helpers/timepoints.js | 5 - Packages/ohif-measurements/client/index.js | 4 + .../client/lib/MeasurementHandlers.js | 6 +- .../client/lib/activateLesion.js | 66 +++++----- .../client/lib/activateMeasurements.js | 77 +++--------- .../client/lib/activateTool.js | 44 +++++++ .../client/lib/clearTools.js | 60 --------- .../client/lib/deactivateAllToolData.js | 4 +- .../client/lib/getTimepointName.js | 6 +- .../lib/hangingProtocolCustomizations.js | 8 +- .../ohif-measurements/client/lib/index.js | 10 ++ .../client/lib/syncMeasurementAndToolData.js | 6 +- Packages/ohif-measurements/log.js | 3 - Packages/ohif-measurements/package.js | 24 +--- Packages/ohif-petsuv/log.js | 3 - Packages/ohif-petsuv/package.js | 7 +- .../studylistResult/studylistResult.js | 4 +- .../studylistStudy/studylistStudy.js | 14 ++- .../client/lib/getStudiesMetadata.js | 6 +- .../client/lib/getStudyMetadata.js | 6 +- .../client/lib/importStudies.js | 6 +- .../ohif-study-list/client/lib/switchToTab.js | 6 +- Packages/ohif-study-list/log.js | 3 - Packages/ohif-study-list/package.js | 6 - .../server/methods/getStudyMetadata.js | 4 +- .../server/services/dimse/retrieveMetadata.js | 37 +++--- .../server/services/dimse/studies.js | 118 +++++++++--------- Packages/ohif-user-management/log.js | 3 - Packages/ohif-user-management/package.js | 5 - .../imageViewerViewport.js | 24 ++-- .../toolbarSectionButton.js | 4 +- .../viewer/viewerMain/viewerMain.js | 6 +- Packages/ohif-viewerbase/lib/WLPresets.js | 2 +- .../lib/displayReferenceLines.js | 2 +- Packages/ohif-viewerbase/lib/enableHotkeys.js | 4 +- .../lib/enablePrefetchOnElement.js | 6 +- .../ohif-viewerbase/lib/getWADORSImageId.js | 4 +- Packages/ohif-viewerbase/lib/layoutManager.js | 6 +- Packages/ohif-viewerbase/log.js | 3 - Packages/ohif-viewerbase/package.js | 3 - ...99fe52d37f20fa59c58ba61e783d73eb2b4db91.js | 3 +- .../client/components/viewer/viewer.js | 4 +- 76 files changed, 410 insertions(+), 479 deletions(-) create mode 100644 Packages/ohif-cornerstone/main.js delete mode 100644 Packages/ohif-hanging-protocols/log.js delete mode 100644 Packages/ohif-lesiontracker/lib/getTimepointName.js delete mode 100644 Packages/ohif-lesiontracker/log.js create mode 100644 Packages/ohif-log/main.js create mode 100644 Packages/ohif-log/package.js create mode 100644 Packages/ohif-measurements/client/helpers/index.js delete mode 100644 Packages/ohif-measurements/client/helpers/timepoints.js create mode 100644 Packages/ohif-measurements/client/index.js create mode 100644 Packages/ohif-measurements/client/lib/activateTool.js delete mode 100644 Packages/ohif-measurements/client/lib/clearTools.js create mode 100644 Packages/ohif-measurements/client/lib/index.js delete mode 100644 Packages/ohif-measurements/log.js delete mode 100644 Packages/ohif-petsuv/log.js delete mode 100644 Packages/ohif-study-list/log.js delete mode 100644 Packages/ohif-user-management/log.js delete mode 100644 Packages/ohif-viewerbase/log.js diff --git a/LesionTracker/.meteor/versions b/LesionTracker/.meteor/versions index 9eaf26fcb..f59ac7340 100644 --- a/LesionTracker/.meteor/versions +++ b/LesionTracker/.meteor/versions @@ -95,6 +95,7 @@ ohif:cornerstone@0.0.1 ohif:dicom-services@0.0.1 ohif:hanging-protocols@0.0.1 ohif:lesiontracker@0.0.1 +ohif:log@0.0.1 ohif:measurements@0.0.1 ohif:study-list@0.0.1 ohif:user-management@0.0.1 diff --git a/LesionTracker/client/components/viewer/viewer.js b/LesionTracker/client/components/viewer/viewer.js index 2d17a1ee0..eb1e5b246 100644 --- a/LesionTracker/client/components/viewer/viewer.js +++ b/LesionTracker/client/components/viewer/viewer.js @@ -37,11 +37,11 @@ Template.viewer.onCreated(() => { OHIF.viewer.defaultHotkeys.nonTarget = 'N'; // Non-target if (ViewerData[contentId].loadedSeriesData) { - log.info('Reloading previous loadedSeriesData'); + OHIF.log.info('Reloading previous loadedSeriesData'); OHIF.viewer.loadedSeriesData = ViewerData[contentId].loadedSeriesData; } else { - log.info('Setting default ViewerData'); + OHIF.log.info('Setting default ViewerData'); OHIF.viewer.loadedSeriesData = {}; ViewerData[contentId].loadedSeriesData = {}; Session.set('ViewerData', ViewerData); diff --git a/OHIFViewer/client/components/viewer/viewer.js b/OHIFViewer/client/components/viewer/viewer.js index 83140c505..042497f48 100644 --- a/OHIFViewer/client/components/viewer/viewer.js +++ b/OHIFViewer/client/components/viewer/viewer.js @@ -33,10 +33,10 @@ Template.viewer.onCreated(() => { const contentId = instance.data.contentId; if (ViewerData[contentId] && ViewerData[contentId].loadedSeriesData) { - log.info('Reloading previous loadedSeriesData'); + OHIF.log.info('Reloading previous loadedSeriesData'); OHIF.viewer.loadedSeriesData = ViewerData[contentId].loadedSeriesData; } else { - log.info('Setting default ViewerData'); + OHIF.log.info('Setting default ViewerData'); OHIF.viewer.loadedSeriesData = {}; ViewerData[contentId] = {}; ViewerData[contentId].loadedSeriesData = OHIF.viewer.loadedSeriesData; diff --git a/PETSUVMeasurements/client/components/viewer/viewer.js b/PETSUVMeasurements/client/components/viewer/viewer.js index 8567f7b01..242d96cb2 100644 --- a/PETSUVMeasurements/client/components/viewer/viewer.js +++ b/PETSUVMeasurements/client/components/viewer/viewer.js @@ -16,11 +16,11 @@ Template.viewer.onCreated(() => { const contentId = instance.data.contentId; if (ViewerData[contentId].loadedSeriesData) { - log.info('Reloading previous loadedSeriesData'); + OHIF.log.info('Reloading previous loadedSeriesData'); OHIF.viewer.loadedSeriesData = ViewerData[contentId].loadedSeriesData; } else { - log.info('Setting default ViewerData'); + OHIF.log.info('Setting default ViewerData'); OHIF.viewer.loadedSeriesData = {}; ViewerData[contentId].loadedSeriesData = {}; Session.set('ViewerData', ViewerData); diff --git a/Packages/ohif-core/client/index.js b/Packages/ohif-core/client/index.js index df6c99701..2a7930717 100644 --- a/Packages/ohif-core/client/index.js +++ b/Packages/ohif-core/client/index.js @@ -1,6 +1,6 @@ import './lib'; -import './components'; import './helpers'; +import './components'; import './ui'; import './routes.js'; diff --git a/Packages/ohif-core/main.js b/Packages/ohif-core/main.js index 4c53b9da9..f47c51db6 100644 --- a/Packages/ohif-core/main.js +++ b/Packages/ohif-core/main.js @@ -3,6 +3,7 @@ */ const OHIF = { + log: {}, viewer: {}, measurements: {} }; diff --git a/Packages/ohif-cornerstone/main.js b/Packages/ohif-cornerstone/main.js new file mode 100644 index 000000000..3b8d95406 --- /dev/null +++ b/Packages/ohif-cornerstone/main.js @@ -0,0 +1,24 @@ +// TODO: stop exposing the libraries below and start using imports + +import { cornerstone } from './client/cornerstone.js'; +import { dicomParser } from './client/dicomParser.js'; +import { cornerstoneMath } from './client/cornerstoneMath.js'; +import { cornerstoneTools } from './client/cornerstoneTools.js'; +import { cornerstoneWADOImageLoader } from './client/cornerstoneWADOImageLoader.js'; + +// Expose the cornerstone objects to the client if it is on development mode +if (Meteor.isDevelopment) { + window.cornerstone = cornerstone; + window.cornerstoneMath = cornerstoneMath; + window.cornerstoneTools = cornerstoneTools; + window.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader; + window.dicomParser = dicomParser; +} + +export { + cornerstone, + cornerstoneMath, + cornerstoneTools, + cornerstoneWADOImageLoader, + dicomParser +}; diff --git a/Packages/ohif-cornerstone/package.js b/Packages/ohif-cornerstone/package.js index ecc4f4be4..50fc5592d 100644 --- a/Packages/ohif-cornerstone/package.js +++ b/Packages/ohif-cornerstone/package.js @@ -41,5 +41,5 @@ Package.onUse(function(api) { api.export('cornerstoneMath', 'client'); api.export('cornerstoneTools', 'client'); api.export('cornerstoneWADOImageLoader', 'client'); - api.export('dicomParser', ['client', 'server']); -}); \ No newline at end of file + api.export('dicomParser', 'client'); +}); diff --git a/Packages/ohif-hanging-protocols/client/components/ruleEntryDialog/ruleEntryDialog.js b/Packages/ohif-hanging-protocols/client/components/ruleEntryDialog/ruleEntryDialog.js index dcce0f6b9..62855d8dd 100644 --- a/Packages/ohif-hanging-protocols/client/components/ruleEntryDialog/ruleEntryDialog.js +++ b/Packages/ohif-hanging-protocols/client/components/ruleEntryDialog/ruleEntryDialog.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + var keys = { ESC: 27 }; @@ -118,7 +120,7 @@ function getActiveViewportImageId() { return; } } catch(error) { - log.warn(error); + OHIF.log.warn(error); return; } // Return the enabled element's imageId @@ -141,7 +143,7 @@ function getAbstractPriorValue(imageId) { if (!priorStudy) { return; } - + var studies = StudyListStudies.find({ patientId: currentStudy.patientId, studyDate: { @@ -184,7 +186,7 @@ function getCurrentAttributeValue(attribute, level) { if (level === 'protocol') { level = 'study'; } - + if (attribute === 'abstractPriorValue') { return getAbstractPriorValue(imageId); } diff --git a/Packages/ohif-hanging-protocols/log.js b/Packages/ohif-hanging-protocols/log.js deleted file mode 100644 index e2a628d61..000000000 --- a/Packages/ohif-hanging-protocols/log.js +++ /dev/null @@ -1,3 +0,0 @@ -// Create package logger using loglevel -// https://atmospherejs.com/spacejamio/loglevel -log = loglevel.createPackageLogger('hangingprotocols', defaultLevel = 'info'); diff --git a/Packages/ohif-hanging-protocols/package.js b/Packages/ohif-hanging-protocols/package.js index b62a877de..0ebd407dc 100755 --- a/Packages/ohif-hanging-protocols/package.js +++ b/Packages/ohif-hanging-protocols/package.js @@ -12,7 +12,6 @@ Package.onUse(function(api) { api.use('jquery'); api.use('stylus'); api.use('random'); - api.use('practicalmeteor:loglevel'); api.use('templating'); api.use('natestrauser:select2@4.0.1', 'client'); api.use('clinical:router'); @@ -22,11 +21,6 @@ Package.onUse(function(api) { // Our custom packages api.use('ohif:viewerbase'); - // This sets the default logging level of the package using the - // loglevel package. It can be overridden in the JavaScript - // console for debugging purposes - api.addFiles('log.js'); - api.addAssets('assets/dots.svg', 'client'); // Both client & server diff --git a/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.js b/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.js index 69df7d5d0..d8c0a1a85 100644 --- a/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.js +++ b/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + TrialCriteriaTypes = new Meteor.Collection(null); TrialCriteriaTypes.insert({ @@ -54,7 +56,7 @@ Template.optionsModal.events({ 'click a.clearAllStudyTimepointAssociations': function() { Meteor.call('clearAllTimepoints', function(error) { if (error) { - log.warn(error); + OHIF.log.warn(error); } }); } diff --git a/Packages/ohif-lesiontracker/lib/MeasurementValidation.js b/Packages/ohif-lesiontracker/lib/MeasurementValidation.js index bf2724443..b41fc5b21 100644 --- a/Packages/ohif-lesiontracker/lib/MeasurementValidation.js +++ b/Packages/ohif-lesiontracker/lib/MeasurementValidation.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + // Create a client-only Collection to store our Validation Errors ValidationErrors = new Meteor.Collection(null); ValidationErrors._debugName = 'ValidationErrors'; @@ -55,7 +57,7 @@ function addValidationErrorsToCollection(validationErrors, prefix, type) { * @returns {Array} Array of error messages related to the input conformance checks */ function assessGroupOfMeasurements(constraints) { - log.info('assessGroupOfMeasurements'); + OHIF.log.info('assessGroupOfMeasurements'); // Retrieve the group-level constraints var groupConstraints = constraints.group; @@ -95,7 +97,7 @@ function assessGroupOfMeasurements(constraints) { * @returns {Array} Array of error messages related to the input conformance checks */ function assessMeasurementPerOrgan(constraints) { - log.info('assessMeasurementPerOrgan'); + OHIF.log.info('assessMeasurementPerOrgan'); // Retrieve the per-organ constraints var perOrganConstraints = constraints.perOrgan; @@ -154,7 +156,7 @@ function assessMeasurementPerOrgan(constraints) { * @returns {Array} Array of error messages related to the input conformance checks */ function assessSingleMeasurement(constraints, measurementData) { - log.info('assessSingleMeasurement'); + OHIF.log.info('assessSingleMeasurement'); // Check whether this is a Target or Non-Target Measurement var targetType = measurementData.isTarget ? 'target' : 'nonTarget'; @@ -262,7 +264,7 @@ function validateSingleMeasurement(measurementData) { } function validateGroups() { - log.info('validateGroups'); + OHIF.log.info('validateGroups'); // Obtain the names of the current TrialResponseAssessmentCriteria that // we are using. @@ -281,7 +283,7 @@ function validateGroups() { // TODO: Revisit this! We can't use the Timepoints collection inside ANY // of these functions, since it causes an infinite loop, since Measurement // validation is performed inside the observe:added hook for the Measurements - // Collection. + // Collection. var timepointTypes = ['baseline', 'followup']; timepointTypes.forEach(function(timepointType) { diff --git a/Packages/ohif-lesiontracker/lib/TrialCriteriaConstraints.js b/Packages/ohif-lesiontracker/lib/TrialCriteriaConstraints.js index 5b79a5831..fadf08f63 100644 --- a/Packages/ohif-lesiontracker/lib/TrialCriteriaConstraints.js +++ b/Packages/ohif-lesiontracker/lib/TrialCriteriaConstraints.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + // Define the Trial Criteria Structure TrialCriteriaConstraints = { RECIST: RECIST, @@ -148,7 +150,7 @@ function RECIST(image) { /** * irRC Trial Criteria Definition - * + * * Baseline Checks: * - Target lesions must be >/= 10 X 10 mm * - Up to a max of 5 target lesions per organ @@ -376,7 +378,7 @@ getTrialCriteriaConstraints = function(criteriaTypes, imageId) { const timepoint = timepointApi.study(studyMetaData.studyInstanceUid)[0]; if (!timepoint) { - log.warn('Timepoint related to study is missing.'); + OHIF.log.warn('Timepoint related to study is missing.'); return; } diff --git a/Packages/ohif-lesiontracker/lib/clearMeasurementTimepointData.js b/Packages/ohif-lesiontracker/lib/clearMeasurementTimepointData.js index a014b5073..cdd9b968f 100644 --- a/Packages/ohif-lesiontracker/lib/clearMeasurementTimepointData.js +++ b/Packages/ohif-lesiontracker/lib/clearMeasurementTimepointData.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + clearMeasurementTimepointData = function(measurementId, timepointId) { var data = Measurements.findOne(measurementId); @@ -16,7 +18,7 @@ clearMeasurementTimepointData = function(measurementId, timepointId) { }; function removeToolDataWithMeasurementId(imageId, toolType, measurementId) { - log.info('removeToolDataWithMeasurementId'); + OHIF.log.info('removeToolDataWithMeasurementId'); var toolState = cornerstoneTools.globalImageIdSpecificToolStateManager.toolState; // Find any related toolData @@ -39,8 +41,8 @@ function removeToolDataWithMeasurementId(imageId, toolType, measurementId) { } }); - log.info('Removing Indices: '); - log.info(toRemove); + OHIF.log.info('Removing Indices: '); + OHIF.log.info(toRemove); // If any toolData entries need to be removed, splice them from // the toolData array diff --git a/Packages/ohif-lesiontracker/lib/convertNonTarget.js b/Packages/ohif-lesiontracker/lib/convertNonTarget.js index da9e8bb8a..beace0787 100644 --- a/Packages/ohif-lesiontracker/lib/convertNonTarget.js +++ b/Packages/ohif-lesiontracker/lib/convertNonTarget.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + var responseTypes = { crTool: 'CR', exTool: 'EX', @@ -16,7 +18,7 @@ convertNonTarget = function(measurementApi, measurementData, newTooltype) { }); if (timepoint && timepoint.timepointType !== 'followup') { - log.warn('Not a followup'); + OHIF.log.warn('Not a followup'); return; } diff --git a/Packages/ohif-lesiontracker/lib/getTimepointName.js b/Packages/ohif-lesiontracker/lib/getTimepointName.js deleted file mode 100644 index 53308006a..000000000 --- a/Packages/ohif-lesiontracker/lib/getTimepointName.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Calculates a Timepoint's name based on how many timepoints exist between it - * and the latest Baseline. Names returned are in the form of 'Baseline', or - * 'Follow-up 1', 'Follow-up 2', and so on. - * - * @param timepoint - * @returns {*} The timepoint name - */ -getTimepointName = function(timepoint) { - // Check if this is a Baseline timepoint, if it is, return 'Baseline' - if (timepoint.timepointType === 'baseline') { - return 'Baseline'; - } - - // Retrieve all of the relevant follow-up timepoints for this patient - var followupTimepoints = Timepoints.find({ - patientId: timepoint.patientId, - timepointType: timepoint.timepointType - }, { - sort: { - latestDate: 1 - } - }); - - // Create an array of just timepointIds, so we can use indexOf - // on it to find the current timepoint's relative position - var followupTimepointIds = followupTimepoints.map(function(timepoint) { - return timepoint.timepointId; - }); - - // Calculate the index of the current timepoint in the array of all - // relevant follow-up timepoints - var index = followupTimepointIds.indexOf(timepoint.timepointId) + 1; - - // If index is 0, it means that the current timepoint was not in the list - // Log a warning and return here - if (!index) { - log.warn('Current follow-up was not in the list of relevant follow-ups?'); - return; - } - - // Return the timepoint name as 'Follow-up N' - return 'Follow-up ' + index; -}; diff --git a/Packages/ohif-lesiontracker/lib/pixelSpacingAutorunCheck.js b/Packages/ohif-lesiontracker/lib/pixelSpacingAutorunCheck.js index 14fd1b79e..4ffadce7c 100644 --- a/Packages/ohif-lesiontracker/lib/pixelSpacingAutorunCheck.js +++ b/Packages/ohif-lesiontracker/lib/pixelSpacingAutorunCheck.js @@ -1,5 +1,7 @@ +import { OHIF } from 'meteor/ohif:core'; + pixelSpacingAutorunCheck = function() { - log.info('lesionTool button change autorun'); + OHIF.log.info('lesionTool button change autorun'); // Get oncology tools var oncologyTools = $('button#lesion, button#nonTarget'); @@ -33,4 +35,4 @@ pixelSpacingAutorunCheck = function() { oncologyTools.prop('disabled', false); } -}; \ No newline at end of file +}; diff --git a/Packages/ohif-lesiontracker/lib/studylist/openNewTabWithTimepoint.js b/Packages/ohif-lesiontracker/lib/studylist/openNewTabWithTimepoint.js index 7851b0bfb..fba9e5a6e 100644 --- a/Packages/ohif-lesiontracker/lib/studylist/openNewTabWithTimepoint.js +++ b/Packages/ohif-lesiontracker/lib/studylist/openNewTabWithTimepoint.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + /** * Opens a new tab in the tabbed studylist environment using * a given timepoint and new tab title. @@ -12,7 +14,7 @@ openNewTabWithTimepoint = function(timepointId, title) { const timepoint = Timepoints.findOne({ timepointId: timepointId }); - + if (!timepoint) { throw 'No such timepoint exists'; } @@ -73,7 +75,7 @@ function getDataFromTimepoint(timepoint) { relatedStudies = relatedStudies.concat(baseline.studyInstanceUids[0]); timepointIds.push(baseline.timepointId); } else { - log.warn('No Baseline found while opening a Follow-up Timepoint'); + OHIF.log.warn('No Baseline found while opening a Follow-up Timepoint'); } timepointIds.push(timepoint.timepointId); diff --git a/Packages/ohif-lesiontracker/lib/syncMeasurementAndToolData.js b/Packages/ohif-lesiontracker/lib/syncMeasurementAndToolData.js index ffa92f39c..9c863c94c 100644 --- a/Packages/ohif-lesiontracker/lib/syncMeasurementAndToolData.js +++ b/Packages/ohif-lesiontracker/lib/syncMeasurementAndToolData.js @@ -1,10 +1,12 @@ +import { OHIF } from 'meteor/ohif:core'; + function toolDataExists(toolState, imageId, toolType) { const currentToolState = toolState[imageId][toolType]; return (currentToolState && currentToolState.data && currentToolState.data.length); } syncMeasurementAndToolData = function(measurement) { - log.info('syncMeasurementAndToolData'); + OHIF.log.info('syncMeasurementAndToolData'); const toolState = cornerstoneTools.globalImageIdSpecificToolStateManager.toolState; const imageId = measurement.imageId; @@ -57,4 +59,4 @@ syncMeasurementAndToolData = function(measurement) { // Add the MeasurementData into the toolData for this imageId toolState[imageId][toolType].data.push(measurement); -}; \ No newline at end of file +}; diff --git a/Packages/ohif-lesiontracker/log.js b/Packages/ohif-lesiontracker/log.js deleted file mode 100644 index 7635f29ef..000000000 --- a/Packages/ohif-lesiontracker/log.js +++ /dev/null @@ -1,3 +0,0 @@ -// Create package logger using loglevel -// https://atmospherejs.com/spacejamio/loglevel -log = loglevel.createPackageLogger('lesiontracker', defaultLevel = 'info'); diff --git a/Packages/ohif-lesiontracker/package.js b/Packages/ohif-lesiontracker/package.js index e6a2bdb21..cd4a464af 100644 --- a/Packages/ohif-lesiontracker/package.js +++ b/Packages/ohif-lesiontracker/package.js @@ -15,9 +15,6 @@ Package.onUse(function(api) { api.use('validatejs'); - // Control over logging - api.use('practicalmeteor:loglevel'); - // Template overriding api.use('aldeed:template-extension@4.0.0'); @@ -28,14 +25,12 @@ Package.onUse(function(api) { api.use('ohif:cornerstone'); api.use('ohif:measurements'); - api.addFiles('log.js', [ 'client', 'server' ]); - 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/configuration/dataExchange.js', [ 'client', 'server' ]); api.addFiles('both/configuration/dataValidation.js', [ 'client', 'server' ]); api.addFiles('both/configuration/configuration.js', [ 'client', 'server' ]); @@ -72,7 +67,7 @@ Package.onUse(function(api) { 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'); @@ -92,7 +87,7 @@ Package.onUse(function(api) { // 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'); @@ -106,9 +101,6 @@ Package.onUse(function(api) { api.export('syncMeasurementAndToolData', 'client'); api.export('syncImageMeasurementAndToolData', 'client'); api.export('openNewTabWithTimepoint', 'client'); - api.export('activateLesion', 'client'); - api.export('activateMeasurements', 'client'); - api.export('deactivateAllToolData', 'client'); api.export('toggleLesionTrackerTools', 'client'); api.export('clearMeasurementTimepointData', 'client'); api.export('getTrialCriteriaConstraints', 'client'); diff --git a/Packages/ohif-log/main.js b/Packages/ohif-log/main.js new file mode 100644 index 000000000..1c42f9639 --- /dev/null +++ b/Packages/ohif-log/main.js @@ -0,0 +1,7 @@ +import { OHIF } from 'meteor/ohif:core'; +import { loglevel } from 'meteor/practicalmeteor:loglevel'; + +const defaultLevel = Meteor.isProduction ? 'error' : 'trace'; + +// Create package logger using loglevel +OHIF.log = loglevel.createLogger('', defaultLevel); diff --git a/Packages/ohif-log/package.js b/Packages/ohif-log/package.js new file mode 100644 index 000000000..d24b70200 --- /dev/null +++ b/Packages/ohif-log/package.js @@ -0,0 +1,20 @@ +Package.describe({ + name: 'ohif:log', + summary: 'OHIF Logging', + version: '0.0.1' +}); + +Package.onUse(function(api) { + api.versionsFrom('1.4'); + + api.use('ecmascript'); + api.use('standard-app-packages'); + + // Control over logging + api.use('practicalmeteor:loglevel'); + + // Our custom packages + api.use('ohif:core'); + + api.addFiles('main.js', [ 'client', 'server' ]); +}); diff --git a/Packages/ohif-measurements/both/configuration/measurements.js b/Packages/ohif-measurements/both/configuration/measurements.js index 08824aa86..cb87ec8d8 100644 --- a/Packages/ohif-measurements/both/configuration/measurements.js +++ b/Packages/ohif-measurements/both/configuration/measurements.js @@ -41,7 +41,6 @@ class MeasurementApi { return new Promise((resolve, reject) => { retrievalFn().then(measurementData => { - // TODO: implement converter here console.log('Measurement data retrieval'); console.log(measurementData); diff --git a/Packages/ohif-measurements/both/configuration/timepoints.js b/Packages/ohif-measurements/both/configuration/timepoints.js index 619e117d5..ba3d4b96c 100644 --- a/Packages/ohif-measurements/both/configuration/timepoints.js +++ b/Packages/ohif-measurements/both/configuration/timepoints.js @@ -21,7 +21,7 @@ class TimepointApi { this.currentTimepointId = currentTimepointId; } - this.config = configuration || MeasurementApi.getConfiguration(); + this.config = configuration || OHIF.measurements.MeasurementApi.getConfiguration(); } retrieveTimepoints() { @@ -38,7 +38,7 @@ class TimepointApi { retrievalFn().then(timepointData => { console.log('Timepoint data retrieval'); console.log(timepointData); - timepointData.forEach(timepoint => { + _.each(timepointData, timepoint => { delete timepoint._id; this.timepoints.insert(timepoint); }); @@ -191,7 +191,7 @@ class TimepointApi { // If index is 0, it means that the current timepoint was not in the list // Log a warning and return here if (!index) { - log.warn('Current follow-up was not in the list of relevant follow-ups?'); + OHIF.log.warn('Current follow-up was not in the list of relevant follow-ups?'); return; } diff --git a/Packages/ohif-measurements/client/components/association/associationModal/associationModal.js b/Packages/ohif-measurements/client/components/association/associationModal/associationModal.js index eb7aa849e..fa35aac48 100644 --- a/Packages/ohif-measurements/client/components/association/associationModal/associationModal.js +++ b/Packages/ohif-measurements/client/components/association/associationModal/associationModal.js @@ -1,6 +1,8 @@ +import { OHIF } from 'meteor/ohif:core'; + Template.associationModal.events({ 'click #saveAssociations': function(e) { - log.info('Saving associations'); + OHIF.log.info('Saving associations'); const Timepoints = StudyList.timepointApi.timepoints; // Close the modal diff --git a/Packages/ohif-measurements/client/components/longitudinal/longitudinalStudyListContextMenu/longitudinalStudyListContextMenu.js b/Packages/ohif-measurements/client/components/longitudinal/longitudinalStudyListContextMenu/longitudinalStudyListContextMenu.js index 1d10f2eb8..67c9d1ead 100644 --- a/Packages/ohif-measurements/client/components/longitudinal/longitudinalStudyListContextMenu/longitudinalStudyListContextMenu.js +++ b/Packages/ohif-measurements/client/components/longitudinal/longitudinalStudyListContextMenu/longitudinalStudyListContextMenu.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + // Use Aldeed's meteor-template-extension package to replace the // default StudyListStudy template. // See https://github.com/aldeed/meteor-template-extension @@ -68,7 +70,7 @@ function removeTimepointAssociations() { // from the Timepoints Collection via a server call Meteor.call('removeTimepoint', timepoint._id, function(error) { if (error) { - log.warn(error); + OHIF.log.warn(error); return; } diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTable.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTable.js index f47a85d97..dfc1e19e2 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTable.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTable.js @@ -57,7 +57,7 @@ Template.measurementTable.onRendered(() => { // Activate the first lesion if (firstLesion) { - activateLesion(firstLesion._id, templateData); + OHIF.measurements.activateLesion(firstLesion._id, templateData); } }); @@ -67,7 +67,7 @@ Template.measurementTable.events({ */ /*'click table#tblLesion tbody tr': function(e, template) { var measurementId = $(e.currentTarget).data('measurementid'); - activateLesion(measurementId, template.data); + OHIF.measurements.activateLesion(measurementId, template.data); },*/ }); diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js index 8d1c05cad..8f3e7668d 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js @@ -1,3 +1,5 @@ +import { OHIF } from 'meteor/ohif:core'; + function doneCallback(measurementData, deleteTool) { // If a Lesion or Non-Target is removed via a dialog // opened by the Lesion Table, we should clear the data for @@ -5,7 +7,7 @@ function doneCallback(measurementData, deleteTool) { if (deleteTool === true) { Meteor.call('removeMeasurement', measurementData.id, function(error, response) { if (error) { - log.warn(error); + OHIF.log.warn(error); } }); } @@ -25,7 +27,7 @@ Template.measurementTableRow.events({ }, 'dblclick .location': function() { - log.info('Double clicked on Lesion Location cell'); + OHIF.log.info('Double clicked on Lesion Location cell'); var measurementData = this; @@ -50,7 +52,7 @@ Template.measurementTableRow.events({ showConfirmDialog(() => { Meteor.call('removeMeasurement', currentMeasurement._id, (error, response) => { if (error) { - log.warn(error); + OHIF.log.warn(error); } }); }, options); diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.js index 4eca091f8..0a148d280 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.js @@ -43,7 +43,7 @@ function doneCallback(measurementData, deleteTool) { // opened by the Lesion Table, we should clear the data for // the specified Timepoint Cell if (deleteTool === true) { - log.info('Confirm clicked!'); + OHIF.log.info('Confirm clicked!'); clearMeasurementTimepointData(measurementData.id, measurementData.timepointId); } } @@ -56,7 +56,7 @@ const keys = { Template.measurementTableTimepointCell.events({ 'dblclick .measurementTableTimepointCell': function() { - log.info('Double clicked on a timepoint cell'); + OHIF.log.info('Double clicked on a timepoint cell'); // Search Measurements by lesion and timepoint const currentMeasurement = Template.parentData(1).rowItem; diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.html b/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.html index ef7c81917..baf72c3eb 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.html +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.html @@ -1,8 +1,8 @@