117 lines
4.1 KiB
JavaScript
117 lines
4.1 KiB
JavaScript
Template.lesionTableTimepointCell.helpers({
|
|
hasDataAtThisTimepoint: function() {
|
|
// This simple function just checks whether or not timepoint data
|
|
// exists for this Measurement at this Timepoint
|
|
var lesionData = Template.parentData(1);
|
|
return (lesionData &&
|
|
lesionData.timepoints &&
|
|
lesionData.timepoints[this.timepointId]);
|
|
},
|
|
displayData: function() {
|
|
// Search Measurements by lesion and timepoint
|
|
var lesionData = Template.parentData(1);
|
|
if (!lesionData ||
|
|
!lesionData.timepoints ||
|
|
!lesionData.timepoints[this.timepointId]) {
|
|
return;
|
|
}
|
|
|
|
var data = lesionData.timepoints[this.timepointId];
|
|
|
|
// Check whether this is a Nodal or Extranodal Measurement
|
|
var targetType = lesionData.isTarget ? 'target' : 'nonTarget';
|
|
var nodalType = lesionData.isNodal ? 'nodal' : 'extraNodal';
|
|
|
|
// Get criteria types
|
|
var criteriaTypes = TrialCriteriaTypes.find({
|
|
selected: true
|
|
}).map(function(criteria) {
|
|
return criteria.id;
|
|
});
|
|
var currentConstraints = getTrialCriteriaConstraints(criteriaTypes, data.imageId);
|
|
|
|
if (lesionData.toolType === 'bidirectional') {
|
|
if (data.shortestDiameter) {
|
|
if (currentConstraints) {
|
|
var criteria = currentConstraints[targetType][nodalType];
|
|
if (criteria && Object.keys(criteria)[0] === 'shortestDiameter') {
|
|
return data.shortestDiameter + ' x ' + data.longestDiameter;
|
|
}
|
|
}
|
|
|
|
return data.longestDiameter + ' x ' + data.shortestDiameter;
|
|
}
|
|
|
|
return data.longestDiameter;
|
|
} else {
|
|
return data.response;
|
|
}
|
|
},
|
|
|
|
isBidirectional: function() {
|
|
var lesionData = Template.parentData(1);
|
|
if (lesionData.toolType === 'bidirectional') {
|
|
return true;
|
|
}
|
|
return false
|
|
}
|
|
});
|
|
|
|
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
|
|
// the specified Timepoint Cell
|
|
if (deleteTool === true) {
|
|
log.info('Confirm clicked!');
|
|
clearMeasurementTimepointData(measurementData.id, measurementData.timepointId);
|
|
}
|
|
}
|
|
|
|
// Delete a lesion if Ctrl+D or DELETE is pressed while a lesion is selected
|
|
var keys = {
|
|
D: 68,
|
|
DELETE: 46
|
|
};
|
|
|
|
Template.lesionTableTimepointCell.events({
|
|
'dblclick .lesionTableTimepointCell': function() {
|
|
log.info('Double clicked on a timepoint cell');
|
|
// Search Measurements by lesion and timepoint
|
|
var currentMeasurement = Template.parentData(1);
|
|
|
|
// Create some fake measurement data
|
|
var currentTimepointID = this.timepointId;
|
|
|
|
var timepointData = currentMeasurement.timepoints[currentTimepointID];
|
|
var measurementData = {
|
|
id: currentMeasurement._id,
|
|
timepointId: currentTimepointID,
|
|
response: timepointData.response,
|
|
imageId: timepointData.imageId,
|
|
handles: timepointData.handles,
|
|
seriesInstanceUid: timepointData.seriesInstanceUid,
|
|
studyInstanceUid: timepointData.studyInstanceUid
|
|
};
|
|
|
|
if (currentMeasurement.isTarget) {
|
|
showConfirmDialog(function() {
|
|
clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID);
|
|
});
|
|
} else {
|
|
changeNonTargetResponse(measurementData, null, doneCallback);
|
|
}
|
|
},
|
|
'keydown .lesionTableTimepointCell': function(e) {
|
|
var keyCode = e.which;
|
|
if (keyCode === keys.DELETE ||
|
|
(keyCode === keys.D && e.ctrlKey === true)) {
|
|
var currentMeasurement = Template.parentData(1);
|
|
var currentTimepointID = this.timepointId;
|
|
|
|
showConfirmDialog(function() {
|
|
clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID);
|
|
});
|
|
}
|
|
}
|
|
});
|