LT-305: Add sorting function to properly order Measurement Table

This commit is contained in:
Erik Ziegler committed 2016-11-15 15:02:38 +01:00
1 parent 0b77a1783a
commit d6a3172bb3
7 files changed
+150 -25

No files matched your search

@@ -2,7 +2,7 @@
<div class="measurementTableRow {{#unless rowItem.location}}warning{{/unless}}{{#if responseStatus}}response-status{{/if}}" data-measurementid="{{_id}}">
<div class='measurementRowSidebar'>
<div class="measurementNumber">
{{rowItem.measurementNumber}}
{{rowItem.measurementNumberOverall}}
</div>
{{#unless rowItem.location}}
<div class="warning-icon">
@@ -58,14 +58,19 @@ Template.measurementTableRow.events({
const measurement = instance.data.rowItem.entries[0];
const toolType = measurement.toolType;
const measurementNumber = measurement.measurementNumber;
const api = instance.data.measurementApi;
const measurementApi = instance.data.measurementApi;
const timepointApi = instance.data.timepointApi;
// Remove all the measurements with the given type and number
api.deleteMeasurements(measurementTypeId, {
measurementApi.deleteMeasurements(measurementTypeId, {
toolType,
measurementNumber
});
// Update the Overall Measurement Numbers for all Measurements
const baseline = timepointApi.baseline();
measurementApi.sortMeasurements(baseline.timepointId);
// Repaint the images on all viewports without the removed measurements
_.each($('.imageViewerViewport'), element => cornerstone.updateImage(element));
});
@@ -53,13 +53,18 @@ Template.measurementTableView.helpers({
const groupObject = _.groupBy(data, entry => entry.measurementNumber);
// Reformat the data for display in the table
return Object.keys(groupObject).map(key => ({
measurementTypeId: measurementTypeId,
measurementNumber: key,
location: OHIF.measurements.getLocation(groupObject[key]),
responseStatus: false, // TODO: Get the latest timepoint and determine the response status
entries: groupObject[key]
}));
return Object.keys(groupObject).map(key => {
const anEntry = groupObject[key][0];
return {
measurementTypeId: measurementTypeId,
measurementNumber: key,
measurementNumberOverall: anEntry.measurementNumberOverall,
location: OHIF.measurements.getLocation(groupObject[key]),
responseStatus: false, // TODO: Get the latest timepoint and determine the response status
entries: groupObject[key]
};
});
},
newMeasurements(measurementType) {
@@ -104,9 +109,12 @@ Template.measurementTableView.helpers({
// Reformat the data for display in the table
return Object.keys(groupObject).map(key => {
const anEntry = groupObject[key][0];
return {
measurementTypeId: measurementTypeId,
measurementNumber: key,
measurementNumberOverall: anEntry.measurementNumberOverall,
location: OHIF.measurements.getLocation(groupObject[key]),
responseStatus: false, // TODO: Get the latest timepoint and determine the response status
entries: groupObject[key]
@@ -5,8 +5,6 @@ import { OHIF } from 'meteor/ohif:core';
class MeasurementHandlers {
static onAdded(e, instance, eventData) {
const measurementData = eventData.measurementData;
const config = OHIF.measurements.MeasurementApi.getConfiguration();
const toolTypes = config.measurementTools.map(tool => tool.cornerstoneToolType);
@@ -15,6 +13,7 @@ class MeasurementHandlers {
return;
}
const measurementData = eventData.measurementData;
const measurementToolConfiguration = config.measurementTools[index];
const measurementApi = instance.data.measurementApi;
const Collection = measurementApi[measurementToolConfiguration.id];
@@ -56,9 +55,6 @@ class MeasurementHandlers {
const timepointId = timepoint.timepointId;
measurement.timepointId = timepointId;
measurement.measurementNumber = OHIF.measurements.MeasurementManager.getNewMeasurementNumber(timepointId, Collection, timepointApi);
// TODO: Fix this
measurement.measurementNumberAbsolute = measurement.measurementNumber;
}
} else {
const numCurrentMeasurementsInStudy = Collection.find({
@@ -84,6 +80,10 @@ class MeasurementHandlers {
// Insert the new measurement into the collection
measurementData._id = Collection.insert(measurement);
// Update the Overall Measurement Numbers for all Measurements
const baseline = timepointApi.baseline();
measurementApi.sortMeasurements(baseline.timepointId);
}
static onModified(e, instance, eventData) {
@@ -139,6 +139,10 @@ class MeasurementHandlers {
const Collection = measurementApi[measurementToolConfiguration.id];
Collection.remove(measurementData._id);
// Update the Overall Measurement Numbers for all Measurements
const baseline = timepointApi.baseline();
measurementApi.sortMeasurements(baseline.timepointId);
}
}
@@ -4,13 +4,10 @@ class MeasurementManager {
/**
* Returns new measurement number given a timepointId
* @param timepointId
* @param isTarget
* @returns {number} - Number of measurements in timepoint
*/
static getNewMeasurementNumber(timepointId, Collection, timepointApi) {
static getNewMeasurementNumber(timepointId, collection, timepointApi) {
// Get all current lesion measurements
const numMeasurements = Collection.find().count();
const numMeasurements = collection.find().count();
// If no measurements exist yet, start at 1
if (!numMeasurements) {
@@ -21,7 +18,7 @@ class MeasurementManager {
timepointId: timepointId
});
const numMeasurementsAtTimepoint = Collection.find({
const numMeasurementsAtTimepoint = collection.find({
studyInstanceUid: {
$in: timepoint.studyInstanceUids
}
@@ -36,8 +33,8 @@ class MeasurementManager {
* @param measurementData
* @returns {number} - Measurement location ID
*/
static getLocationIdIfMeasurementExists(measurementData, Collection) {
const measurement = Collection.findOne({
static getLocationIdIfMeasurementExists(measurementData, collection) {
const measurement = collection.findOne({
measurementNumber: measurementData.measurementNumber
});
@@ -50,4 +47,4 @@ class MeasurementManager {
}
OHIF.measurements.MeasurementManager = MeasurementManager;
OHIF.measurements.MeasurementManager = MeasurementManager;