Updates to save viewport data across sessions / while switching tabs
This commit is contained in:
1 parent
56417df385
commit
4721400b34
27 files changed
+585
-204
No files matched your search
@@ -0,0 +1,5 @@
|
||||
body
|
||||
background-color: #202020
|
||||
|
||||
#search-panel-head
|
||||
background-color: #8845AB
|
||||
@@ -7,7 +7,7 @@
|
||||
font-family: "Sanchez"
|
||||
color: #C1C1C1
|
||||
|
||||
.navbar-form, .navbar-default .navbar-nav > li > a
|
||||
.navbar-default .navbar-nav > li > a
|
||||
color: #C1C1C1
|
||||
font-weight: bold
|
||||
font-size: 12pt
|
||||
|
||||
@@ -1,16 +1,30 @@
|
||||
OHIF = {
|
||||
viewer: {}
|
||||
};
|
||||
function 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
|
||||
viewportResizeTimer = setTimeout(function() {
|
||||
var elements = $('.imageViewerViewport');
|
||||
elements.each(function(index) {
|
||||
var element = this;
|
||||
if (!element) {
|
||||
return;
|
||||
}
|
||||
cornerstone.resize(element, true);
|
||||
});
|
||||
}, 1);
|
||||
}
|
||||
|
||||
OHIF.viewer.imageViewerLoadedSeriesDictionary = {};
|
||||
OHIF.viewer.imageViewerCurrentImageIdIndexDictionary = {};
|
||||
OHIF.viewer.loadIndicatorDelay = 3000;
|
||||
OHIF.viewer.defaultTool = 'wwwc';
|
||||
OHIF.viewer.refLinesEnabled = true;
|
||||
OHIF.viewer.isPlaying = {};
|
||||
Template.viewer.onCreated(function() {
|
||||
console.log("Image Viewer onCreated");
|
||||
OHIF = {
|
||||
viewer: {}
|
||||
};
|
||||
|
||||
OHIF.viewer.loadIndicatorDelay = 3000;
|
||||
OHIF.viewer.defaultTool = 'wwwc';
|
||||
OHIF.viewer.refLinesEnabled = true;
|
||||
OHIF.viewer.isPlaying = {};
|
||||
|
||||
Meteor.startup(function() {
|
||||
OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer("CornerstoneNewImage", cornerstoneTools.updateImageSynchronizer);
|
||||
OHIF.viewer.functionList = {
|
||||
invert: function(element) {
|
||||
var viewport = cornerstone.getViewport(element);
|
||||
@@ -40,25 +54,7 @@ Meteor.startup(function() {
|
||||
trigger: 'hover'
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
function 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
|
||||
viewportResizeTimer = setTimeout(function() {
|
||||
var elements = $('.imageViewerViewport');
|
||||
elements.each(function(index) {
|
||||
var element = this;
|
||||
if (!element) {
|
||||
return;
|
||||
}
|
||||
cornerstone.resize(element, true);
|
||||
});
|
||||
}, 1);
|
||||
}
|
||||
|
||||
Template.viewer.onCreated(function() {
|
||||
if (this.data.activeViewport === undefined) {
|
||||
this.data.activeViewport = new ReactiveVar(0);
|
||||
}
|
||||
@@ -68,6 +64,27 @@ Template.viewer.onCreated(function() {
|
||||
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].viewer) {
|
||||
OHIF.viewer = ViewerData[contentId].viewer;
|
||||
} else {
|
||||
OHIF.viewer.imageViewerLoadedSeriesDictionary = {};
|
||||
ViewerData[contentId].viewer = OHIF.viewer;
|
||||
}
|
||||
|
||||
OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer("CornerstoneNewImage", cornerstoneTools.updateImageSynchronizer);
|
||||
});
|
||||
|
||||
Template.viewer.onDestroyed(function() {
|
||||
OHIF.viewer.updateImageSynchronizer.destroy();
|
||||
});
|
||||
|
||||
// Avoid doing DOM manipulation during the resize handler
|
||||
|
||||
@@ -9,9 +9,21 @@ Router.route('/', function () {
|
||||
});
|
||||
|
||||
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: 'layoutLesionTracker',
|
||||
layoutTemplate: 'layout',
|
||||
name: 'viewer',
|
||||
onBeforeAction: function() {
|
||||
var self = this;
|
||||
@@ -19,21 +31,19 @@ Router.route('/viewer/:_id', {
|
||||
Meteor.call('GetStudyMetadata', this.params._id, function(error, study) {
|
||||
sortStudy(study);
|
||||
|
||||
var data = {
|
||||
studies: [study]
|
||||
};
|
||||
var title = study.seriesList[0].instances[0].patientName;
|
||||
var contentid = generateUUID();
|
||||
|
||||
var newTabObject = {
|
||||
var data = {
|
||||
title: title,
|
||||
contentid: contentid,
|
||||
};
|
||||
tabs.insert(newTabObject);
|
||||
tabs.insert(data);
|
||||
|
||||
data.studies = [study];
|
||||
|
||||
self.render('worklist');
|
||||
Session.set('DataInTab#' + contentid, data);
|
||||
Session.set('OpenNewTabEvent', contentid);
|
||||
Session.set('OpenNewTabEvent', data);
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user