126 lines
4.6 KiB
JavaScript
126 lines
4.6 KiB
JavaScript
Template.lesionTable.helpers({
|
|
'measurement': function() {
|
|
return Measurements.find({}, {
|
|
sort: {
|
|
lesionNumberAbsolute: 1
|
|
}
|
|
});
|
|
},
|
|
'timepoints': function() {
|
|
return Timepoints.find({}, {
|
|
sort: {
|
|
timepointName: 1
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
Template.lesionTable.events({
|
|
'click table#tblLesion tbody tr': function(e, template) {
|
|
// Retrieve the lesion id from the DOM data for this row
|
|
var measurementId = $(e.currentTarget).data('measurementid');
|
|
|
|
activateLesion(measurementId, template.data);
|
|
},
|
|
'mousedown div#dragbar': function(e, template) {
|
|
var pY = e.pageY;
|
|
var draggableParent = $(e.currentTarget).parent();
|
|
var startHeight = draggableParent.height();
|
|
template.dragging.set(true);
|
|
|
|
$(document).on('mouseup', function(e) {
|
|
template.dragging.set(false);
|
|
$(document).off('mouseup').off('mousemove');
|
|
});
|
|
|
|
$(document).on('mousemove', function(e) {
|
|
var topPosition = e.pageY - pY;
|
|
var newHeight = startHeight - topPosition;
|
|
|
|
// Min lesion table height = 5px
|
|
if (newHeight < 5) {
|
|
return;
|
|
}
|
|
|
|
draggableParent.css({
|
|
top: topPosition,
|
|
height: newHeight
|
|
});
|
|
|
|
var viewportAndLesionTableHeight = $("#viewportAndLesionTable").height();
|
|
var newPercentageHeightofLesionTable = (startHeight - topPosition) / viewportAndLesionTableHeight * 100;
|
|
var newPercentageHeightofViewermain = 100 - newPercentageHeightofLesionTable;
|
|
$(".viewerMain").height(newPercentageHeightofViewermain + "%");
|
|
|
|
// Resize viewport
|
|
resizeViewportElements();
|
|
});
|
|
}
|
|
});
|
|
|
|
Template.lesionTable.onCreated(function() {
|
|
this.dragging = new ReactiveVar(false);
|
|
});
|
|
|
|
Template.lesionTable.onRendered(function() {
|
|
var self = this;
|
|
|
|
// Track ViewerData to get active timepoints
|
|
// Put a visual indicator (<) in timepoint header in lesion table for active timepoints
|
|
// timepointLoaded property is used to put indicator for loaded timepoints in viewport
|
|
self.autorun(function() {
|
|
var ViewerData = Session.get("ViewerData");
|
|
var contentId = Session.get("activeContentId");
|
|
if (contentId) {
|
|
var viewerData = ViewerData[contentId];
|
|
if (viewerData) {
|
|
if (viewerData.loadedSeriesData) {
|
|
// Get study dates of imageViewerViewport elements
|
|
var loadedStudyDates = {
|
|
patientId: "",
|
|
dates: []
|
|
};
|
|
|
|
$(".imageViewerViewport").each(function(viewportIndex, element) {
|
|
var enabledElement = cornerstone.getEnabledElement(element);
|
|
if (!enabledElement || !enabledElement.image) {
|
|
return;
|
|
}
|
|
|
|
var imageId = enabledElement.image.imageId;
|
|
var study = cornerstoneTools.metaData.get('study', imageId);
|
|
var studyDate = study.studyDate;
|
|
loadedStudyDates.patientId = study.patientId;
|
|
|
|
// Check whether or not studyDate has been added before
|
|
if (loadedStudyDates.dates.indexOf(studyDate) < 0) {
|
|
loadedStudyDates.dates.push(studyDate);
|
|
}
|
|
});
|
|
|
|
// If study date is loaded into viewport, set timepointLoaded property in Timepoints collection as true
|
|
// Else set timepointLoaded property as false
|
|
if (loadedStudyDates.dates.length) {
|
|
var timepoints = Timepoints.find({
|
|
patientId: loadedStudyDates.patientId
|
|
}).fetch();
|
|
|
|
timepoints.forEach(function(timepoint) {
|
|
var timepointLoaded = false;
|
|
if (loadedStudyDates.dates.indexOf(timepoint.timepointName) > -1) {
|
|
timepointLoaded = true;
|
|
}
|
|
|
|
Timepoints.update(timepoint._id, {
|
|
$set: {
|
|
timepointLoaded: timepointLoaded
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
});
|
|
}); |