Viewport grid load default as 1x1 and load first image of series by default (#1817)
This commit is contained in:
parent
8f05cf73c7
commit
1d8f5cfc42
@ -127,7 +127,6 @@ function PanelStudyBrowser({
|
|||||||
changedDisplaySets,
|
changedDisplaySets,
|
||||||
thumbnailImageSrcMap
|
thumbnailImageSrcMap
|
||||||
);
|
);
|
||||||
|
|
||||||
setDisplaySets(mappedDisplaySets);
|
setDisplaySets(mappedDisplaySets);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -152,11 +151,11 @@ function PanelStudyBrowser({
|
|||||||
);
|
);
|
||||||
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
||||||
? // eslint-disable-next-line prettier/prettier
|
? // eslint-disable-next-line prettier/prettier
|
||||||
[
|
[
|
||||||
...expandedStudyInstanceUIDs.filter(
|
...expandedStudyInstanceUIDs.filter(
|
||||||
stdyUid => stdyUid !== StudyInstanceUID
|
stdyUid => stdyUid !== StudyInstanceUID
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
||||||
|
|
||||||
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
||||||
|
|||||||
@ -5,22 +5,40 @@ import {
|
|||||||
useViewportGrid,
|
useViewportGrid,
|
||||||
} from '@ohif/ui';
|
} from '@ohif/ui';
|
||||||
|
|
||||||
|
const DEFAULT_LAYOUT = {
|
||||||
|
type: 'SET_LAYOUT',
|
||||||
|
payload: {
|
||||||
|
numCols: 1,
|
||||||
|
numRows: 1,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
function LayoutSelector() {
|
function LayoutSelector() {
|
||||||
const [isOpen, setIsOpen] = useState(false);
|
const [isOpen, setIsOpen] = useState(false);
|
||||||
const [viewportGridState, dispatch] = useViewportGrid();
|
const [viewportGridState, dispatch] = useViewportGrid();
|
||||||
|
|
||||||
useEffect(() => {
|
const closeOnOutsideClick = () => {
|
||||||
function closeOnOutsideClick() {
|
if (isOpen) {
|
||||||
if (isOpen) {
|
setIsOpen(false);
|
||||||
setIsOpen(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
window.addEventListener('click', closeOnOutsideClick);
|
window.addEventListener('click', closeOnOutsideClick);
|
||||||
return () => {
|
return () => {
|
||||||
window.removeEventListener('click', closeOnOutsideClick);
|
window.removeEventListener('click', closeOnOutsideClick);
|
||||||
};
|
};
|
||||||
}, [isOpen]);
|
}, [isOpen]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
/* Reset to default layout when component unmounts */
|
||||||
|
return () => {
|
||||||
|
dispatch(DEFAULT_LAYOUT);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const onClickHandler = () => setIsOpen(!isOpen);
|
||||||
|
|
||||||
const DropdownContent = isOpen ? OHIFLayoutSelector : null;
|
const DropdownContent = isOpen ? OHIFLayoutSelector : null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -28,9 +46,7 @@ function LayoutSelector() {
|
|||||||
id="Layout"
|
id="Layout"
|
||||||
label="Grid Layout"
|
label="Grid Layout"
|
||||||
icon="tool-layout"
|
icon="tool-layout"
|
||||||
onClick={() => {
|
onClick={onClickHandler}
|
||||||
setIsOpen(!isOpen);
|
|
||||||
}}
|
|
||||||
dropdownContent={
|
dropdownContent={
|
||||||
DropdownContent !== null && (
|
DropdownContent !== null && (
|
||||||
<DropdownContent
|
<DropdownContent
|
||||||
|
|||||||
@ -201,10 +201,10 @@ function PanelStudyBrowserTracking({
|
|||||||
);
|
);
|
||||||
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
||||||
? [
|
? [
|
||||||
...expandedStudyInstanceUIDs.filter(
|
...expandedStudyInstanceUIDs.filter(
|
||||||
stdyUid => stdyUid !== StudyInstanceUID
|
stdyUid => stdyUid !== StudyInstanceUID
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
||||||
|
|
||||||
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
||||||
@ -285,7 +285,6 @@ function _mapDisplaySets(
|
|||||||
) {
|
) {
|
||||||
const thumbnailDisplaySets = [];
|
const thumbnailDisplaySets = [];
|
||||||
const thumbnailNoImageDisplaySets = [];
|
const thumbnailNoImageDisplaySets = [];
|
||||||
|
|
||||||
displaySets.forEach(ds => {
|
displaySets.forEach(ds => {
|
||||||
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
||||||
const componentType = _getComponentType(ds.Modality);
|
const componentType = _getComponentType(ds.Modality);
|
||||||
|
|||||||
@ -10,8 +10,6 @@ import {
|
|||||||
useViewportGrid,
|
useViewportGrid,
|
||||||
useViewportDialog,
|
useViewportDialog,
|
||||||
} from '@ohif/ui';
|
} from '@ohif/ui';
|
||||||
import debounce from 'lodash.debounce';
|
|
||||||
import throttle from 'lodash.throttle';
|
|
||||||
import { useTrackedMeasurements } from './../getContextModule';
|
import { useTrackedMeasurements } from './../getContextModule';
|
||||||
|
|
||||||
// TODO -> Get this list from the list of tracked measurements.
|
// TODO -> Get this list from the list of tracked measurements.
|
||||||
@ -43,7 +41,6 @@ function TrackedCornerstoneViewport({
|
|||||||
|
|
||||||
const [
|
const [
|
||||||
{ activeViewportIndex, viewports },
|
{ activeViewportIndex, viewports },
|
||||||
dispatchViewportGrid,
|
|
||||||
] = useViewportGrid();
|
] = useViewportGrid();
|
||||||
// viewportIndex, onSubmit
|
// viewportIndex, onSubmit
|
||||||
const [viewportDialogState, viewportDialogApi] = useViewportDialog();
|
const [viewportDialogState, viewportDialogApi] = useViewportDialog();
|
||||||
@ -217,7 +214,6 @@ function TrackedCornerstoneViewport({
|
|||||||
SliceThickness,
|
SliceThickness,
|
||||||
} = displaySet.images[0];
|
} = displaySet.images[0];
|
||||||
|
|
||||||
|
|
||||||
if (trackedSeries.includes(SeriesInstanceUID) !== isTracked) {
|
if (trackedSeries.includes(SeriesInstanceUID) !== isTracked) {
|
||||||
setIsTracked(!isTracked);
|
setIsTracked(!isTracked);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
/**
|
/**
|
||||||
* CSS Grid Reference: http://grid.malven.co/
|
* CSS Grid Reference: http://grid.malven.co/
|
||||||
*/
|
*/
|
||||||
import React from 'react';
|
import React, { useEffect } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { ViewportGrid, ViewportPane, useViewportGrid } from '@ohif/ui';
|
import { ViewportGrid, ViewportPane, useViewportGrid } from '@ohif/ui';
|
||||||
import EmptyViewport from './EmptyViewport';
|
import EmptyViewport from './EmptyViewport';
|
||||||
|
import { classes } from '@ohif/core';
|
||||||
|
const { ImageSet } = classes;
|
||||||
|
|
||||||
function ViewerViewportGrid(props) {
|
function ViewerViewportGrid(props) {
|
||||||
const { servicesManager, viewportComponents, dataSource } = props;
|
const { servicesManager, viewportComponents, dataSource } = props;
|
||||||
@ -20,6 +22,29 @@ function ViewerViewportGrid(props) {
|
|||||||
// TODO -> Need some way of selecting which displaySets hit the viewports.
|
// TODO -> Need some way of selecting which displaySets hit the viewports.
|
||||||
const { DisplaySetService } = servicesManager.services;
|
const { DisplaySetService } = servicesManager.services;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const { unsubscribe } = DisplaySetService.subscribe(
|
||||||
|
DisplaySetService.EVENTS.DISPLAY_SETS_CHANGED,
|
||||||
|
displaySets => {
|
||||||
|
displaySets.sort((a, b) => {
|
||||||
|
const isImageSet = x => x instanceof ImageSet;
|
||||||
|
return (isImageSet(a) === isImageSet(b)) ? 0 : isImageSet(a) ? -1 : 1;
|
||||||
|
});
|
||||||
|
dispatch({
|
||||||
|
type: 'SET_DISPLAYSET_FOR_VIEWPORT',
|
||||||
|
payload: {
|
||||||
|
viewportIndex: 0,
|
||||||
|
displaySetInstanceUID: displaySets[0].displaySetInstanceUID,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
unsubscribe();
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
// TODO -> Make a HangingProtocolService
|
// TODO -> Make a HangingProtocolService
|
||||||
const HangingProtocolService = displaySets => {
|
const HangingProtocolService = displaySets => {
|
||||||
let displaySetInstanceUID;
|
let displaySetInstanceUID;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user