larvitar 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,9 +6,9 @@
6
6
 
7
7
  ## Dicom Image Toolkit for CornerstoneJS
8
8
 
9
- ### Current version: 1.4.0
9
+ ### Current version: 1.4.1
10
10
 
11
- ### Latest Published Release: 1.4.0
11
+ ### Latest Published Release: 1.4.1
12
12
 
13
13
  This library provides common DICOM functionalities to be used in web-applications: it's wrapper that simplifies the use of cornerstone-js environment.
14
14
  Orthogonal multiplanar reformat is included as well as custom loader/exporter for nrrd files and [Vuex](https://vuex.vuejs.org/) custom integration.
@@ -6,6 +6,8 @@
6
6
  // external libraries
7
7
  import { throttle } from "lodash";
8
8
  import * as keyCodes from "keycode-js";
9
+ import cornerstone from "cornerstone-core";
10
+ import cornerstoneTools from "cornerstone-tools/dist/cornerstoneTools.js";
9
11
 
10
12
  // internal libraries
11
13
  import { DEFAULT_MOUSE_KEYS } from "./default";
@@ -31,7 +33,8 @@ let onKeyUpFn = null;
31
33
  * Setup mouse handler modifiers and keyboard shortcuts:
32
34
  * register a tool on right button and another one
33
35
  * when pressing a modifier (ctrl/shift/alt) + right button
34
- * The activation take place on all active viewports
36
+ * The activation take place on all active viewports (we added a check to activate only on viewports
37
+ * in which the tool has been added previously)
35
38
  * Improvements could be:
36
39
  * - "restore previous active tool" instead of passed "default" tool
37
40
  * - manage left button (an idea could be to cycle over object keys for both buttons)
@@ -57,6 +60,9 @@ export function addMouseKeyHandlers(config) {
57
60
  return false;
58
61
  });
59
62
 
63
+ // get all enabled viewports. Then, filter only viewport in which the target tool had been added previously.
64
+ let allViewports = cornerstone.getEnabledElements().map(enel => enel.element);
65
+
60
66
  // Define behaviour on key down: activate registered tool
61
67
  function onKeyDown(evt) {
62
68
  // keyboard shortcuts (activate on left mouse button)
@@ -71,7 +77,17 @@ export function addMouseKeyHandlers(config) {
71
77
  .filter(key => keyCodes[key] == evt.keyCode)
72
78
  .pop();
73
79
  if (config.debug) console.log("active", config.keyboard_shortcuts[key]);
74
- setToolActive(config.keyboard_shortcuts[key], { mouseButtonMask: 1 });
80
+ const viewports = allViewports.filter(viewport =>
81
+ cornerstoneTools.getToolForElement(
82
+ viewport,
83
+ config.keyboard_shortcuts[key]
84
+ )
85
+ );
86
+ setToolActive(
87
+ config.keyboard_shortcuts[key],
88
+ { mouseButtonMask: 1 },
89
+ viewports.map(v => v.id)
90
+ );
75
91
  document.addEventListener("keydown", onKeyDown, { once: true });
76
92
  }
77
93
  // right drag + shift
@@ -81,7 +97,18 @@ export function addMouseKeyHandlers(config) {
81
97
  evt.keyCode == keyCodes.KEY_SHIFT
82
98
  ) {
83
99
  if (config.debug) console.log("active", config.mouse_button_right.shift);
84
- setToolActive(config.mouse_button_right.shift, { mouseButtonMask: 2 });
100
+ const viewports = allViewports.filter(viewport =>
101
+ cornerstoneTools.getToolForElement(
102
+ viewport,
103
+ config.mouse_button_right.shift
104
+ )
105
+ );
106
+
107
+ setToolActive(
108
+ config.mouse_button_right.shift,
109
+ { mouseButtonMask: 2 },
110
+ viewports.map(v => v.id)
111
+ );
85
112
  document.addEventListener("keyup", onKeyUp, { once: true });
86
113
  }
87
114
  // right drag + ctrl
@@ -91,7 +118,18 @@ export function addMouseKeyHandlers(config) {
91
118
  evt.keyCode == keyCodes.KEY_CONTROL
92
119
  ) {
93
120
  if (config.debug) console.log("active", config.mouse_button_right.ctrl);
94
- setToolActive(config.mouse_button_right.ctrl, { mouseButtonMask: 2 });
121
+ const viewports = allViewports.filter(viewport =>
122
+ cornerstoneTools.getToolForElement(
123
+ viewport,
124
+ config.mouse_button_right.ctrl
125
+ )
126
+ );
127
+
128
+ setToolActive(
129
+ config.mouse_button_right.ctrl,
130
+ { mouseButtonMask: 2 },
131
+ viewports.map(v => v.id)
132
+ );
95
133
  document.addEventListener("keyup", onKeyUp, { once: true });
96
134
  }
97
135
  // leave default
@@ -105,17 +143,48 @@ export function addMouseKeyHandlers(config) {
105
143
  function onKeyUp(e) {
106
144
  if (config.debug)
107
145
  console.log("active default", config.mouse_button_right.default);
108
- setToolActive(config.mouse_button_right.default, { mouseButtonMask: 2 });
146
+ const viewports = allViewports.filter(viewport =>
147
+ cornerstoneTools.getToolForElement(
148
+ viewport,
149
+ config.mouse_button_right.default
150
+ )
151
+ );
152
+ setToolActive(
153
+ config.mouse_button_right.default,
154
+ { mouseButtonMask: 2 },
155
+ viewports.map(v => v.id)
156
+ );
109
157
  document.addEventListener("keydown", onKeyDown, { once: true });
110
158
  }
111
159
 
112
- // activate default, if any
160
+ // activate default on mouse right, if any
113
161
  if (config.mouse_button_right && config.mouse_button_right.default) {
114
- setToolActive(config.mouse_button_right.default, { mouseButtonMask: 2 });
162
+ const viewports = allViewports.filter(viewport =>
163
+ cornerstoneTools.getToolForElement(
164
+ viewport,
165
+ config.mouse_button_right.default
166
+ )
167
+ );
168
+ setToolActive(
169
+ config.mouse_button_right.default,
170
+ { mouseButtonMask: 2 },
171
+ viewports.map(v => v.id)
172
+ );
115
173
  }
116
174
 
175
+ // activate default on mouse left, if any
117
176
  if (config.mouse_button_left && config.mouse_button_left.default) {
118
- setToolActive(config.mouse_button_left.default, { mouseButtonMask: 1 });
177
+ const viewports = allViewports.filter(viewport =>
178
+ cornerstoneTools.getToolForElement(
179
+ viewport,
180
+ config.mouse_button_left.default
181
+ )
182
+ );
183
+ setToolActive(
184
+ config.mouse_button_left.default,
185
+ { mouseButtonMask: 1 },
186
+ viewports.map(v => v.id)
187
+ );
119
188
  }
120
189
 
121
190
  document.addEventListener("keydown", onKeyDown, { once: true });
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "medical",
7
7
  "cornerstone"
8
8
  ],
9
- "version": "1.4.0",
9
+ "version": "1.4.1",
10
10
  "description": "javascript library for parsing, loading, rendering and interacting with DICOM images",
11
11
  "repository": {
12
12
  "url": "https://github.com/dvisionlab/Larvitar.git",