155 lines
5.0 KiB
JavaScript
155 lines
5.0 KiB
JavaScript
function closeHandler(dialog) {
|
|
// Hide the lesion dialog
|
|
$(dialog).css('display', 'none');
|
|
|
|
// Remove the backdrop
|
|
$('.removableBackdrop').remove();
|
|
|
|
// Restore the focus to the active viewport
|
|
setFocusToActiveViewport();
|
|
}
|
|
|
|
changeNonTargetResponse = function(measurementData, eventData, doneCallback) {
|
|
Template.nonTargetResponseDialog.measurementData = measurementData;
|
|
Template.nonTargetResponseDialog.doneCallback = doneCallback;
|
|
|
|
// Get the non-target lesion location dialog
|
|
var dialog = $('#nonTargetResponseDialog');
|
|
Template.nonTargetResponseDialog.dialog = dialog;
|
|
|
|
// Show the backdrop
|
|
UI.render(Template.removableBackdrop, document.body);
|
|
|
|
// Make sure the context menu is closed when the user clicks away
|
|
$('.removableBackdrop').one('mousedown touchstart', function() {
|
|
closeHandler(dialog);
|
|
|
|
if (doneCallback && typeof doneCallback === 'function') {
|
|
var deleteTool = true;
|
|
doneCallback(measurementData, deleteTool);
|
|
}
|
|
});
|
|
|
|
// Show the nonTargetLesion dialog above
|
|
var dialogProperty = {
|
|
display: 'block'
|
|
};
|
|
|
|
// Device is touch device or not
|
|
// If device is touch device, set position center of screen vertically and horizontally
|
|
if (!eventData || isTouchDevice()) {
|
|
// add dialogMobile class to provide a black,transparent background
|
|
dialog.addClass('dialogMobile');
|
|
dialogProperty.top = 0;
|
|
dialogProperty.left = 0;
|
|
dialogProperty.right = 0;
|
|
dialogProperty.bottom = 0;
|
|
} else {
|
|
dialogProperty.top = eventData.currentPoints.page.y - dialog.outerHeight() - 40;
|
|
dialogProperty.left = eventData.currentPoints.page.x - dialog.outerWidth() / 2;
|
|
|
|
var pageHeight = $(window).height();
|
|
dialogProperty.top = Math.max(dialogProperty.top, 0);
|
|
dialogProperty.top = Math.min(dialogProperty.top, pageHeight - dialog.outerHeight());
|
|
|
|
var pageWidth = $(window).width();
|
|
dialogProperty.left = Math.max(dialogProperty.left, 0);
|
|
dialogProperty.left = Math.min(dialogProperty.left, pageWidth - dialog.outerWidth());
|
|
}
|
|
|
|
dialog.css(dialogProperty);
|
|
dialog.focus();
|
|
|
|
var measurement = Measurements.findOne(measurementData.id);
|
|
if (!measurement) {
|
|
return;
|
|
}
|
|
|
|
var response = measurement.timepoints[measurementData.timepointId].response;
|
|
|
|
// TODO = Standardize this. Searching by code probably isn't the best, we should use
|
|
// some sort of UID
|
|
var currentResponse = LocationResponses.findOne({
|
|
code: response
|
|
});
|
|
|
|
if (!currentResponse) {
|
|
return;
|
|
}
|
|
|
|
LocationResponses.update(currentResponse._id, {
|
|
$set: {
|
|
selected: true
|
|
}
|
|
});
|
|
};
|
|
|
|
Template.nonTargetResponseDialog.events({
|
|
'click #nonTargetLesionOK': function() {
|
|
var dialog = Template.nonTargetResponseDialog.dialog;
|
|
var measurementData = Template.nonTargetResponseDialog.measurementData;
|
|
|
|
// Find the select option box
|
|
var selectorResponse = dialog.find('select#selectNonTargetLesionLocationResponse');
|
|
|
|
// Get the current value of the selector
|
|
var responseOptionId = selectorResponse.find('option:selected').val();
|
|
|
|
// If the selected response option is still the default (-1)
|
|
// then stop here
|
|
if (responseOptionId < 0) {
|
|
return;
|
|
}
|
|
|
|
if (!measurementData.id) {
|
|
// Add an ID value to the tool data to link it to the Measurements collection
|
|
measurementData.id = 'notready';
|
|
}
|
|
|
|
/// Set the isTarget value to true, since this is the target-lesion dialog callback
|
|
measurementData.isTarget = false;
|
|
|
|
// Response is set from location response list
|
|
measurementData.response = responseOptionId;
|
|
|
|
// Adds lesion data to timepoints array
|
|
LesionManager.updateLesionData(measurementData);
|
|
|
|
// Close the dialog
|
|
closeHandler(dialog);
|
|
},
|
|
'click #removeLesion': function() {
|
|
var measurementData = Template.nonTargetResponseDialog.measurementData;
|
|
var doneCallback = Template.nonTargetResponseDialog.doneCallback;
|
|
var dialog = Template.nonTargetResponseDialog.dialog;
|
|
|
|
showConfirmDialog(function() {
|
|
if (doneCallback && typeof doneCallback === 'function') {
|
|
var deleteTool = true;
|
|
doneCallback(measurementData, deleteTool);
|
|
}
|
|
});
|
|
|
|
closeHandler(dialog);
|
|
},
|
|
'click #btnCloseLesionPopup': function() {
|
|
var dialog = Template.nonTargetResponseDialog.dialog;
|
|
closeHandler(dialog);
|
|
},
|
|
'keydown #nonTargetResponseDialog': function(e) {
|
|
var dialog = Template.nonTargetResponseDialog.dialog;
|
|
|
|
// If Esc or Enter are pressed, close the dialog
|
|
if (e.which === keys.ESC || e.which === keys.ENTER) {
|
|
closeHandler(dialog);
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
|
|
Template.nonTargetResponseDialog.helpers({
|
|
locationResponses: function() {
|
|
return LocationResponses.find();
|
|
}
|
|
});
|