fix(layouts): and fix thumbnail in touch and update migration guide for 3.8 release (#4052)
This commit is contained in:
1 parent
28bc8914a8
commit
d250d04580
30 files changed
+209
-158
No files matched your search
@@ -46,8 +46,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.13",
|
||||
"@cornerstonejs/adapters": "^1.70.8",
|
||||
"@cornerstonejs/core": "^1.70.8",
|
||||
"@cornerstonejs/adapters": "^1.70.9",
|
||||
"@cornerstonejs/core": "^1.70.9",
|
||||
"@kitware/vtk.js": "30.3.3",
|
||||
"react-color": "^2.19.3"
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ function getUpdatedViewportsForSegmentation({
|
||||
const { hangingProtocolService, displaySetService, segmentationService, viewportGridService } =
|
||||
servicesManager.services;
|
||||
|
||||
const { viewports } = viewportGridService.getState();
|
||||
const { viewports, isHangingProtocolLayout } = viewportGridService.getState();
|
||||
|
||||
const viewport = getTargetViewport({ viewportId, viewportGridService });
|
||||
const targetViewportId = viewport.viewportOptions.viewportId;
|
||||
@@ -153,7 +153,8 @@ function getUpdatedViewportsForSegmentation({
|
||||
|
||||
const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
||||
targetViewportId,
|
||||
referenceDisplaySetInstanceUID
|
||||
referenceDisplaySetInstanceUID,
|
||||
isHangingProtocolLayout
|
||||
);
|
||||
|
||||
viewports.forEach((viewport, viewportId) => {
|
||||
|
||||
@@ -46,9 +46,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.13",
|
||||
"@cornerstonejs/adapters": "^1.70.8",
|
||||
"@cornerstonejs/core": "^1.70.8",
|
||||
"@cornerstonejs/tools": "^1.70.8",
|
||||
"@cornerstonejs/adapters": "^1.70.9",
|
||||
"@cornerstonejs/core": "^1.70.9",
|
||||
"@cornerstonejs/tools": "^1.70.9",
|
||||
"classnames": "^2.3.2"
|
||||
}
|
||||
}
|
||||
@@ -42,9 +42,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.13",
|
||||
"@cornerstonejs/core": "^1.70.8",
|
||||
"@cornerstonejs/streaming-image-volume-loader": "^1.70.8",
|
||||
"@cornerstonejs/tools": "^1.70.8",
|
||||
"@cornerstonejs/core": "^1.70.9",
|
||||
"@cornerstonejs/streaming-image-volume-loader": "^1.70.9",
|
||||
"@cornerstonejs/tools": "^1.70.9",
|
||||
"classnames": "^2.3.2"
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,7 @@
|
||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
|
||||
"@cornerstonejs/codec-openjpeg": "^1.2.2",
|
||||
"@cornerstonejs/codec-openjph": "^2.4.2",
|
||||
"@cornerstonejs/dicom-image-loader": "^1.70.8",
|
||||
"@cornerstonejs/dicom-image-loader": "^1.70.9",
|
||||
"@icr/polyseg-wasm": "^0.4.0",
|
||||
"@ohif/core": "3.8.0-beta.85",
|
||||
"@ohif/ui": "3.8.0-beta.85",
|
||||
@@ -55,10 +55,10 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.13",
|
||||
"@cornerstonejs/adapters": "^1.70.8",
|
||||
"@cornerstonejs/core": "^1.70.8",
|
||||
"@cornerstonejs/streaming-image-volume-loader": "^1.70.8",
|
||||
"@cornerstonejs/tools": "^1.70.8",
|
||||
"@cornerstonejs/adapters": "^1.70.9",
|
||||
"@cornerstonejs/core": "^1.70.9",
|
||||
"@cornerstonejs/streaming-image-volume-loader": "^1.70.9",
|
||||
"@cornerstonejs/tools": "^1.70.9",
|
||||
"@icr/polyseg-wasm": "^0.4.0",
|
||||
"@kitware/vtk.js": "30.3.3",
|
||||
"html2canvas": "^1.4.1",
|
||||
|
||||
@@ -14,17 +14,7 @@ export const mpr: Types.HangingProtocol.Protocol = {
|
||||
numberOfPriorsReferenced: 0,
|
||||
protocolMatchingRules: [],
|
||||
imageLoadStrategy: 'nth',
|
||||
callbacks: {
|
||||
// Switches out of MPR mode when the layout change button is used
|
||||
onLayoutChange: [
|
||||
{
|
||||
commandName: 'toggleHangingProtocol',
|
||||
commandOptions: { protocolId: 'mpr' },
|
||||
context: 'DEFAULT',
|
||||
},
|
||||
],
|
||||
// Turns off crosshairs when switching out of MPR mode
|
||||
},
|
||||
callbacks: {},
|
||||
displaySetSelectors: {
|
||||
activeDisplaySet: {
|
||||
seriesMatchingRules: [
|
||||
|
||||
@@ -44,6 +44,7 @@ import ImageOverlayViewerTool from './tools/ImageOverlayViewerTool';
|
||||
export default function initCornerstoneTools(configuration = {}) {
|
||||
CrosshairsTool.isAnnotation = false;
|
||||
ReferenceLinesTool.isAnnotation = false;
|
||||
AdvancedMagnifyTool.isAnnotation = false;
|
||||
|
||||
init(configuration);
|
||||
addTool(PanTool);
|
||||
|
||||
@@ -25,7 +25,8 @@ function PanelStudyBrowser({
|
||||
// doesn't have to have such an intense shape. This works well enough for now.
|
||||
// Tabs --> Studies --> DisplaySets --> Thumbnails
|
||||
const { StudyInstanceUIDs } = useImageViewer();
|
||||
const [{ activeViewportId, viewports }, viewportGridService] = useViewportGrid();
|
||||
const [{ activeViewportId, viewports, isHangingProtocolLayout }, viewportGridService] =
|
||||
useViewportGrid();
|
||||
const [activeTabName, setActiveTabName] = useState('primary');
|
||||
const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = useState([
|
||||
...StudyInstanceUIDs,
|
||||
@@ -40,7 +41,8 @@ function PanelStudyBrowser({
|
||||
try {
|
||||
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
||||
viewportId,
|
||||
displaySetInstanceUID
|
||||
displaySetInstanceUID,
|
||||
isHangingProtocolLayout
|
||||
);
|
||||
} catch (error) {
|
||||
console.warn(error);
|
||||
|
||||
@@ -58,6 +58,10 @@ const generateAdvancedPresets = ({ servicesManager }) => {
|
||||
}
|
||||
const displaySetInsaneUIDs = viewportGridService.getDisplaySetsUIDsForViewport(viewportId);
|
||||
|
||||
if (!displaySetInsaneUIDs) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const displaySets = displaySetInsaneUIDs.map(uid => displaySetService.getDisplaySetByUID(uid));
|
||||
|
||||
return hangingProtocols
|
||||
|
||||
@@ -286,6 +286,7 @@ const commandsModule = ({
|
||||
const findOrCreateViewport = layoutFindOrCreate.bind(
|
||||
null,
|
||||
hangingProtocolService,
|
||||
isHangingProtocolLayout,
|
||||
stateReduce.viewportsByPosition
|
||||
);
|
||||
|
||||
@@ -303,7 +304,7 @@ const commandsModule = ({
|
||||
|
||||
toggleOneUp() {
|
||||
const viewportGridState = viewportGridService.getState();
|
||||
const { activeViewportId, viewports, layout } = viewportGridState;
|
||||
const { activeViewportId, viewports, layout, isHangingProtocolLayout } = viewportGridState;
|
||||
const { displaySetInstanceUIDs, displaySetOptions, viewportOptions } =
|
||||
viewports.get(activeViewportId);
|
||||
|
||||
@@ -330,7 +331,8 @@ const commandsModule = ({
|
||||
.map(displaySetInstanceUID =>
|
||||
hangingProtocolService.getViewportsRequireUpdate(
|
||||
viewportIdToUpdate,
|
||||
displaySetInstanceUID
|
||||
displaySetInstanceUID,
|
||||
isHangingProtocolLayout
|
||||
)
|
||||
)
|
||||
.flat();
|
||||
@@ -511,7 +513,8 @@ const commandsModule = ({
|
||||
|
||||
currentDisplaySets.sort(dsSortFn);
|
||||
|
||||
const { activeViewportId, viewports } = viewportGridService.getState();
|
||||
const { activeViewportId, viewports, isHangingProtocolLayout } =
|
||||
viewportGridService.getState();
|
||||
|
||||
const { displaySetInstanceUIDs } = viewports.get(activeViewportId);
|
||||
|
||||
@@ -545,7 +548,8 @@ const commandsModule = ({
|
||||
try {
|
||||
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
||||
activeViewportId,
|
||||
displaySetInstanceUID
|
||||
displaySetInstanceUID,
|
||||
isHangingProtocolLayout
|
||||
);
|
||||
} catch (error) {
|
||||
console.warn(error);
|
||||
|
||||
@@ -16,6 +16,7 @@ import { StateSyncService } from '@ohif/core';
|
||||
*/
|
||||
export const findOrCreateViewport = (
|
||||
hangingProtocolService,
|
||||
isHangingProtocolLayout,
|
||||
viewportsByPosition,
|
||||
position: number,
|
||||
positionId: string,
|
||||
@@ -31,8 +32,13 @@ export const findOrCreateViewport = (
|
||||
if (!options.inDisplay) {
|
||||
options.inDisplay = [...viewportsByPosition.initialInDisplay];
|
||||
}
|
||||
// See if there is a default viewport for new views.
|
||||
const missing = hangingProtocolService.getMissingViewport(protocolId, stageIndex, options);
|
||||
|
||||
// See if there is a default viewport for new views
|
||||
const missing = hangingProtocolService.getMissingViewport(
|
||||
isHangingProtocolLayout ? protocolId : 'default',
|
||||
stageIndex,
|
||||
options
|
||||
);
|
||||
if (missing) {
|
||||
const displaySetInstanceUIDs = missing.displaySetsInfo.map(it => it.displaySetInstanceUID);
|
||||
options.inDisplay.push(...displaySetInstanceUIDs);
|
||||
|
||||
@@ -37,6 +37,8 @@ function getDisplaySetInfo(instances) {
|
||||
const { isDynamicVolume, timePoints } = dynamicVolumeInfo;
|
||||
let displaySetInfo;
|
||||
|
||||
const { appConfig } = appContext;
|
||||
|
||||
if (isDynamicVolume) {
|
||||
const timePoint = timePoints[0];
|
||||
const instancesMap = new Map();
|
||||
@@ -46,9 +48,9 @@ function getDisplaySetInfo(instances) {
|
||||
|
||||
const firstTimePointInstances = timePoint.map(imageId => instancesMap.get(imageId));
|
||||
|
||||
displaySetInfo = isDisplaySetReconstructable(firstTimePointInstances);
|
||||
displaySetInfo = isDisplaySetReconstructable(firstTimePointInstances, appConfig);
|
||||
} else {
|
||||
displaySetInfo = isDisplaySetReconstructable(instances);
|
||||
displaySetInfo = isDisplaySetReconstructable(instances, appConfig);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
"start": "yarn run dev"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@cornerstonejs/core": "^1.70.8",
|
||||
"@cornerstonejs/tools": "^1.70.8",
|
||||
"@cornerstonejs/core": "^1.70.9",
|
||||
"@cornerstonejs/tools": "^1.70.9",
|
||||
"@ohif/core": "3.8.0-beta.85",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.8.0-beta.85",
|
||||
"@ohif/ui": "3.8.0-beta.85",
|
||||
|
||||
+4
-2
@@ -34,7 +34,8 @@ function PanelStudyBrowserTracking({
|
||||
// doesn't have to have such an intense shape. This works well enough for now.
|
||||
// Tabs --> Studies --> DisplaySets --> Thumbnails
|
||||
const { StudyInstanceUIDs } = useImageViewer();
|
||||
const [{ activeViewportId, viewports }, viewportGridService] = useViewportGrid();
|
||||
const [{ activeViewportId, viewports, isHangingProtocolLayout }, viewportGridService] =
|
||||
useViewportGrid();
|
||||
const [trackedMeasurements, sendTrackedMeasurementsEvent] = useTrackedMeasurements();
|
||||
const [activeTabName, setActiveTabName] = useState('primary');
|
||||
const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = useState([
|
||||
@@ -51,7 +52,8 @@ function PanelStudyBrowserTracking({
|
||||
try {
|
||||
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
||||
viewportId,
|
||||
displaySetInstanceUID
|
||||
displaySetInstanceUID,
|
||||
isHangingProtocolLayout
|
||||
);
|
||||
} catch (error) {
|
||||
console.warn(error);
|
||||
|
||||
Reference in new issue
Block a user