From 80337f271eaaca434cb69fa4039b53c57635c322 Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Sat, 12 Nov 2016 17:52:12 +0100 Subject: [PATCH] LT-296: Clicking on measurement data in table activates the measurement --- .../client/components/viewer/viewer.js | 4 +- .../components/caseProgress/caseProgress.js | 1 + .../measurementTable/measurementTable.js | 51 ++++--- .../measurementTableHeaderRow.js | 27 +++- .../measurementTableTimepointCell.html | 4 +- .../measurementTableTimepointCell.js | 40 ++--- .../measurementTableTimepointCell.styl | 11 +- .../measurementTableView.html | 2 +- .../measurementTableView.js | 17 ++- .../measurementTableView.styl | 3 +- .../client/lib/MeasurementHandlers.js | 1 - .../client/lib/activateLesion.js | 118 --------------- .../client/lib/activateMeasurements.js | 82 ++++++----- .../client/lib/activateTool.js | 44 ------ .../client/lib/deactivateAllToolData.js | 27 ++-- .../client/lib/getTimepointObject.js | 20 --- .../ohif-measurements/client/lib/index.js | 4 +- .../client/lib/jumpToRowItem.js | 137 ++++++++++++++++++ Packages/ohif-viewerbase/lib/layoutManager.js | 2 +- 19 files changed, 288 insertions(+), 307 deletions(-) delete mode 100644 Packages/ohif-measurements/client/lib/activateLesion.js delete mode 100644 Packages/ohif-measurements/client/lib/activateTool.js delete mode 100644 Packages/ohif-measurements/client/lib/getTimepointObject.js create mode 100644 Packages/ohif-measurements/client/lib/jumpToRowItem.js diff --git a/LesionTracker/client/components/viewer/viewer.js b/LesionTracker/client/components/viewer/viewer.js index 84a5f529e..49d0e9c46 100644 --- a/LesionTracker/client/components/viewer/viewer.js +++ b/LesionTracker/client/components/viewer/viewer.js @@ -119,7 +119,9 @@ Template.viewer.onCreated(() => { Template.viewer.helpers({ dataSourcesReady() { // TODO: Find a better way to do this - return Session.get('TimepointsReady') && Session.get('MeasurementsReady'); + const ready = Session.get('TimepointsReady') && Session.get('MeasurementsReady'); + console.log('dataSourcesReady? : ' + ready); + return ready; } }); diff --git a/Packages/ohif-measurements/client/components/caseProgress/caseProgress.js b/Packages/ohif-measurements/client/components/caseProgress/caseProgress.js index cf61cccd6..2b0c0476f 100644 --- a/Packages/ohif-measurements/client/components/caseProgress/caseProgress.js +++ b/Packages/ohif-measurements/client/components/caseProgress/caseProgress.js @@ -40,6 +40,7 @@ Template.caseProgress.onRendered(() => { const api = instance.data.measurementApi; const getNumMeasurementsAtTimepoint = timepointId => { + OHIF.log.info('getNumMeasurementsAtTimepoint'); const filter = { timepointId: timepointId }; diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTable.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTable.js index 9fb972764..7b6e6ad6b 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTable.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTable.js @@ -1,3 +1,4 @@ +import { OHIF } from 'meteor/ohif:core'; import { Template } from 'meteor/templating'; import { ReactiveVar } from 'meteor/reactive-var'; @@ -48,28 +49,42 @@ Template.measurementTable.onRendered(() => { }); Template.measurementTable.onRendered(() => { - // Find the first measurement by Lesion Number - let firstLesion; // = instance.data.measurementApi.firstLesion(); + // Find and activate the first measurement by Lesion Number + // NOTE: This is inefficient, we should be using a hanging protocol + // to hang the first measurement's imageId immediately, rather + // than changing images after initial loading... + const instance = Template.instance(); - // Create an object to store the ContentId inside - const templateData = { - contentId: Session.get('activeContentId') + const config = OHIF.measurements.MeasurementApi.getConfiguration(); + const measurementTypeId = config.measurementTools[0].id; + const measurementApi = instance.data.measurementApi; + const collection = measurementApi[measurementTypeId]; + const sorting = { + sort: { + measurementNumber: -1 + } }; - // Activate the first lesion - if (firstLesion) { - OHIF.measurements.activateLesion(firstLesion._id, templateData); - } -}); + const data = collection.find({}, sorting).fetch(); -Template.measurementTable.events({ - /** - * Retrieve the lesion id from the DOM data for this row - */ - /*'click table#tblLesion tbody tr': function(e, template) { - var measurementId = $(e.currentTarget).data('measurementid'); - OHIF.measurements.activateLesion(measurementId, template.data); - },*/ + const timepoints = instance.data.timepoints.get(); + + // TODO: Clean this up, it's probably an inefficient way to get what we need + const groupObject = _.groupBy(data, entry => entry.measurementNumber); + + // Reformat the data + const rows = Object.keys(groupObject).map(key => ({ + measurementTypeId: measurementTypeId, + measurementNumber: key, + entries: groupObject[key] + })); + + const rowItem = rows[0]; + + // Activate the first lesion + if (rowItem) { + OHIF.measurements.jumpToRowItem(rowItem, timepoints); + } }); Template.measurementTable.helpers({ diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js index efe130006..f16d082ea 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js @@ -46,19 +46,35 @@ Template.measurementTableHeaderRow.onCreated(() => { Template.measurementTableHeaderRow.helpers({ numberOfMeasurements() { - return Template.instance().data.measurements.length; + const instance = Template.instance(); + if (!instance.data.measurements) { + return; + } + return instance.data.measurements.length; }, maxNumMeasurements() { - return Template.instance().maxNumMeasurements.get(); + const instance = Template.instance(); + if (!instance.data.measurements) { + return; + } + return instance.maxNumMeasurements.get(); }, anyUnmarkedLesionsLeft() { + // Skip New Lesions section const instance = Template.instance(); - const measurementType = instance.data.measurementType; - const measurementApi = instance.data.measurementApi; - const timepointApi = instance.data.timepointApi; + if (!instance.data.measurements) { + return; + } + const measurementType = instance.data.measurementType; + const config = OHIF.measurements.MeasurementApi.getConfiguration(); + if (measurementType.id === config.newMeasurementTool.id) { + return; + } + + const timepointApi = instance.data.timepointApi; const current = instance.data.timepointApi.current(); const prior = instance.data.timepointApi.prior(); if (!prior) { @@ -69,6 +85,7 @@ Template.measurementTableHeaderRow.helpers({ const priorFilter = { timepointId: prior.timepointId }; const measurementTypeId = measurementType.id; + const measurementApi = instance.data.measurementApi; const numCurrent = measurementApi.fetch(measurementTypeId, currentFilter).length; const numPrior = measurementApi.fetch(measurementTypeId, priorFilter).length; const remaining = Math.max(numPrior - numCurrent, 0); diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.html b/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.html index ee87682f9..e1d6e063e 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.html +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableTimepointCell/measurementTableTimepointCell.html @@ -1,10 +1,10 @@