Updates to improve reactivity, session storage, logging

This commit is contained in:
Erik Ziegler committed 2015-10-30 12:25:08 +01:00
1 parent 9fb5cc2953
commit a10f149b4b
37 files changed
+370 -288

No files matched your search

+1
View File
@@ -36,3 +36,4 @@ random
reactive-var
reactive-dict
lesiontracker
practicalmeteor:loglevel
+3
View File
@@ -16,6 +16,7 @@ caching-compiler@1.0.0
caching-html-compiler@1.0.2
callback-hook@1.0.4
check@1.1.0
coffeescript@1.0.11
cornerstone@0.0.1
ddp@1.2.2
ddp-client@1.2.1
@@ -67,6 +68,8 @@ npm-bcrypt@0.7.8_2
npm-mongo@1.4.39_1
observe-sequence@1.0.7
ordered-dict@1.0.4
practicalmeteor:chai@1.9.2_3
practicalmeteor:loglevel@1.1.0_3
promise@0.5.1
random@1.0.5
rate-limit@1.0.0
+4 -4
View File
@@ -1,10 +1,10 @@
<template name="viewer">
<div id="viewer" class="viewer">
{{ >lesionDialog studies=studies activeViewport=activeViewport}}
{{ >lesionDialog }}
<div id="upperHalf">
{{ >hidingPanel studies=studies activeViewport=activeViewport}}
{{ >viewerMain studies=studies activeViewport=activeViewport viewportRows=viewportRows viewportColumns=viewportColumns}}
{{ >hidingPanel }}
{{ >viewerMain }}
</div>
{{ >lesionTable studies=studies activeViewport=activeViewport viewportRows=viewportRows viewportColumns=viewportColumns}}
{{ >lesionTable }}
</div>
</template>
+23 -20
View File
@@ -1,4 +1,6 @@
function resizeViewports() {
log.info("viewer resizeViewports");
// Handle resizing of image viewer viewports
// For some reason, this seems to need to be on
// another delay, or the resizing won't work properly
@@ -15,7 +17,8 @@ function resizeViewports() {
}
Template.viewer.onCreated(function() {
console.log("Image Viewer onCreated");
log.info("viewer onCreated");
OHIF = {
viewer: {}
};
@@ -55,35 +58,35 @@ Template.viewer.onCreated(function() {
};
}
if (this.data.activeViewport === undefined) {
this.data.activeViewport = new ReactiveVar(0);
}
if (this.data.viewportRows === undefined) {
this.data.viewportRows = new ReactiveVar(1);
}
if (this.data.viewportColumns === undefined) {
this.data.viewportColumns = new ReactiveVar(2);
}
var contentId = this.data.contentId;
// Update the viewer data object
ViewerData[contentId].viewportColumns = this.data.viewportColumns;
ViewerData[contentId].viewportRows = this.data.viewportRows;
ViewerData[contentId].activeViewport = this.data.activeViewport;
Session.set('ViewerData', ViewerData);
if (ViewerData[contentId].loadedSeriesData) {
log.info('Reloading previous loadedSeriesData');
OHIF.viewer.loadedSeriesData = ViewerData[contentId].loadedSeriesData;
if (ViewerData[contentId].viewer) {
OHIF.viewer = ViewerData[contentId].viewer;
} else {
OHIF.viewer.imageViewerLoadedSeriesDictionary = {};
ViewerData[contentId].viewer = OHIF.viewer;
log.info('Setting default ViewerData');
OHIF.viewer.loadedSeriesData = {};
ViewerData[contentId].loadedSeriesData = OHIF.viewer.loadedSeriesData;
// Update the viewer data object
ViewerData[contentId].viewportColumns = 2;
ViewerData[contentId].viewportRows = 1;
ViewerData[contentId].activeViewport = 0;
Session.set('ViewerData', ViewerData);
}
Session.set('activeViewport', ViewerData[contentId].activeViewport || 0);
Session.set("studies", this.data.studies);
OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer("CornerstoneNewImage", cornerstoneTools.updateImageSynchronizer);
});
Template.viewer.onDestroyed(function() {
log.info("onDestroyed");
OHIF.viewer.updateImageSynchronizer.destroy();
});
@@ -1,6 +1,6 @@
<template name="viewerMain">
<div class="viewerMain">
{{ >toolbar toolbarOptions=toolbarOptions activeViewport=activeViewport viewportRows=viewportRows viewportColumns=viewportColumns}}
{{ >imageViewerViewports studies=studies activeViewport=activeViewport viewportRows=viewportRows viewportColumns=viewportColumns}}
{{ >toolbar toolbarOptions=toolbarOptions }}
{{ >imageViewerViewports }}
</div>
</template>
@@ -1,7 +1,4 @@
Template.viewerMain.helpers({
studies : function() {
return this.studies;
},
'toolbarOptions': function() {
var toolbarOptions = {};
+3
View File
@@ -0,0 +1,3 @@
// Create application logger using loglevel
// https://atmospherejs.com/spacejamio/loglevel
log = loglevel.createAppLogger('LesionTracker', defaultLevel = 'info');
-49
View File
@@ -1,49 +0,0 @@
Router.configure({
layoutTemplate: 'layoutLesionTracker',
//loadingTemplate: '',
notFoundTemplate: 'notFound'
});
Router.route('/', function () {
this.render('worklist', {});
});
tabs = new Meteor.Collection(null);
Session.setDefault('ViewerData', {});
Session.setDefault('ViewerDataUpdated', Random.id());
Object.keys(ViewerData).forEach(function(contentId) {
var tabData = ViewerData[contentId];
var data = {
title: tabData.title,
contentid: tabData.contentId,
};
tabs.insert(data);
});
Router.route('/viewer/:_id', {
layoutTemplate: 'layout',
name: 'viewer',
onBeforeAction: function() {
var self = this;
Meteor.call('GetStudyMetadata', this.params._id, function(error, study) {
sortStudy(study);
var title = study.seriesList[0].instances[0].patientName;
var contentid = generateUUID();
var data = {
title: title,
contentid: contentid,
};
tabs.insert(data);
data.studies = [study];
self.render('worklist');
Session.set('OpenNewTabEvent', data);
});
}
});
+45
View File
@@ -0,0 +1,45 @@
tabs = new Meteor.Collection(null);
Session.setDefault('ViewerData', {});
// Re-add any tab data saved in the Session
Object.keys(ViewerData).forEach(function(contentId) {
var tabData = ViewerData[contentId];
var data = {
title: tabData.title,
contentid: tabData.contentid,
};
tabs.insert(data);
});
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'layout',
notFoundTemplate: 'notFound'
});
Router.onBeforeAction('loading');
Router.route('/', function () {
this.render('worklist');
});
Router.route('/viewer/:_id', {
layoutTemplate: 'layout',
name: 'viewer',
onBeforeAction: function() {
log.info('Router GetStudyMetadata');
var studyInstanceUid = this.params._id;
// Check if this study is already loaded in a tab
// If it is, stop here so we don't keep adding tabs on hot-code reloads
var tab = tabs.find({'studyInstanceUid' : studyInstanceUid}).fetch();
if (tab) {
return;
}
this.render('worklist');
openNewTab(studyInstanceUid);
}
});