From a8f9c0421f4ec7505ffba586100bf7a9644b4540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elo=C3=ADzio=20Salgado?= Date: Fri, 18 Nov 2016 15:57:41 -0200 Subject: [PATCH] LT-376: Refactor configureTools function in toolManager component to be cornerstone tool independent and works in OHIF Viewer --- .../both/configuration/bidirectional.js | 2 +- .../both/configuration/nonTarget.js | 2 +- .../client/compatibility/bidirectionalTool.js | 7 +- .../client/compatibility/nonTargetTool.js | 6 +- .../ohif-viewerbase/client/lib/toolManager.js | 71 ++++++++----------- 5 files changed, 42 insertions(+), 46 deletions(-) diff --git a/Packages/ohif-lesiontracker/both/configuration/bidirectional.js b/Packages/ohif-lesiontracker/both/configuration/bidirectional.js index 3a51bf51c..efec48106 100644 --- a/Packages/ohif-lesiontracker/both/configuration/bidirectional.js +++ b/Packages/ohif-lesiontracker/both/configuration/bidirectional.js @@ -92,5 +92,5 @@ export const bidirectional = { displayFunction: displayFunction }, includeInCaseProgress: true, - }, + } }; diff --git a/Packages/ohif-lesiontracker/both/configuration/nonTarget.js b/Packages/ohif-lesiontracker/both/configuration/nonTarget.js index 24ab328ad..fd622a81f 100644 --- a/Packages/ohif-lesiontracker/both/configuration/nonTarget.js +++ b/Packages/ohif-lesiontracker/both/configuration/nonTarget.js @@ -56,5 +56,5 @@ export const nonTarget = { displayFunction: displayFunction }, includeInCaseProgress: true, - }, + } }; diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js index 0bd98c334..1f0134ee4 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js +++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js @@ -1,13 +1,18 @@ +import { toolManager } from 'meteor/ohif:viewerbase'; + (function($, cornerstone, cornerstoneMath, cornerstoneTools) { 'use strict'; var toolType = 'bidirectional'; + const shadowConfig = toolManager.getToolDefaultStates().shadowConfig; + var configuration = { setMeasurementNumberCallback: setMeasurementNumberCallback, getMeasurementLocationCallback: getMeasurementLocationCallback, - changeMeasurementLocationCallback: changeMeasurementLocationCallback + changeMeasurementLocationCallback: changeMeasurementLocationCallback, + ...shadowConfig }; // Used to cancel tool placement diff --git a/Packages/ohif-lesiontracker/client/compatibility/nonTargetTool.js b/Packages/ohif-lesiontracker/client/compatibility/nonTargetTool.js index d64e7aaf1..8ee32715d 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/nonTargetTool.js +++ b/Packages/ohif-lesiontracker/client/compatibility/nonTargetTool.js @@ -1,4 +1,5 @@ import { OHIF } from 'meteor/ohif:core'; +import { toolManager } from 'meteor/ohif:viewerbase'; (function($, cornerstone, cornerstoneMath, cornerstoneTools) { @@ -6,12 +7,15 @@ import { OHIF } from 'meteor/ohif:core'; const toolType = 'nonTarget'; + const shadowConfig = toolManager.getToolDefaultStates().shadowConfig; + const configuration = { getMeasurementLocationCallback: getMeasurementLocationCallback, changeMeasurementLocationCallback: changeMeasurementLocationCallback, drawHandles: false, drawHandlesOnHover: true, - arrowFirst: true + arrowFirst: true, + ...shadowConfig }; // Used to cancel tool placement diff --git a/Packages/ohif-viewerbase/client/lib/toolManager.js b/Packages/ohif-viewerbase/client/lib/toolManager.js index 7c9a6666a..3fbc0b8e0 100644 --- a/Packages/ohif-viewerbase/client/lib/toolManager.js +++ b/Packages/ohif-viewerbase/client/lib/toolManager.js @@ -1,29 +1,35 @@ import { OHIF } from 'meteor/ohif:core'; -var activeTool = 'wwwc'; -var defaultTool = 'wwwc'; +let activeTool = 'wwwc'; +let defaultTool = 'wwwc'; -var tools = {}; +let tools = {}; -var toolDefaultStates = { +let toolDefaultStates = { activate: [], deactivate: ['length', 'angle', 'annotate', 'ellipticalRoi', 'rectangleRoi'], enable: [], disable: [], - disabledToolButtons: [] + disabledToolButtons: [], + shadowConfig: { + shadow: false, + shadowColor: '#000000', + shadowOffsetX: 0, + shadowOffsetY: 0 + } }; -var initialized = false; +let initialized = false; -function configureTools() { +const configureTools = () => { // Get Cornerstone Tools - const { panMultiTouch, textStyle, toolStyle, toolColors, length, - bidirectional, arrowAnnotate, zoom, ellipticalRoi, nonTarget } = cornerstoneTools; + const { panMultiTouch, textStyle, toolStyle, toolColors, + length, arrowAnnotate, zoom, ellipticalRoi } = cornerstoneTools; // Set the configuration for the multitouch pan tool const multiTouchPanConfig = { - testPointers: function(eventData) { + testPointers: eventData => { return (eventData.numPointers >= 3); } }; @@ -46,19 +52,12 @@ function configureTools() { // Set color for active tools toolColors.setActiveColor('rgb(0, 255, 0)'); - // Set shadow configuration for length and bidirectional text boxes - const shadowConfig = { - shadow: false, - shadowColor: '#000000', - shadowOffsetX: 0, - shadowOffsetY: 0 - }; + // Set shadow configuration + const shadowConfig = toolManager.getToolDefaultStates().shadowConfig; // Get some tools config to not override them const lengthConfig = length.getConfiguration(); - const bidirectionalConfig = bidirectional.getConfiguration(); const ellipticalRoiConfig = ellipticalRoi.getConfiguration(); - const nonTargetConfig = nonTarget.getConfiguration(); // Add shadow to length tool length.setConfiguration({ @@ -67,24 +66,12 @@ function configureTools() { drawHandlesOnHover: true }); - // Add shadow to length tool - bidirectional.setConfiguration({ - ...bidirectionalConfig, - ...shadowConfig - }); - // Add shadow to length tool ellipticalRoi.setConfiguration({ ...ellipticalRoiConfig, ...shadowConfig }); - // Add shadow to non target tool - nonTarget.setConfiguration({ - ...nonTargetConfig, - ...shadowConfig - }); - // Set the configuration values for the text annotation (Arrow) tool const annotateConfig = { getTextCallback: getAnnotationTextCallback, @@ -102,7 +89,7 @@ function configureTools() { } toolManager = { - init: function() { + init() { toolManager.addTool('wwwc', { mouse: cornerstoneTools.wwwc, touch: cornerstoneTools.wwwcTouchDrag @@ -164,19 +151,19 @@ toolManager = { configureTools(); initialized = true; }, - addTool: function(name, base) { + addTool(name, base) { tools[name] = base; }, - getTools: function() { + getTools() { return tools; }, - setToolDefaultStates: function(states) { + setToolDefaultStates(states) { toolDefaultStates = states; }, - getToolDefaultStates: function() { + getToolDefaultStates() { return toolDefaultStates; }, - setActiveToolForElement: function(tool, element) { + setActiveToolForElement(tool, element) { var canvases = $(element).find('canvas'); if (element.classList.contains('empty') || !canvases.length) { return; @@ -255,7 +242,7 @@ toolManager = { cornerstoneTools.zoomTouchPinch.activate(element); cornerstoneTools.panMultiTouch.activate(element); }, - setActiveTool: function(tool, elements) { + setActiveTool(tool, elements) { if (!initialized) { toolManager.init(); } @@ -269,7 +256,7 @@ toolManager = { } // Otherwise, set the active tool for all viewport elements - $(elements).each(function(index, element) { + $(elements).each((index, element) => { toolManager.setActiveToolForElement(tool, element); }); activeTool = tool; @@ -277,17 +264,17 @@ toolManager = { // Store the active tool in the session in order to enable reactivity Session.set('ToolManagerActiveTool', tool); }, - getActiveTool: function() { + getActiveTool() { if (!activeTool) { activeTool = defaultTool; } return activeTool; }, - setDefaultTool: function(tool) { + setDefaultTool(tool) { defaultTool = tool; }, - getDefaultTool: function() { + getDefaultTool() { return defaultTool; }