CR Updates

This commit is contained in:
igoroctaviano 2020-06-29 13:58:36 -03:00
parent c8052e0e0a
commit f96c1f6648
4 changed files with 44 additions and 56 deletions

View File

@ -1,5 +1,8 @@
/*
* Supported Keys: https://craig.is/killing/mice
*/
export default [ export default [
// ~ Global /** Global */
{ {
commandName: 'incrementActiveViewport', commandName: 'incrementActiveViewport',
label: 'Next Viewport', label: 'Next Viewport',
@ -10,8 +13,7 @@ export default [
label: 'Previous Viewport', label: 'Previous Viewport',
keys: ['left'], keys: ['left'],
}, },
// Supported Keys: https://craig.is/killing/mice /** Viewport */
// ~ Cornerstone Extension
{ commandName: 'rotateViewportCW', label: 'Rotate Right', keys: ['r'] }, { commandName: 'rotateViewportCW', label: 'Rotate Right', keys: ['r'] },
{ commandName: 'rotateViewportCCW', label: 'Rotate Left', keys: ['l'] }, { commandName: 'rotateViewportCCW', label: 'Rotate Left', keys: ['l'] },
{ commandName: 'invertViewport', label: 'Invert', keys: ['i'] }, { commandName: 'invertViewport', label: 'Invert', keys: ['i'] },
@ -29,11 +31,8 @@ export default [
{ commandName: 'scaleDownViewport', label: 'Zoom Out', keys: ['-'] }, { commandName: 'scaleDownViewport', label: 'Zoom Out', keys: ['-'] },
{ commandName: 'fitViewportToWindow', label: 'Zoom to Fit', keys: ['='] }, { commandName: 'fitViewportToWindow', label: 'Zoom to Fit', keys: ['='] },
{ commandName: 'resetViewport', label: 'Reset', keys: ['space'] }, { commandName: 'resetViewport', label: 'Reset', keys: ['space'] },
// clearAnnotations
{ commandName: 'nextImage', label: 'Next Image', keys: ['down'] }, { commandName: 'nextImage', label: 'Next Image', keys: ['down'] },
{ commandName: 'previousImage', label: 'Previous Image', keys: ['up'] }, { commandName: 'previousImage', label: 'Previous Image', keys: ['up'] },
// firstImage
// lastImage
{ {
commandName: 'previousViewportDisplaySet', commandName: 'previousViewportDisplaySet',
label: 'Previous Series', label: 'Previous Series',
@ -44,51 +43,58 @@ export default [
label: 'Next Series', label: 'Next Series',
keys: ['pageup'], keys: ['pageup'],
}, },
// ~ Cornerstone Tools /** Window level presets */
{ commandName: 'setZoomTool', label: 'Zoom', keys: ['z'] },
// ~ Window level presets
{ {
commandName: 'windowLevelPreset1', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 1 },
label: 'W/L Preset 1', label: 'W/L Preset 1',
keys: ['1'], keys: ['1'],
}, },
{ {
commandName: 'windowLevelPreset2', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 2 },
label: 'W/L Preset 2', label: 'W/L Preset 2',
keys: ['2'], keys: ['2'],
}, },
{ {
commandName: 'windowLevelPreset3', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 3 },
label: 'W/L Preset 3', label: 'W/L Preset 3',
keys: ['3'], keys: ['3'],
}, },
{ {
commandName: 'windowLevelPreset4', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 4 },
label: 'W/L Preset 4', label: 'W/L Preset 4',
keys: ['4'], keys: ['4'],
}, },
{ {
commandName: 'windowLevelPreset5', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 5 },
label: 'W/L Preset 5', label: 'W/L Preset 5',
keys: ['5'], keys: ['5'],
}, },
{ {
commandName: 'windowLevelPreset6', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 6 },
label: 'W/L Preset 6', label: 'W/L Preset 6',
keys: ['6'], keys: ['6'],
}, },
{ {
commandName: 'windowLevelPreset7', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 7 },
label: 'W/L Preset 7', label: 'W/L Preset 7',
keys: ['7'], keys: ['7'],
}, },
{ {
commandName: 'windowLevelPreset8', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 8 },
label: 'W/L Preset 8', label: 'W/L Preset 8',
keys: ['8'], keys: ['8'],
}, },
{ {
commandName: 'windowLevelPreset9', commandName: 'setWindowLevelPreset',
commandOptions: { preset: 9 },
label: 'W/L Preset 9', label: 'W/L Preset 9',
keys: ['9'], keys: ['9'],
}, },

View File

@ -1,5 +1,4 @@
import useDebounce from './useDebounce.js'; import useDebounce from './useDebounce.js';
import useQuery from './useQuery.js'; import useQuery from './useQuery.js';
import useHotkeys from './useHotkeys.js';
export { useDebounce, useQuery, useHotkeys }; export { useDebounce, useQuery };

View File

@ -1,31 +0,0 @@
import { useEffect, useState } from 'react';
/**
* @param {Object} manager HotkeysManager instance
* @param {Object} hotkeys hotkey bindings
* @param {Object} defaultHotkeys default hotkey bindings
*/
const useHotkeys = (manager, hotkeys, defaultHotkeys) => {
const [isLoaded, setIsLoaded] = useState(false);
useEffect(() => {
if (!hotkeys) {
console.warn('[hotkeys] No bindings defined for hotkeys hook!');
return;
}
console.debug('[hotkeys] Setting up hotkeys...');
manager.setDefaultHotKeys(defaultHotkeys || hotkeys);
manager.setHotkeys(hotkeys);
setIsLoaded(true);
return () => {
console.debug('[hotkeys] Removing hotkeys...');
manager.destroy();
};
}, [manager, hotkeys, defaultHotkeys]);
return isLoaded;
}
export default useHotkeys;

View File

@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
import { DicomMetadataStore } from '@ohif/core'; import { DicomMetadataStore } from '@ohif/core';
import { DragAndDropProvider, ImageViewerProvider } from '@ohif/ui'; import { DragAndDropProvider, ImageViewerProvider } from '@ohif/ui';
// //
import { useQuery, useHotkeys } from '@hooks'; import { useQuery } from '@hooks';
import ViewportGrid from '@components/ViewportGrid'; import ViewportGrid from '@components/ViewportGrid';
import Compose from './Compose'; import Compose from './Compose';
@ -17,7 +17,6 @@ export default function ModeRoute({
servicesManager, servicesManager,
hotkeysManager hotkeysManager
}) { }) {
const isHotkeysLoaded = useHotkeys(hotkeysManager, mode.hotkeys);
// Parse route params/querystring // Parse route params/querystring
const query = useQuery(); const query = useQuery();
const queryStudyInstanceUIDs = query.get('StudyInstanceUIDs'); const queryStudyInstanceUIDs = query.get('StudyInstanceUIDs');
@ -28,7 +27,7 @@ export default function ModeRoute({
? StudyInstanceUIDs ? StudyInstanceUIDs
: [StudyInstanceUIDs]; : [StudyInstanceUIDs];
const { extensions, sopClassHandlers } = mode; const { extensions, sopClassHandlers, hotkeys } = mode;
if (dataSourceName === undefined) { if (dataSourceName === undefined) {
dataSourceName = extensionManager.defaultDataSourceName; dataSourceName = extensionManager.defaultDataSourceName;
@ -76,6 +75,22 @@ export default function ModeRoute({
return ViewportGrid({ ...props, dataSource }); return ViewportGrid({ ...props, dataSource });
} }
useEffect(() => {
if (!hotkeys) {
console.warn('[hotkeys] No bindings defined for hotkeys hook!');
return;
}
console.debug('[hotkeys] Setting up hotkeys...');
hotkeysManager.setDefaultHotKeys(hotkeys);
hotkeysManager.setHotkeys(hotkeys);
return () => {
console.debug('[hotkeys] Removing hotkeys...');
hotkeysManager.destroy();
};
}, []);
useEffect(() => { useEffect(() => {
route.init({ servicesManager, extensionManager }); route.init({ servicesManager, extensionManager });
}, [ }, [
@ -85,8 +100,7 @@ export default function ModeRoute({
route, route,
servicesManager, servicesManager,
extensionManager, extensionManager,
hotkeysManager, hotkeysManager
isHotkeysLoaded
]); ]);
// This queries for series, but... What does it do with them? // This queries for series, but... What does it do with them?