Fixes for activeViewport reactivity

This commit is contained in:
Erik Ziegler 2015-10-22 11:12:20 +02:00
parent 3e483cb7a9
commit 7f04f96222
12 changed files with 65 additions and 48 deletions

View File

@ -59,9 +59,15 @@ function resizeViewports() {
} }
Template.viewer.onCreated(function() { Template.viewer.onCreated(function() {
this.data.activeViewport = new ReactiveVar(0); if (this.data.activeViewport === undefined) {
this.data.viewportRows = new ReactiveVar(1); this.data.activeViewport = new ReactiveVar(0);
this.data.viewportColumns = new ReactiveVar(2); }
if (this.data.viewportRows === undefined) {
this.data.viewportRows = new ReactiveVar(1);
}
if (this.data.viewportColumns === undefined) {
this.data.viewportColumns = new ReactiveVar(2);
}
}); });
// Avoid doing DOM manipulation during the resize handler // Avoid doing DOM manipulation during the resize handler

View File

@ -1,6 +1,6 @@
<template name="viewerMain"> <template name="viewerMain">
<div class="viewerMain"> <div class="viewerMain">
{{ >toolbar toolbarOptions activeViewport=activeViewport viewportRows=viewportRows viewportColumns=viewportColumns}} {{ >toolbar toolbarOptions=toolbarOptions activeViewport=activeViewport viewportRows=viewportRows viewportColumns=viewportColumns}}
{{ >imageViewerViewports studies=studies activeViewport=activeViewport viewportRows=viewportRows viewportColumns=viewportColumns}} {{ >imageViewerViewports studies=studies activeViewport=activeViewport viewportRows=viewportRows viewportColumns=viewportColumns}}
{{ >lesionTableContainer studies=studies activeViewport=activeViewport}} {{ >lesionTableContainer studies=studies activeViewport=activeViewport}}
</div> </div>

View File

@ -19,7 +19,9 @@ Router.route('/viewer/:_id', {
Meteor.call('GetStudyMetadata', this.params._id, function(error, study) { Meteor.call('GetStudyMetadata', this.params._id, function(error, study) {
sortStudy(study); sortStudy(study);
var studies = [study]; var data = {
studies: [study]
};
var title = study.seriesList[0].instances[0].patientName; var title = study.seriesList[0].instances[0].patientName;
var contentid = generateUUID(); var contentid = generateUUID();
@ -30,8 +32,7 @@ Router.route('/viewer/:_id', {
tabs.insert(newTabObject); tabs.insert(newTabObject);
self.render('worklist'); self.render('worklist');
console.log('Setting studesInTab'); Session.set('DataInTab#' + contentid, data);
Session.set('StudiesInTab#' + contentid, studies);
Session.set('OpenNewTabEvent', contentid); Session.set('OpenNewTabEvent', contentid);
}); });
} }

View File

@ -59,9 +59,23 @@ function resizeViewports() {
} }
Template.viewer.onCreated(function() { Template.viewer.onCreated(function() {
this.data.activeViewport = new ReactiveVar(0); if (this.data.activeViewport === undefined) {
this.data.viewportRows = new ReactiveVar(1); this.data.activeViewport = new ReactiveVar(0);
this.data.viewportColumns = new ReactiveVar(1); }
if (this.data.viewportRows === undefined) {
this.data.viewportRows = new ReactiveVar(1);
}
if (this.data.viewportColumns === undefined) {
this.data.viewportColumns = new ReactiveVar(1);
}
var viewportColumns = this.data.viewportColumns.get();
var viewportRows = this.data.viewportRows.get();
var activeViewport = this.data.activeViewport.get();
console.log('Reactive changes!');
console.log('viewportColumns: ' + viewportColumns);
console.log('viewportRows: ' + viewportRows);
console.log('activeViewport: ' + activeViewport);
}); });
// Avoid doing DOM manipulation during the resize handler // Avoid doing DOM manipulation during the resize handler

View File

@ -21,7 +21,9 @@ Router.route('/viewer/:_id', {
Meteor.call('GetStudyMetadata', this.params._id, function(error, study) { Meteor.call('GetStudyMetadata', this.params._id, function(error, study) {
sortStudy(study); sortStudy(study);
var studies = [study]; var data = {
studies: [study]
};
var title = study.seriesList[0].instances[0].patientName; var title = study.seriesList[0].instances[0].patientName;
var contentid = generateUUID(); var contentid = generateUUID();
@ -32,8 +34,7 @@ Router.route('/viewer/:_id', {
tabs.insert(newTabObject); tabs.insert(newTabObject);
self.render('worklist'); self.render('worklist');
console.log('Setting studesInTab'); Session.set('DataInTab#' + contentid, data);
Session.set('StudiesInTab#' + contentid, studies);
Session.set('OpenNewTabEvent', contentid); Session.set('OpenNewTabEvent', contentid);
}); });
} }

View File

@ -17,7 +17,7 @@ function cloneElement(element, targetId) {
return clone; return clone;
} }
function thumbnailDragStartHandler(e, studies) { function thumbnailDragStartHandler(e, data) {
// Prevent any scrolling behaviour normally caused by the original event // Prevent any scrolling behaviour normally caused by the original event
e.originalEvent.preventDefault(); e.originalEvent.preventDefault();
@ -28,10 +28,11 @@ function thumbnailDragStartHandler(e, studies) {
// Store this data for use during drag and drop // Store this data for use during drag and drop
OHIF.viewer.dragAndDropData = { OHIF.viewer.dragAndDropData = {
studyInstanceUid: imageThumbnail.data('studyInstanceUid'), studyInstanceUid: imageThumbnail.data('studyInstanceUid'),
seriesInstanceUid: imageThumbnail.data('seriesInstanceUid'), seriesInstanceUid: imageThumbnail.data('seriesInstanceUid')
studies: studies
}; };
$.extend(OHIF.viewer.dragAndDropData, data);
// Clone the image thumbnail // Clone the image thumbnail
var targetId = targetThumbnail.id + 'DragClone'; var targetId = targetThumbnail.id + 'DragClone';
var clone = cloneElement(targetThumbnail, targetId); var clone = cloneElement(targetThumbnail, targetId);
@ -202,8 +203,8 @@ Template.thumbnailEntry.onRendered(function() {
Template.thumbnailEntry.events({ Template.thumbnailEntry.events({
// Touch drag/drop events // Touch drag/drop events
'touchstart .thumbnailEntry, mousedown .thumbnailEntry': function(e) { 'touchstart .thumbnailEntry, mousedown .thumbnailEntry': function(e) {
var studies = Template.parentData(2).studies; var data = Template.parentData(2);
thumbnailDragStartHandler(e, studies); thumbnailDragStartHandler(e, data);
}, },
'touchmove .thumbnailEntry': function(e) { 'touchmove .thumbnailEntry': function(e) {
thumbnailDragHandler(e, e.currentTarget); thumbnailDragHandler(e, e.currentTarget);

View File

@ -5,10 +5,9 @@
* *
* @param element * @param element
*/ */
function enablePrefetchOnElement() { function enablePrefetchOnElement(viewportIndex) {
var viewportIndex = Session.get('ActiveViewport');
var element = $('.imageViewerViewport').get(viewportIndex); var element = $('.imageViewerViewport').get(viewportIndex);
console.log('Enabling prefetch on new element'); //console.log('Enabling prefetch on new element');
// Loop through all viewports and disable stackPrefetch // Loop through all viewports and disable stackPrefetch
$('.imageViewerViewport').each(function() { $('.imageViewerViewport').each(function() {
@ -25,9 +24,7 @@ function enablePrefetchOnElement() {
} }
} }
function displayReferenceLines() { function displayReferenceLines(viewportIndex) {
console.log("Changing reference line display");
var viewportIndex = Session.get('ActiveViewport');
var element = $('.imageViewerViewport').get(viewportIndex); var element = $('.imageViewerViewport').get(viewportIndex);
$('.imageViewerViewport').each(function(index, element) { $('.imageViewerViewport').each(function(index, element) {
@ -157,9 +154,6 @@ function loadSeriesIntoViewport(data) {
if (OHIF.viewer.refLinesEnabled && imagePlane && imagePlane.frameOfReferenceUID) { if (OHIF.viewer.refLinesEnabled && imagePlane && imagePlane.frameOfReferenceUID) {
OHIF.viewer.updateImageSynchronizer.add(element); OHIF.viewer.updateImageSynchronizer.add(element);
} }
//enablePrefetchOnElement();
displayReferenceLines();
}); });
} }
@ -222,9 +216,12 @@ Template.imageViewerViewport.onDestroyed(function() {
Template.imageViewerViewport.events({ Template.imageViewerViewport.events({
'ActivateViewport .imageViewerViewport': function(e) { 'ActivateViewport .imageViewerViewport': function(e) {
console.log('ActivateViewport: ' + e.viewportIndex); if (this.viewportIndex === this.activeViewport.get()) {
Session.set('ActiveViewport', e.viewportIndex); return;
enablePrefetchOnElement(); }
displayReferenceLines(); console.log('ActivateViewport index: ' + this.viewportIndex);
this.activeViewport.set(this.viewportIndex);
enablePrefetchOnElement(this.viewportIndex);
displayReferenceLines(this.viewportIndex);
}, },
}); });

View File

@ -3,7 +3,7 @@
{{ #each viewportArray }} {{ #each viewportArray }}
<div class="viewportContainer" style="height:{{height}}%;width:{{width}}%;"> <div class="viewportContainer" style="height:{{height}}%;width:{{width}}%;">
<div class="removable"> <div class="removable">
{{ >imageViewerViewport studies=studies activeViewport=activeViewport}} {{ >imageViewerViewport viewportIndex=viewportIndex studies=studies activeViewport=activeViewport}}
</div> </div>
</div> </div>
{{ /each }} {{ /each }}

View File

@ -1,7 +1,7 @@
Template.playClipButton.helpers({ Template.playClipButton.helpers({
'isPlaying': function() { 'isPlaying': function() {
Session.get('UpdateCINE'); Session.get('UpdateCINE');
var viewportIndex = Session.get('ActiveViewport'); var viewportIndex = this.activeViewport.get();
return !!OHIF.viewer.isPlaying[viewportIndex]; return !!OHIF.viewer.isPlaying[viewportIndex];
} }
}); });

View File

@ -2,15 +2,15 @@
<div id='toolbar'> <div id='toolbar'>
<div class="btn-group"> <div class="btn-group">
{{ #each button }} {{ #each button }}
{{ >simpleToolbarButton }} {{ >simpleToolbarButton}}
{{ /each }} {{ /each }}
{{ #if includePlayClipButton }} {{ #if includePlayClipButton }}
{{ > playClipButton activeViewport=activeViewport}} {{ >playClipButton activeViewport=activeViewport}}
{{ /if }} {{ /if }}
{{ #if includeLayoutButton }} {{ #if includeLayoutButton }}
{{ > layoutButton viewportRows=viewportRows viewportColumns=viewportColumns}} {{ >layoutButton viewportRows=viewportRows viewportColumns=viewportColumns}}
{{ /if }} {{ /if }}
</div> </div>
</div> </div>

View File

@ -84,7 +84,7 @@ Template.toolbar.events({
if (!OHIF.viewer.functionList.hasOwnProperty(command)) { if (!OHIF.viewer.functionList.hasOwnProperty(command)) {
return; return;
} }
var viewportIndex = Session.get('ActiveViewport'); var viewportIndex = Template.parentData(0).activeViewport.get();
var element = $('.imageViewerViewport').get(viewportIndex); var element = $('.imageViewerViewport').get(viewportIndex);
OHIF.viewer.functionList[command](element); OHIF.viewer.functionList[command](element);
} }
@ -101,20 +101,20 @@ Template.toolbar.onRendered(function() {
Template.toolbar.helpers({ Template.toolbar.helpers({
'button': function() { 'button': function() {
if (this.buttonData) { if (this.toolbarOptions && this.toolbarOptions.buttonData) {
return this.buttonData; return this.toolbarOptions.buttonData;
} }
return getDefaultButtonData(); return getDefaultButtonData();
}, },
'includePlayClipButton': function() { 'includePlayClipButton': function() {
if (this.includePlayClipButton !== undefined) { if (this.toolbarOptions && this.toolbarOptions.includePlayClipButton !== undefined) {
return this.includePlayClipButton; return this.toolbarOptions.includePlayClipButton;
} }
return true; return true;
}, },
'includeLayoutButton': function() { 'includeLayoutButton': function() {
if (this.includeLayoutButton !== undefined) { if (this.toolbarOptions && this.toolbarOptions.includeLayoutButton !== undefined) {
return this.includeLayoutButton; return this.toolbarOptions.includeLayoutButton;
} }
return true; return true;
} }

View File

@ -13,10 +13,7 @@ Template.worklist.events({
}); });
switchToTab = function(contentId) { switchToTab = function(contentId) {
var studies = Session.get('StudiesInTab' + contentId); var data = Session.get('DataInTab' + contentId);
var data = {
studies: studies
};
var newContentId = contentId.replace("#", ""); var newContentId = contentId.replace("#", "");
//var tabObject = tabs.findOne({contentid: newContentId}); //var tabObject = tabs.findOne({contentid: newContentId});