From 927df49f5d5b0bb79e295de59a9f67189549be2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elo=C3=ADzio=20Salgado?= Date: Thu, 17 Nov 2016 12:43:07 -0200 Subject: [PATCH] LT-358: Make measurement tool active when loading associated study --- .../viewer/viewerMain/viewerMain.js | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js index 62442c998..307752cee 100644 --- a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js +++ b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js @@ -17,13 +17,58 @@ Template.viewerMain.onRendered(() => { const instance = Template.instance(); instance.subscribe('hangingprotocols', () => { - const studies = instance.data.studies; + const { studies, currentTimepointId, measurementApi, timepointIds } = instance.data; const parentElement = instance.$('#layoutManagerTarget').get(0); window.layoutManager = new LayoutManager(parentElement, studies); - // Toggle Measurement Table - // Show as default for Associated Studies - if(instance.data.currentTimepointId) { + // Default actions for Associated Studies + if(currentTimepointId) { + // Follow-up studies: same as the first measurement in the table + // Baseline studies: target-tool + if(studies[0]) { + let activeTool; + // In follow-ups, get the baseline timepointId + const timepointId = timepointIds.find(id => id !== currentTimepointId); + + // Follow-up studies + if(studies[0].timepointType === 'followup' && timepointId) { + const measurementTools = OHIF.measurements.MeasurementApi.getConfiguration().measurementTools; + + // Create list of measurement tools + const measurementTypes = measurementTools.map( + tool => { + const { id, cornerstoneToolType } = tool; + return { + id, + cornerstoneToolType + } + } + ); + + // Iterate over each measurment tool to find the first baseline + // measurment. If so, stops the loop and prevent fetching from all + // collections + measurementTypes.every(({id, cornerstoneToolType}) => { + // Get measurement + if(measurementApi[id]) { + const measurement = measurementApi[id].findOne({ timepointId }); + + // Found a measurement, save tool and stop loop + if(measurement) { + activeTool = cornerstoneToolType; + + return false; + } + } + return true; + }); + } + + // If not set, for associated studies default is target-tool + toolManager.setActiveTool(activeTool || 'bidirectional'); + } + + // Toggle Measurement Table instance.data.state.set('rightSidebar', 'measurements'); } // Hide as default for single study