From 038039518a240a53a52f2b54cfdf2c65541a767a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Botelho=20Almeida?= Date: Fri, 13 Oct 2017 11:08:53 -0300 Subject: [PATCH] OHIF-113: added element verification before tool activation. (#116) * OHIF-113: added element verification before tool activation. * OHIF-113: fixing typo --- .../ohif-viewerbase/client/lib/toolManager.js | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/Packages/ohif-viewerbase/client/lib/toolManager.js b/Packages/ohif-viewerbase/client/lib/toolManager.js index 04c9baaac..c53d184ef 100644 --- a/Packages/ohif-viewerbase/client/lib/toolManager.js +++ b/Packages/ohif-viewerbase/client/lib/toolManager.js @@ -1,6 +1,7 @@ import { Session } from 'meteor/session'; import { $ } from 'meteor/jquery'; import { OHIF } from 'meteor/ohif:core'; +import { _ } from 'meteor/underscore'; import { getFrameOfReferenceUID } from './getFrameOfReferenceUID'; import { updateCrosshairsSynchronizer } from './updateCrosshairsSynchronizer'; import { crosshairsSynchronizers } from './crosshairsSynchronizers'; @@ -403,6 +404,30 @@ export const toolManager = { toolManager.init(); } + let $elements; + if (!elements || !elements.length) { + $elements = $('.imageViewerViewport'); + } else { + $elements = $(elements); + } + + const checkElementEnabled = function(allElementsEnabled, element) { + try { + cornerstone.getEnabledElement(element); + + return allElementsEnabled; + } catch (error) { + return true; + } + }; + + if ($elements.toArray().reduce(checkElementEnabled, false)) { + // if at least one element is not enabled, we do not activate tool. + OHIF.log.info(`Could not activate tool ${tool} due to a viewport not being enabled. Try again later.`); + + return; + } + /** * TODO: Add textMarkerDialogs template to OHIF's */ @@ -429,13 +454,6 @@ export const toolManager = { tool = defaultTool; } - let $elements; - if (!elements || !elements.length) { - $elements = $('.imageViewerViewport'); - } else { - $elements = $(elements); - } - // Otherwise, set the active tool for all viewport elements $elements.each((index, element) => { toolManager.setActiveToolForElement(tool, element);