From a06da4e6e1a6e578670ef24a482ab19d077c60aa Mon Sep 17 00:00:00 2001 From: "Emanuel F. Oliveira" Date: Wed, 18 Jan 2017 20:38:44 -0200 Subject: [PATCH] Fixing broken references in LesionTracker related to measurement deletions and lesion table row selection + Fixing bug in measurement handlers for unassociated studies. --- .../client/compatibility/bidirectionalTool.js | 1 - .../compatibility/deleteLesionKeyboardTool.js | 6 +- .../both/configuration/measurements.js | 6 ++ .../client/lib/jumpToRowItem.js | 12 +-- .../viewer/viewerMain/viewerMain.js | 2 +- .../client/lib/resizeViewportElements.js | 92 ------------------- 6 files changed, 17 insertions(+), 102 deletions(-) delete mode 100644 Packages/ohif-viewerbase/client/lib/resizeViewportElements.js diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js index 7adfe4bcd..64cb58c55 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js +++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js @@ -1,4 +1,3 @@ -import { toolManager } from 'meteor/ohif:viewerbase'; import { OHIF } from 'meteor/ohif:core'; import { Viewerbase } from 'meteor/ohif:viewerbase'; diff --git a/Packages/ohif-lesiontracker/client/compatibility/deleteLesionKeyboardTool.js b/Packages/ohif-lesiontracker/client/compatibility/deleteLesionKeyboardTool.js index b229ceb5a..baba7b774 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/deleteLesionKeyboardTool.js +++ b/Packages/ohif-lesiontracker/client/compatibility/deleteLesionKeyboardTool.js @@ -1,3 +1,5 @@ +import { Viewerbase } from 'meteor/ohif:viewerbase'; + (function(cornerstoneTools) { 'use strict'; @@ -21,9 +23,9 @@ // TODO = Check if we have the same function already in Cornerstone Tools function getNearbyToolData(element, coords, toolTypes) { - var allTools = toolManager.getTools(); + var allTools = Viewerbase.toolManager.getTools(); var pointNearTool = false; - var touchDevice = isTouchDevice(); + var touchDevice = Viewerbase.helpers.isTouchDevice(); var nearbyTool = {}, nearbyToolIndex, nearbyToolType; diff --git a/Packages/ohif-measurements/both/configuration/measurements.js b/Packages/ohif-measurements/both/configuration/measurements.js index 33b57e714..e32512b4a 100644 --- a/Packages/ohif-measurements/both/configuration/measurements.js +++ b/Packages/ohif-measurements/both/configuration/measurements.js @@ -44,6 +44,12 @@ class MeasurementApi { studyInstanceUids: measurement.studyInstanceUid }); + // Preventing errors thrown when non-associated (standalone) study is opened... + // @TODO: Make sure this logic is correct. + if (!timepoint) { + return; + } + const emptyItem = groupCollection.findOne({ toolId: { $eq: null }, timepointId: timepoint.timepointId diff --git a/Packages/ohif-measurements/client/lib/jumpToRowItem.js b/Packages/ohif-measurements/client/lib/jumpToRowItem.js index 7cf39efdc..9a22e0e5b 100644 --- a/Packages/ohif-measurements/client/lib/jumpToRowItem.js +++ b/Packages/ohif-measurements/client/lib/jumpToRowItem.js @@ -6,12 +6,12 @@ function findAndRenderDisplaySet(displaySets, viewportIndex, studyInstanceUid, s // Find the proper stack to display const stacksFromSeries = displaySets.filter(stack => stack.seriesInstanceUid === seriesInstanceUid); const stack = stacksFromSeries.find(stack => { - const imageIndex = stack.images.findIndex(image => image.sopInstanceUid === sopInstanceUid); - return imageIndex > -1; + const imageIndex = stack.images.findIndex(image => image.getSOPInstanceUID() === sopInstanceUid); + return imageIndex > -1; }); // TODO: make this work for multi-frame instances - const specificImageIndex = stack.images.findIndex(image => image.sopInstanceUid === sopInstanceUid); + const specificImageIndex = stack.images.findIndex(image => image.getSOPInstanceUID() === sopInstanceUid); const displaySetData = { studyInstanceUid: studyInstanceUid, @@ -23,10 +23,10 @@ function findAndRenderDisplaySet(displaySets, viewportIndex, studyInstanceUid, s // Add a renderedCallback to activate the measurements once it's if (renderedCallback) { - displaySetData.renderedCallback = renderedCallback; + displaySetData.renderedCallback = renderedCallback; } - window.layoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, displaySetData); + OHIF.viewerbase.layoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, displaySetData); } function renderIntoViewport(viewportIndex, studyInstanceUid, seriesInstanceUid, sopInstanceUid, renderedCallback) { @@ -44,7 +44,7 @@ function renderIntoViewport(viewportIndex, studyInstanceUid, seriesInstanceUid, const $viewports = $('.imageViewerViewport'); const element = $viewports.get(viewportIndex); const startLoadingHandler = cornerstoneTools.loadHandlerManager.getStartLoadHandler(); - startLoadingHandler(element) + startLoadingHandler(element); getStudyMetadata(studyInstanceUid, loadedStudy => { loadedStudy.displaySets = createStacks(loadedStudy); OHIF.log.warn('renderIntoViewport'); diff --git a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js index 0467f97c4..2baa2cea8 100644 --- a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js +++ b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js @@ -32,7 +32,7 @@ Template.viewerMain.onCreated(() => { Template.viewerMain.onRendered(() => { const instance = Template.instance(); - instance.subscribe('hangingprotocols', () => { + HP.ProtocolStore.onReady(() => { const { studies, currentTimepointId, measurementApi, timepointIds } = instance.data; const parentElement = instance.$('#layoutManagerTarget').get(0); diff --git a/Packages/ohif-viewerbase/client/lib/resizeViewportElements.js b/Packages/ohif-viewerbase/client/lib/resizeViewportElements.js deleted file mode 100644 index 1013d3584..000000000 --- a/Packages/ohif-viewerbase/client/lib/resizeViewportElements.js +++ /dev/null @@ -1,92 +0,0 @@ -let resizeTimer; - -handleResize = function() { - // Avoid doing DOM manipulation during the resize handler - // because it is fired very often. - // Resizing is therefore performed 100 ms after the resize event stops. - clearTimeout(resizeTimer); - resizeTimer = setTimeout(() => { - resizeViewportElements(); - }, 100); -}; - -const repositionStudySeriesQuickSwitch = () => { - const activeTab = Session.get('activeContentId'); - if(activeTab === 'viewerTab') { - const nViewports = window.layoutManager.viewportData.length; - - if(nViewports && nViewports > 1) { - const leftSidebar = $('#viewer .sidebar-left.sidebar-open'); - const rightSidebar = $('#viewer .sidebar-right.sidebar-open'); - const leftQuickSwitch = $('.quickSwitchWrapper.left'); - const rightQuickSwitch = $('.quickSwitchWrapper.right'); - - const hasLeftSidebar = leftSidebar.length > 0; - const hasRightSidebar = rightSidebar.length > 0; - - rightQuickSwitch.removeClass('left-sidebar-only'); - leftQuickSwitch.removeClass('right-sidebar-only'); - - let leftOffset = 0; - - if(hasLeftSidebar) { - leftOffset = ( leftSidebar.width()/$(window).width() ) * 100; - - if(!hasRightSidebar) { - rightQuickSwitch.addClass('left-sidebar-only'); - } - } - - if(hasRightSidebar && !hasLeftSidebar) { - leftQuickSwitch.addClass('right-sidebar-only'); - } - - const leftPosition = ( ($('#imageViewerViewports').width() / nViewports) / $(window).width() ) * 100 + leftOffset; - const rightPosition = 100 - leftPosition; - - leftQuickSwitch.css('right', rightPosition + '%'); - rightQuickSwitch.css('left', leftPosition + '%'); - } - - } -}; - -// Resize viewport elements -resizeViewportElements = function() { - const viewportResizeTimer = setTimeout(() => { - repositionStudySeriesQuickSwitch(); - - const elements = $('.imageViewerViewport').not('.empty'); - elements.each((index, element) => { - let enabledElement; - try { - enabledElement = cornerstone.getEnabledElement(element); - } catch(error) { - return; - } - - cornerstone.resize(element, true); - - if (enabledElement.fitToWindow === false) { - const imageId = enabledElement.image.imageId; - const instance = cornerstoneTools.metaData.get('instance', imageId); - const instanceClassViewport = getInstanceClassDefaultViewport(instance, enabledElement, imageId); - cornerstone.setViewport(element, instanceClassViewport); - } - - // TODO= Refactor this into separate scrollbar resize function - const currentOverlay = $(element).siblings('.imageViewerViewportOverlay'); - const imageControls = currentOverlay.find('.imageControls'); - currentOverlay.find('.imageControls').height($(element).height()); - - // Set it's width to its parent's height - // (because webkit is stupid and can't style vertical sliders) - const scrollbar = currentOverlay.find('#scrollbar'); - scrollbar.height(scrollbar.parent().height() - 20); - - const currentImageSlider = currentOverlay.find('#imageSlider'); - const overlayHeight = currentImageSlider.parent().height(); - currentImageSlider.width(overlayHeight); - }); - }, 1); -}; \ No newline at end of file