fix(layouts): and fix thumbnail in touch and update migration guide for 3.8 release (#4052)

This commit is contained in:
Alireza authored and GitHub committed 2024-04-18 23:21:02 -04:00
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) => {
+3 -3
View File
@@ -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"
}
}
+5 -5
View File
@@ -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",
+1 -11
View File
@@ -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
+8 -4
View File
@@ -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 {
+2 -2
View File
@@ -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",
@@ -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);