Template.lesionTableTimepointHeader.events({ 'click th': 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 if(dialogDisplay === "block") { // 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; if(timepointText && timepointText === 'Baseline') { return true; } return false; } }); // 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 }; }