Remove some subscription / reactivity / caching bugs and the unnecessary PatientLocations collection

This commit is contained in:
Erik Ziegler committed 2016-02-10 16:38:49 +01:00
1 parent 7d42456f57
commit 9cde04bcfe
43 files changed
+321 -234

No files matched your search

@@ -28,10 +28,10 @@ Template.imageThumbnail.onRendered(function() {
});
Template.imageThumbnail.helpers({
'percentComplete': function() {
percentComplete: function() {
var percentComplete = Session.get('CornerstoneThumbnailLoadProgress' + this.thumbnailIndex);
if (percentComplete && percentComplete !== 100) {
return percentComplete + '%';
}
}
});
});
@@ -1,11 +1,11 @@
Template.hangingProtocolButtons.helpers({
'isNextAvailable': function() {
isNextAvailable: function() {
var presentationGroup = Session.get('WindowManagerPresentationGroup');
var numPresentationGroups = WindowManager.getNumPresentationGroups();
return presentationGroup < numPresentationGroups;
},
'isPreviousAvailable': function() {
isPreviousAvailable: function() {
var presentationGroup = Session.get('WindowManagerPresentationGroup');
return presentationGroup > 1;
}
});
});
@@ -411,6 +411,10 @@ Meteor.startup(function() {
cornerstoneTools.magnify.setConfiguration(config);
});
Template.imageViewerViewport.onCreated(function() {
console.log('imageViewerViewport onCreated');
});
Template.imageViewerViewport.onRendered(function() {
var templateData = Template.currentData();
log.info('imageViewerViewport onRendered');
@@ -455,7 +459,7 @@ Template.imageViewerViewport.onRendered(function() {
// TODO: This code block might be refactored
// Load previous measurement study when reloading a patient
if (!study) {
Meteor.call('GetStudyMetadata', this.data.studyInstanceUid, function(error, study) {
getStudyMetadata(this.data.studyInstanceUid, function(study) {
// Once we have retrieved the data, we sort the series' by series
// and instance number in ascending order
if (!study) {
@@ -466,7 +470,7 @@ Template.imageViewerViewport.onRendered(function() {
data.study = study;
setSeries(data, seriesInstanceUid, templateData);
});
})
}
data.study = study;
@@ -482,7 +486,10 @@ Template.imageViewerViewport.onDestroyed(function() {
// Try to stop any currently playing clips
// Otherwise the interval will continuously throw errors
try {
cornerstoneTools.stopClip(element);
var enabledElement = cornerstone.getEnabledElement(element);
if (enabledElement) {
cornerstoneTools.stopClip(element);
}
} catch (error) {
log.warn(error);
}
@@ -1,4 +1,5 @@
ViewerWindows = new Meteor.Collection(null);
ViewerWindows._debugName = 'ViewerWindows';
Template.imageViewerViewports.helpers({
height: function() {
@@ -10,14 +11,16 @@ Template.imageViewerViewports.helpers({
return 100 / viewportColumns;
},
viewerWindow: function() {
ViewerWindows = new Meteor.Collection(null);
log.info('ViewerWindows');
//log.info(ViewerWindows.find().fetch());
ViewerWindows.remove({});
log.info("imageViewerViewports viewportArray");
log.info('imageViewerViewports viewportArray');
var viewportRows = this.viewportRows || 1;
var viewportColumns = this.viewportColumns || 1;
var contentId = this.contentId || $("#viewer").parents(".tab-pane.active").attr('id');
var contentId = this.contentId || $('#viewer').parents('.tab-pane.active').attr('id');
if (this.viewportRows && this.viewportColumns) {
viewportRows = this.viewportRows || 1;
viewportColumns = this.viewportColumns || 1;
@@ -47,13 +50,13 @@ Template.imageViewerViewports.helpers({
// Update viewerData
ViewerData[contentId].viewportRows = viewportRows;
ViewerData[contentId].viewportColumns = viewportColumns;
Session.set("ViewerData", ViewerData);
Session.set('ViewerData', ViewerData);
this.viewportRows = viewportRows;
this.viewportColumns = viewportColumns;
var numViewports = viewportRows * viewportColumns;
for (var i=0; i < numViewports; ++i) {
for (var i = 0; i < numViewports; ++i) {
var data = {
viewportIndex: i,
// These two are necessary because otherwise the width and height helpers
@@ -77,14 +80,17 @@ Template.imageViewerViewports.helpers({
ViewerWindows.insert(data);
}
// Here we will find out if we need to load any other studies into the viewer
// We will make a list of unique studyInstanceUids
var uniqueStudyInstanceUids = [];
// Meteor doesn't support Mongo's 'distinct' function, so we have to do this in a loop
ViewerWindows.find().forEach(function(window) {
var windows = ViewerWindows.find({}, {
reactive: false
}).fetch();
windows.forEach(function(window) {
var studyInstanceUid = window.studyInstanceUid;
if (!studyInstanceUid) {
return;
@@ -99,10 +105,17 @@ Template.imageViewerViewports.helpers({
uniqueStudyInstanceUids.push(studyInstanceUid);
// If any of the associated studies is not already loaded, load it now
var loadedStudy = ViewerStudies.findOne({studyInstanceUid: studyInstanceUid});
var loadedStudy = ViewerStudies.findOne({
studyInstanceUid: studyInstanceUid
}, {
reactive: false
});
if (!loadedStudy) {
// Load the study
Meteor.call('GetStudyMetadata', studyInstanceUid, function(error, study) {
getStudyMetadata(studyInstanceUid, function(study) {
log.info("imageViewerViewports GetStudyMetadata: " + studyInstanceUid);
// Sort the study's series and instances by series and instance number
sortStudy(study);
@@ -112,7 +125,9 @@ Template.imageViewerViewports.helpers({
}
});
return ViewerWindows.find();
return ViewerWindows.find({}, {
reactive: false
}).fetch();
}
});
@@ -122,9 +137,9 @@ var savedSeriesData,
Template.imageViewerViewports.events({
'CornerstoneMouseDoubleClick .imageViewerViewport': function(e) {
var container = $(".viewerMain").get(0);
var container = $('.viewerMain').get(0);
var data;
var contentId = this.contentId || $("#viewer").parents(".tab-pane.active").attr('id');
var contentId = this.contentId || $('#viewer').parents('.tab-pane.active').attr('id');
// If there is more than one viewport on screen
// And one of them is double-clicked, it should be rendered alone
@@ -183,4 +198,4 @@ Template.imageViewerViewports.events({
$('.imageViewerViewport').eq(0).addClass('zoomed');
}
}
});
});