StandaloneViewer reconcile + Minor fix to ResizeViewportManager

This commit is contained in:
Emanuel F. Oliveira 2017-01-31 11:27:23 -02:00
parent 6ddc844945
commit 36def1e055
10 changed files with 63 additions and 31 deletions

View File

@ -20,7 +20,7 @@ Template.viewerMain.onCreated(() => {
// and change it to jQuery._data(window, 'events')['resize'].
// Otherwise this function will be probably overrided.
// See cineDialog instance.setResizeHandler function
window.addEventListener('resize', window.ResizeViewportManager.handleResize.bind(window.ResizeViewportManager));
window.addEventListener('resize', window.ResizeViewportManager.getResizeHandler());
// Add beforeUnload event handler to check for unsaved changes
window.addEventListener('beforeunload', unloadHandlers.beforeUnload);
@ -113,7 +113,7 @@ Template.viewerMain.onDestroyed(() => {
OHIF.log.info('viewerMain onDestroyed');
// Remove the Window resize listener
window.removeEventListener('resize', window.ResizeViewportManager.handleResize.bind(window.ResizeViewportManager));
window.removeEventListener('resize', window.ResizeViewportManager.getResizeHandler());
// Remove beforeUnload event handler...
window.removeEventListener('beforeunload', unloadHandlers.beforeUnload);

View File

@ -176,6 +176,10 @@ Viewerbase.dicomTagDescriptions = dicomTagDescriptions;
import { ImageSet } from './lib/classes/ImageSet';
Viewerbase.ImageSet = ImageSet;
// LayoutManager
import { LayoutManager } from './lib/classes/LayoutManager';
Viewerbase.LayoutManager = LayoutManager;
// ResizeViewportManager
import { ResizeViewportManager } from './lib/classes/ResizeViewportManager';
Viewerbase.ResizeViewportManager = ResizeViewportManager;

View File

@ -6,6 +6,7 @@ import { getInstanceClassDefaultViewport } from '../instanceClassSpecificViewpor
// Manage resizing viewports triggered by window resize
export class ResizeViewportManager {
constructor() {
this._resizeHandler = null;
OHIF.log.info('ResizeViewportManager');
}
@ -150,4 +151,18 @@ export class ResizeViewportManager {
this.resizeViewportElements();
}, 100);
}
/**
* Returns a unique event handler function associated with a given instance using lazy assignment.
* @return {function} Returns a unique copy of the event handler of this class.
*/
getResizeHandler() {
let resizeHandler = this._resizeHandler;
if (resizeHandler === null) {
resizeHandler = this.handleResize.bind(this);
this._resizeHandler = resizeHandler;
}
return resizeHandler;
}
}

View File

@ -19,10 +19,11 @@ ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code
shell-server@0.2.1 # Server-side component of the `meteor shell` command
# OHIF Packages
design
ohif:core
ohif:design
ohif:cornerstone
ohif:viewerbase
ohif:metadata
ohif:study-list
ohif:dicom-services
ohif:hanging-protocols
@ -31,7 +32,7 @@ ohif:hanging-protocols
aldeed:template-extension
aldeed:simple-schema@1.5.3
stylus@2.513.8
clinical:router
iron:router
session@1.1.7
practicalmeteor:loglevel
reactive-dict@1.1.8

View File

@ -19,10 +19,6 @@ caching-compiler@1.1.9
caching-html-compiler@1.0.7
callback-hook@1.0.10
check@1.2.4
clinical:router@2.0.19
clinical:router-location@2.1.0
clinical:router-middleware-stack@2.1.2
clinical:router-url@2.1.0
coffeescript@1.11.1_4
ddp@1.2.5
ddp-client@1.3.2
@ -30,7 +26,6 @@ ddp-common@1.2.8
ddp-rate-limiter@1.0.6
ddp-server@1.3.12
deps@1.0.12
design@0.0.1
diff-sequence@1.0.7
ecmascript@0.6.1
ecmascript-runtime@0.3.15
@ -49,6 +44,10 @@ iron:controller@1.0.12
iron:core@1.0.11
iron:dynamic-template@1.0.12
iron:layout@1.0.12
iron:location@1.0.11
iron:middleware-stack@1.1.0
iron:router@1.0.13
iron:url@1.0.11
jquery@1.11.10
launch-screen@1.1.0
livedata@1.0.18
@ -74,9 +73,11 @@ npm-mongo@2.2.11_2
observe-sequence@1.0.14
ohif:core@0.0.1
ohif:cornerstone@0.0.1
ohif:design@0.0.1
ohif:dicom-services@0.0.1
ohif:hanging-protocols@0.0.1
ohif:log@0.0.1
ohif:metadata@0.0.1
ohif:study-list@0.0.1
ohif:viewerbase@0.0.1
ohif:wadoproxy@0.0.1

View File

@ -1,10 +1,10 @@
Template.flexboxLayout.events({
'transitionend .sidebarMenu'(event) {
if (!event.target.classList.contains('sidebarMenu')) {
return;
return;
}
handleResize();
window.ResizeViewportManager.handleResize();
}
});

View File

@ -1,16 +1,21 @@
import { OHIF } from 'meteor/ohif:core';
import 'meteor/ohif:viewerbase';
Meteor.startup(() => {
window.ResizeViewportManager = window.ResizeViewportManager || new OHIF.viewerbase.ResizeViewportManager();
});
Template.standaloneViewerMain.onCreated(() => {
// Attach the Window resize listener
// TODO: Check why this seems to need to be in a defer clause
// here, but not in the other viewers...
Meteor.defer(() => {
$(window).on('resize', handleResize);
});
window.addEventListener('resize', window.ResizeViewportManager.getResizeHandler());
// Create the synchronizer used to update reference lines
OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('CornerstoneNewImage', cornerstoneTools.updateImageSynchronizer);
OHIF.viewer.metadataProvider = OHIF.cornerstone.metadataProvider;
// Metadata configuration
const metadataProvider = OHIF.viewer.metadataProvider;
cornerstoneTools.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));
});
Template.standaloneViewerMain.onRendered(() => {
@ -18,19 +23,20 @@ Template.standaloneViewerMain.onRendered(() => {
const studies = instance.data.studies;
const parentElement = instance.$('#layoutManagerTarget').get(0);
window.layoutManager = new LayoutManager(parentElement, studies);
window.layoutManager.updateViewports();
OHIF.viewerbase.layoutManager = new OHIF.viewerbase.LayoutManager(parentElement, studies);
OHIF.viewerbase.layoutManager.updateViewports();
// Enable hotkeys
enableHotkeys();
OHIF.viewerbase.hotkeyUtils.enableHotkeys();
});
Template.standaloneViewerMain.onDestroyed(() => {
Template.standaloneViewerMain.onDestroyed(() => {
// Remove the Window resize listener
$(window).off('resize', handleResize);
window.removeEventListener('resize', window.ResizeViewportManager.getResizeHandler());
// Destroy the synchronizer used to update reference lines
OHIF.viewer.updateImageSynchronizer.destroy();
delete window.layoutManager;
delete OHIF.viewerbase.layoutManager;
});

View File

@ -1,4 +1,5 @@
import { OHIF } from 'meteor/ohif:core';
import 'meteor/ohif:viewerbase';
Template.toolbarSection.helpers({
leftSidebarToggleButtonData() {
@ -182,7 +183,7 @@ Template.toolbarSection.onRendered(function() {
instance.$('#layout').dropdown();
// Set disabled/enabled tool buttons that are set in toolManager
const states = toolManager.getToolDefaultStates();
const states = OHIF.viewerbase.toolManager.getToolDefaultStates();
const disabledToolButtons = states.disabledToolButtons;
const allToolbarButtons = $('#toolbar').find('button');
if (disabledToolButtons && disabledToolButtons.length > 0) {

View File

@ -1,14 +1,16 @@
import { OHIF } from 'meteor/ohif:core';
import 'meteor/ohif:viewerbase';
import 'meteor/ohif:metadata';
OHIF.viewer = OHIF.viewer || {};
const viewportUtils = OHIF.viewerbase.viewportUtils;
OHIF.viewer.functionList = {
toggleCineDialog: toggleCineDialog,
toggleCinePlay: toggleCinePlay,
clearTools: clearTools,
resetViewport: resetViewport,
invert: invert
toggleCineDialog: viewportUtils.toggleCineDialog,
toggleCinePlay: viewportUtils.toggleCinePlay,
clearTools: viewportUtils.clearTools,
resetViewport: viewportUtils.resetViewport,
invert: viewportUtils.invert
};
Session.set('activeContentId', 'standalone');
@ -50,7 +52,8 @@ Template.viewer.onCreated(() => {
ViewerData[contentId].studyInstanceUids = [];
instance.data.studies.forEach(study => {
study.selected = true;
study.displaySets = createStacks(study);
const studyMetadata = new OHIF.metadata.StudyMetadata(study);
study.displaySets = OHIF.viewerbase.sortingManager.getDisplaySets(studyMetadata);
OHIF.viewer.Studies.insert(study);
ViewerData[contentId].studyInstanceUids.push(study.studyInstanceUid);
});

View File

@ -65,6 +65,7 @@ if (Meteor.isClient) {
// Fire the request the server
oReq.send();
this.next();
}
});
}