106 lines
3.8 KiB
JavaScript
106 lines
3.8 KiB
JavaScript
Template.lesionTableTimepointHeader.events({
|
|
'click th.lesionTableTimepointCell': function(e, template) {
|
|
var parentPosition = getPosition(e.currentTarget);
|
|
var cellText = e.currentTarget.innerText;
|
|
|
|
// Remove spaces in string
|
|
cellText = cellText.replace(/\s/g, ''); // Remove spaces
|
|
cellText = cellText.replace('<', ''); // Remove <
|
|
var splitCellText = cellText.split('/');
|
|
var dateStr = splitCellText[2].replace(/\D/g,'') + '' + splitCellText[0].replace(/\D/g,'') + '' + splitCellText[1].replace(/\D/g,''); // Remove non-digit chars
|
|
|
|
// Check patient has a timepointText as Baseline
|
|
var patientId = template.data.patientId;
|
|
|
|
// Open popup
|
|
var timepointTextDialog = $('#timepointTextDialog');
|
|
var dialogDisplay = timepointTextDialog.css('display');
|
|
if (dialogDisplay === 'none') {
|
|
var isBaselineInCollection = Timepoints.findOne({
|
|
patientId: patientId,
|
|
timepointName: dateStr,
|
|
timepointText: 'Baseline'
|
|
});
|
|
|
|
// If isBaselineInCollection is true, "Baseline" is found in collection for patient and set checkbox as checked
|
|
if (isBaselineInCollection) {
|
|
// Set checkbox as checked
|
|
$('#checkBoxBaseline').prop('checked', true);
|
|
} else {
|
|
// Set checkbox as unchecked
|
|
$('#checkBoxBaseline').prop('checked', false);
|
|
}
|
|
|
|
// Open dialog
|
|
var dialogProperty = {
|
|
top: parentPosition.y - 30,
|
|
left: parentPosition.x,
|
|
display: 'block'
|
|
};
|
|
|
|
timepointTextDialog.css(dialogProperty);
|
|
} else {
|
|
// Get timepoints of patient
|
|
// Set timepointText as Baseline for selected timepoint
|
|
var timepoints = Timepoints.find({
|
|
patientId: patientId
|
|
}).fetch();
|
|
|
|
// Check checkbox is selected
|
|
var checkboxBaselineChecked = $('#checkBoxBaseline').is(':checked');
|
|
|
|
timepoints.forEach(function(timepoint) {
|
|
// timepointText defines a custom text for timepoint such as Baseline, Nadir, Current
|
|
if (timepoint.timepointName === dateStr) {
|
|
// If checkbox is selected, set timepointText as Baseline
|
|
// Else set timepointText as ""
|
|
var timepointText = 'Baseline';
|
|
if (!checkboxBaselineChecked) {
|
|
timepointText = '';
|
|
}
|
|
|
|
Timepoints.update(timepoint._id,{
|
|
$set: {
|
|
timepointText: timepointText
|
|
}
|
|
});
|
|
} else {
|
|
// Set timepointText as empty
|
|
Timepoints.update(timepoint._id,{
|
|
$set: {
|
|
timepointText: ''
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
// Close dialog
|
|
timepointTextDialog.css('display', 'none');
|
|
}
|
|
}
|
|
});
|
|
|
|
Template.lesionTableTimepointHeader.helpers({
|
|
timepointTextFound: function() {
|
|
var timepointText = this.timepointText;
|
|
return (timepointText && timepointText === 'Baseline');
|
|
}
|
|
});
|
|
|
|
// Gets parent's position of element which mouse pointer is clicked in
|
|
function getPosition(element) {
|
|
var xPosition = 0;
|
|
var yPosition = 0;
|
|
|
|
while (element) {
|
|
xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft);
|
|
yPosition += (element.offsetTop - element.scrollTop + element.clientTop);
|
|
element = element.offsetParent;
|
|
}
|
|
|
|
return {
|
|
x: xPosition,
|
|
y: yPosition
|
|
};
|
|
}
|