LT-275: Work towards proper measurement / tooldata syncing

This commit is contained in:
Erik Ziegler committed 2016-11-15 08:25:09 +01:00
1 parent ec6f96e714
commit 9aa7cf012f
15 files changed
+164 -165

No files matched your search

@@ -9,9 +9,9 @@ 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 './nonTargetMeasurementDialog/nonTargetMeasurementDialog.html';
import './nonTargetMeasurementDialog/nonTargetMeasurementDialog.styl';
import './nonTargetMeasurementDialog/nonTargetMeasurementDialog.js';
import './nonTargetResponseDialog/nonTargetResponseDialog.html';
import './nonTargetResponseDialog/nonTargetResponseDialog.styl';
@@ -1,7 +1,7 @@
import { OHIF } from 'meteor/ohif:core';
function closeHandler(dialog) {
// Hide the lesion dialog
// Hide the measurement dialog
$(dialog).css('display', 'none');
// Remove the backdrop
@@ -11,8 +11,8 @@ function closeHandler(dialog) {
setFocusToActiveViewport();
}
// This event sets lesion number for new lesion
function getSetLesionNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi) {
// This event sets measurement number for new measurement
function getSetMeasurementNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi) {
return (measurementData, eventData, doneCallback) => {
// Get the current element's timepointId from the study date metadata
var element = eventData.element;
@@ -30,29 +30,29 @@ function getSetLesionNumberCallbackFunction(measurementTypeId, measurementApi, t
return;
}
// Get a lesion number for this lesion, depending on whether or not the same lesion previously
// Get a measurement number for this measurement, depending on whether or not the same measurement previously
// exists at a different timepoint
const timepointId = timepoint.timepointId;
const collection = measurementApi[measurementTypeId];
const measurementNumber = OHIF.measurements.MeasurementManager.getNewMeasurementNumber(timepointId, collection, timepointApi);
measurementData.measurementNumber = measurementNumber;
// Set lesion number
// Set measurement number
doneCallback(measurementNumber);
};
}
// This event determines whether or not to show the lesion dialog
// If there already exists a lesion with this specific lesion number,
// This event determines whether or not to show the measurement dialog
// If there already exists a measurement with this specific measurement number,
// related to the chosen location.
function getLesionLocationCallback(measurementData, eventData) {
function getMeasurementLocationCallback(measurementData, eventData) {
return;
Template.measurementLocationDialog.measurementData = measurementData;
// Reset the doneCallback saved in the template so we don't call the change event's done callback
Template.measurementLocationDialog.doneCallback = undefined;
// Get the lesion location dialog
// Get the measurement location dialog
var dialog = $('#measurementLocationDialog');
Template.measurementLocationDialog.dialog = dialog;
@@ -68,7 +68,7 @@ function getLesionLocationCallback(measurementData, eventData) {
var selector = dialog.find('select.selectMeasurementLocation');
selector.find('option:first').prop('selected', true);
// Find out if this lesion number is already added in the lesion manager for another timepoint
// Find out if this measurement number is already added in the measurement manager for another timepoint
// If it is, stop here because we don't need the dialog.
var locationUID = OHIF.measurements.MeasurementManager.getLocationIdIfMeasurementExists(measurementData);
if (locationUID) {
@@ -76,13 +76,13 @@ function getLesionLocationCallback(measurementData, eventData) {
measurementData.id = 'notready';
measurementData.locationUID = locationUID;
LesionManager.updateLesionData(measurementData);
MeasurementManager.updateMeasurementData(measurementData);
closeHandler();
return;
}
// If it isn't, continue to open the dialog and have the user choose a lesion location
// If it isn't, continue to open the dialog and have the user choose a measurement location
// Show the lesion location dialog above
// Show the measurement location dialog above
var dialogProperty = {
top: eventData.currentPoints.page.y - dialog.outerHeight() - 40,
left: eventData.currentPoints.page.x - dialog.outerWidth() / 2,
@@ -112,12 +112,12 @@ function getLesionLocationCallback(measurementData, eventData) {
dialog.focus();
}
changeLesionLocationCallback = function(measurementData, eventData, doneCallback) {
changeMeasurementLocationCallback = function(measurementData, eventData, doneCallback) {
return;
Template.measurementLocationDialog.measurementData = measurementData;
Template.measurementLocationDialog.doneCallback = doneCallback;
// Get the lesion location dialog
// Get the measurement location dialog
var dialog = $('#measurementLocationRelabelDialog');
// Show/Hide Convert To NonTarget option in measurementLocationRelabelDialog
@@ -137,7 +137,7 @@ changeLesionLocationCallback = function(measurementData, eventData, doneCallback
closeHandler(dialog);
});
// Show the lesion location dialog above
// Show the measurement location dialog above
var dialogProperty = {
display: 'block'
};
@@ -164,7 +164,7 @@ changeLesionLocationCallback = function(measurementData, eventData, doneCallback
return;
}
LesionLocations.update({},
MeasurementLocations.update({},
{
$set: {
selected: false
@@ -173,7 +173,7 @@ changeLesionLocationCallback = function(measurementData, eventData, doneCallback
multi: true
});
var currentLocation = LesionLocations.findOne({
var currentLocation = MeasurementLocations.findOne({
id: measurement.locationId
});
@@ -181,7 +181,7 @@ changeLesionLocationCallback = function(measurementData, eventData, doneCallback
return;
}
LesionLocations.update(currentLocation._id, {
MeasurementLocations.update(currentLocation._id, {
$set: {
selected: true
}
@@ -195,9 +195,9 @@ Template.measurementLocationDialog.onCreated(() => {
const timepointApi = instance.data.timepointApi;
const config = {
setLesionNumberCallback: getSetLesionNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi),
getLesionLocationCallback: getLesionLocationCallback,
changeLesionLocationCallback: changeLesionLocationCallback
setMeasurementNumberCallback: getSetMeasurementNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi),
getMeasurementLocationCallback: getMeasurementLocationCallback,
changeMeasurementLocationCallback: changeMeasurementLocationCallback
};
cornerstoneTools.bidirectional.setConfiguration(config);
@@ -225,7 +225,7 @@ Template.measurementLocationDialog.events({
}
// Get selected location data
var locationObj = LesionLocations.findOne({
var locationObj = MeasurementLocations.findOne({
_id: selectedOptionId
});
@@ -242,7 +242,7 @@ Template.measurementLocationDialog.events({
doneCallback(measurementData);
}
},
'click #removeLesion': function() {
'click #removeMeasurement': function() {
var measurementData = Template.measurementLocationDialog.measurementData;
var doneCallback = Template.measurementLocationDialog.doneCallback;
var dialog = Template.measurementLocationDialog.dialog;
@@ -268,11 +268,11 @@ Template.measurementLocationDialog.events({
const instance = Template.instance();
const measurementApi = instance.data.measurementApi;
OHIF.lesiontracker.convertToNonTarget(measurementApi, measurementData);
OHIF.measurementtracker.convertToNonTarget(measurementApi, measurementData);
closeHandler(dialog);
},
'click #btnCloseLesionPopup': function() {
'click #btnCloseMeasurementPopup': function() {
var dialog = Template.measurementLocationDialog.dialog;
closeHandler(dialog);
},
@@ -289,6 +289,6 @@ Template.measurementLocationDialog.events({
Template.measurementLocationDialog.helpers({
measurementLocations() {
return LesionLocations.find();
return MeasurementLocations.find();
}
});
@@ -1,5 +1,5 @@
<template name="nonTargetLesionDialog">
<div id="nonTargetLesionLocationDialog" class="dialog-animated" tabindex="0">
<template name="nonTargetMeasurementDialog">
<div id="nonTargetMeasurementDialog" class="dialog-animated" tabindex="0">
<div class="dialogHeader">
<h4>Select Lesion Location</h4>
</div>
@@ -1,7 +1,7 @@
import { OHIF } from 'meteor/ohif:core';
function closeHandler(dialog) {
// Hide the lesion dialog
// Hide the measurement dialog
$(dialog).css('display', 'none');
// Remove the backdrop
@@ -11,8 +11,8 @@ function closeHandler(dialog) {
setFocusToActiveViewport();
}
// This event sets lesion number for new lesion
function getSetLesionNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi) {
// This event sets measurement number for new measurement
function getSetMeasurementNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi) {
return (measurementData, eventData, doneCallback) => {
// Get the current element's timepointId from the study date metadata
var element = eventData.element;
@@ -27,14 +27,14 @@ function getSetLesionNumberCallbackFunction(measurementTypeId, measurementApi, t
return;
}
// Get a lesion number for this lesion, depending on whether or not the same lesion previously
// Get a measurement number for this measurement, depending on whether or not the same measurement previously
// exists at a different timepoint
const timepointId = timepoint.timepointId;
const collection = measurementApi[measurementTypeId];
const measurementNumber = OHIF.measurements.MeasurementManager.getNewMeasurementNumber(timepointId, collection, timepointApi);
measurementData.measurementNumber = measurementNumber;
// Set lesion number
// Set measurement number
doneCallback(measurementNumber);
};
}
@@ -64,16 +64,16 @@ function selectNonTargetResponse(responseCode) {
});
}
// This event determines whether or not to show the Non-Target lesion dialog
// If there already exists a lesion with this specific lesion number,
// This event determines whether or not to show the Non-Target measurement dialog
// If there already exists a measurement with this specific measurement number,
// related to the chosen location.
function getLesionLocationCallback(measurementData, eventData) {
function getMeasurementLocationCallback(measurementData, eventData) {
return 'Test Location';
Template.nonTargetLesionDialog.measurementData = measurementData;
Template.nonTargetMeasurementDialog.measurementData = measurementData;
// Get the non-target lesion location dialog
var dialog = $('#nonTargetLesionLocationDialog');
Template.nonTargetLesionDialog.dialog = dialog;
// Get the non-target measurement location dialog
var dialog = $('#nonTargetMeasurementLocationDialog');
Template.nonTargetMeasurementDialog.dialog = dialog;
// Show the backdrop
UI.render(Template.removableBackdrop, document.body);
@@ -84,7 +84,7 @@ function getLesionLocationCallback(measurementData, eventData) {
});
// Find the select option box
var selectorLocation = dialog.find('select#selectNonTargetLesionLocation');
var selectorLocation = dialog.find('select#selectNonTargetMeasurementLocation');
selectorLocation.find('option:first').prop('selected', 'selected');
@@ -102,7 +102,7 @@ function getLesionLocationCallback(measurementData, eventData) {
// Allow location selection
selectorLocation.removeAttr('disabled');
// Find out if this lesion number is already added in the lesion manager for another timepoint
// Find out if this measurement number is already added in the measurement manager for another timepoint
// If it is, disable selector location
var locationId = OHIF.measurements.MeasurementManager.getLocationIdIfMeasurementExists(measurementData);
if (locationId) {
@@ -117,7 +117,7 @@ function getLesionLocationCallback(measurementData, eventData) {
// Disable selector location to prevent selecting a new location
function disableLocationSelection(locationId) {
var locationObject = LesionLocations.findOne({
var locationObject = MeasurementLocations.findOne({
id: locationId
});
@@ -129,7 +129,7 @@ function getLesionLocationCallback(measurementData, eventData) {
selectorLocation.prop('disabled', true);
}
// Show the nonTargetLesion dialog above
// Show the nonTargetMeasurement dialog above
var dialogProperty = {
top: eventData.currentPoints.page.y - dialog.outerHeight() - 40,
left: eventData.currentPoints.page.x - dialog.outerWidth() / 2,
@@ -160,12 +160,12 @@ function getLesionLocationCallback(measurementData, eventData) {
}
changeNonTargetLocationCallback = function(measurementData, eventData, doneCallback) {
Template.nonTargetLesionDialog.measurementData = measurementData;
Template.nonTargetLesionDialog.doneCallback = doneCallback;
Template.nonTargetMeasurementDialog.measurementData = measurementData;
Template.nonTargetMeasurementDialog.doneCallback = doneCallback;
// Get the non-target lesion location dialog
var dialog = $('#nonTargetLesionRelabelDialog');
Template.nonTargetLesionDialog.dialog = dialog;
// Get the non-target measurement location dialog
var dialog = $('#nonTargetMeasurementRelabelDialog');
Template.nonTargetMeasurementDialog.dialog = dialog;
// Show the backdrop
UI.render(Template.removableBackdrop, document.body);
@@ -176,8 +176,8 @@ changeNonTargetLocationCallback = function(measurementData, eventData, doneCallb
});
// Find the select option box
var selectorLocation = dialog.find('select#selectNonTargetLesionLocation');
var selectorResponse = dialog.find('select#selectNonTargetLesionLocationResponse');
var selectorLocation = dialog.find('select#selectNonTargetMeasurementLocation');
var selectorResponse = dialog.find('select#selectNonTargetMeasurementLocationResponse');
selectorLocation.find('option:first').prop('selected', 'selected');
selectorResponse.find('option:first').prop('selected', 'selected');
@@ -185,7 +185,7 @@ changeNonTargetLocationCallback = function(measurementData, eventData, doneCallb
// Allow location selection
selectorLocation.removeAttr('disabled');
// Show the nonTargetLesion dialog above
// Show the nonTargetMeasurement dialog above
var dialogProperty = {
display: 'block'
};
@@ -212,7 +212,7 @@ changeNonTargetLocationCallback = function(measurementData, eventData, doneCallb
return;
}
LesionLocations.update({}, {
MeasurementLocations.update({}, {
$set: {
selected: false
}
@@ -220,7 +220,7 @@ changeNonTargetLocationCallback = function(measurementData, eventData, doneCallb
multi: true
});
var currentLocation = LesionLocations.findOne({
var currentLocation = MeasurementLocations.findOne({
id: measurement.locationId
});
@@ -228,7 +228,7 @@ changeNonTargetLocationCallback = function(measurementData, eventData, doneCallb
return;
}
LesionLocations.update(currentLocation._id, {
MeasurementLocations.update(currentLocation._id, {
$set: {
selected: true
}
@@ -238,32 +238,32 @@ changeNonTargetLocationCallback = function(measurementData, eventData, doneCallb
selectNonTargetResponse(response);
};
Template.nonTargetLesionDialog.onCreated(() => {
Template.nonTargetMeasurementDialog.onCreated(() => {
const instance = Template.instance();
const measurementTypeId = 'nonTargets';
const measurementApi = instance.data.measurementApi;
const timepointApi = instance.data.timepointApi;
const config = {
setLesionNumberCallback: getSetLesionNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi),
getLesionLocationCallback: getLesionLocationCallback,
changeLesionLocationCallback: changeLesionLocationCallback
setMeasurementNumberCallback: getSetMeasurementNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi),
getMeasurementLocationCallback: getMeasurementLocationCallback,
changeMeasurementLocationCallback: changeMeasurementLocationCallback
};
cornerstoneTools.nonTarget.setConfiguration(config);
//cornerstoneTools.nonTarget.setConfiguration(config);
});
Template.nonTargetLesionDialog.events({
'change #selectNonTargetLesionLocationResponse': function(e) {
Template.nonTargetMeasurementDialog.events({
'change #selectNonTargetMeasurementLocationResponse': function(e) {
var responseCode = $(e.currentTarget).val();
selectNonTargetResponse(responseCode);
},
'click #nonTargetLesionOK': function() {
var dialog = Template.nonTargetLesionDialog.dialog;
var measurementData = Template.nonTargetLesionDialog.measurementData;
'click #nonTargetMeasurementOK': function() {
var dialog = Template.nonTargetMeasurementDialog.dialog;
var measurementData = Template.nonTargetMeasurementDialog.measurementData;
// Find the select option box
var selectorLocation = dialog.find('select#selectNonTargetLesionLocation');
var selectorLocation = dialog.find('select#selectNonTargetMeasurementLocation');
// Get the current value of the selector
var selectedOptionId = selectorLocation.find('option:selected').val();
@@ -275,7 +275,7 @@ Template.nonTargetLesionDialog.events({
}
// Get selected location data
var locationObj = LesionLocations.findOne({
var locationObj = MeasurementLocations.findOne({
_id: selectedOptionId
});
@@ -292,7 +292,7 @@ Template.nonTargetLesionDialog.events({
measurementData.id = 'notready';
}
/// Set the isTarget value to true, since this is the target-lesion dialog callback
/// Set the isTarget value to true, since this is the target-measurement dialog callback
measurementData.isTarget = false;
// Response is set from location response list
@@ -300,16 +300,16 @@ Template.nonTargetLesionDialog.events({
selected: true
}).code;
// Adds lesion data to timepoints array
LesionManager.updateLesionData(measurementData);
// Adds measurement data to timepoints array
MeasurementManager.updateMeasurementData(measurementData);
// Close the dialog
closeHandler(dialog);
},
'click #removeLesion': function() {
var measurementData = Template.nonTargetLesionDialog.measurementData;
var doneCallback = Template.nonTargetLesionDialog.doneCallback;
var dialog = Template.nonTargetLesionDialog.dialog;
'click #removeMeasurement': function() {
var measurementData = Template.nonTargetMeasurementDialog.measurementData;
var doneCallback = Template.nonTargetMeasurementDialog.doneCallback;
var dialog = Template.nonTargetMeasurementDialog.dialog;
showConfirmDialog(function() {
if (doneCallback && typeof doneCallback === 'function') {
@@ -320,13 +320,13 @@ Template.nonTargetLesionDialog.events({
closeHandler(dialog);
},
'click #btnCloseLesionPopup': function() {
var dialog = Template.nonTargetLesionDialog.dialog;
'click #btnCloseMeasurementPopup': function() {
var dialog = Template.nonTargetMeasurementDialog.dialog;
closeHandler(dialog);
},
'click a.convertNonTarget': function(evt) {
var measurementData = Template.nonTargetLesionDialog.measurementData;
var dialog = Template.nonTargetLesionDialog.dialog;
var measurementData = Template.nonTargetMeasurementDialog.measurementData;
var dialog = Template.nonTargetMeasurementDialog.dialog;
var button = $(evt.currentTarget);
var toolType = button.data('type');
@@ -335,8 +335,8 @@ Template.nonTargetLesionDialog.events({
closeHandler(dialog);
},
'keydown #lesionLocationDialog, keydown #lesionLocationRelabelDialog': function(e) {
var dialog = Template.nonTargetLesionDialog.dialog;
'keydown #measurementLocationDialog, keydown #measurementLocationRelabelDialog': function(e) {
var dialog = Template.nonTargetMeasurementDialog.dialog;
// If Esc or Enter are pressed, close the dialog
if (e.which === keys.ESC || e.which === keys.ENTER) {
@@ -360,9 +360,9 @@ var conversionOptions = [{
name: 'Excluded (EX)'
}];
Template.nonTargetLesionDialog.helpers({
lesionLocations: function() {
return LesionLocations.find();
Template.nonTargetMeasurementDialog.helpers({
measurementLocations: function() {
return MeasurementLocations.find();
},
locationResponses: function() {
return LocationResponses.find();