Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 21 commits into from
Apr 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
9db1f53
Fix styling issue in DynamicDataPanel and remove unused code in tmtv …
sedghi Apr 16, 2024
cd26e15
Add support for displaySetFromUrl in defaultRouteInit.ts
sedghi Apr 16, 2024
295db4f
Add support for dynamic threshold brush in segmentationButtons.ts
sedghi Apr 16, 2024
ff02729
Refactor measurement display string formatting in CircleROI, Rectangl…
sedghi Apr 17, 2024
3e19edb
Fix reuseDisplaySetUID logic in HangingProtocolService.ts
sedghi Apr 17, 2024
fe30d13
Add support for dynamic threshold brush shape in segmentationButtons.ts
sedghi Apr 17, 2024
eb6b1ee
Refactor measurement display string formatting in CircleROI, Rectangl…
sedghi Apr 17, 2024
928d946
Merge branch 'master' of github.com:OHIF/Viewers into 3p8-rc1-again
sedghi Apr 17, 2024
018bcd2
Merge branch 'master' of github.com:OHIF/Viewers into 3p8-rc1-again
sedghi Apr 18, 2024
f089ed3
Refactor toolbar event registration in cornerstone extension
sedghi Apr 18, 2024
fa72c6b
Merge branch 'master' of github.com:OHIF/Viewers into 3p8-rc1-again
sedghi Apr 18, 2024
05fe99e
Add max3DTextureSize to appConfigState in App.tsx and pass appConfig …
sedghi Apr 18, 2024
7934571
Refactor toolbar event registration in cornerstone extension
sedghi Apr 18, 2024
3a62b67
Refactor Thumbnail component styles and remove unused margin style
sedghi Apr 18, 2024
1558b72
Refactor Thumbnail and ThumbnailNoImage components to handle double t…
sedghi Apr 18, 2024
c39c15c
Update button labels and tooltips for zoom-in and magnify probe tools
sedghi Apr 18, 2024
63efeaf
Update migration guide for OHIF Viewer 3.8 release
sedghi Apr 18, 2024
7695779
Add AdvancedMagnifyTool to initCornerstoneTools.js
sedghi Apr 18, 2024
7418128
cs3d upgrade
sedghi Apr 18, 2024
381794a
Merge branch 'master' of github.com:OHIF/Viewers into 3p8-rc1-again
sedghi Apr 18, 2024
4542fd6
Fix hanging protocol toggle registration in init.ts
sedghi Apr 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions extensions/cornerstone-dicom-seg/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
Expand Down
5 changes: 3 additions & 2 deletions extensions/cornerstone-dicom-seg/src/utils/hydrationUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -153,7 +153,8 @@ function getUpdatedViewportsForSegmentation({

const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
targetViewportId,
referenceDisplaySetInstanceUID
referenceDisplaySetInstanceUID,
isHangingProtocolLayout
);

viewports.forEach((viewport, viewportId) => {
Expand Down
6 changes: 3 additions & 3 deletions extensions/cornerstone-dicom-sr/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
6 changes: 3 additions & 3 deletions extensions/cornerstone-dynamic-volume/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
10 changes: 5 additions & 5 deletions extensions/cornerstone/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down
12 changes: 1 addition & 11 deletions extensions/cornerstone/src/hps/mpr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: [
Expand Down
1 change: 1 addition & 0 deletions extensions/cornerstone/src/initCornerstoneTools.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 4 additions & 2 deletions extensions/default/src/Panels/PanelStudyBrowser.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -40,7 +41,8 @@ function PanelStudyBrowser({
try {
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
viewportId,
displaySetInstanceUID
displaySetInstanceUID,
isHangingProtocolLayout
);
} catch (error) {
console.warn(error);
Expand Down
4 changes: 4 additions & 0 deletions extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 8 additions & 4 deletions extensions/default/src/commandsModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ const commandsModule = ({
const findOrCreateViewport = layoutFindOrCreate.bind(
null,
hangingProtocolService,
isHangingProtocolLayout,
stateReduce.viewportsByPosition
);

Expand All @@ -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);

Expand All @@ -330,7 +331,8 @@ const commandsModule = ({
.map(displaySetInstanceUID =>
hangingProtocolService.getViewportsRequireUpdate(
viewportIdToUpdate,
displaySetInstanceUID
displaySetInstanceUID,
isHangingProtocolLayout
)
)
.flat();
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -545,7 +548,8 @@ const commandsModule = ({
try {
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
activeViewportId,
displaySetInstanceUID
displaySetInstanceUID,
isHangingProtocolLayout
);
} catch (error) {
console.warn(error);
Expand Down
10 changes: 8 additions & 2 deletions extensions/default/src/findViewportsByPosition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { StateSyncService } from '@ohif/core';
*/
export const findOrCreateViewport = (
hangingProtocolService,
isHangingProtocolLayout,
viewportsByPosition,
position: number,
positionId: string,
Expand All @@ -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);
Expand Down
6 changes: 4 additions & 2 deletions extensions/default/src/getSopClassHandlerModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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 {
Expand Down
4 changes: 2 additions & 2 deletions extensions/measurement-tracking/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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([
Expand All @@ -51,7 +52,8 @@ function PanelStudyBrowserTracking({
try {
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
viewportId,
displaySetInstanceUID
displaySetInstanceUID,
isHangingProtocolLayout
);
} catch (error) {
console.warn(error);
Expand Down
8 changes: 4 additions & 4 deletions modes/basic-test-mode/src/moreTools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ const moreTools = [
createButton({
id: 'Magnify',
icon: 'tool-magnify',
label: 'Magnify',
tooltip: 'Magnify',
label: 'Zoom-in',
tooltip: 'Zoom-in',
commands: setToolActiveToolbar,
evaluate: 'evaluate.cornerstoneTool',
}),
Expand Down Expand Up @@ -169,8 +169,8 @@ const moreTools = [
createButton({
id: 'AdvancedMagnify',
icon: 'icon-tool-loupe',
label: 'Loupe',
tooltip: 'Loupe',
label: 'Magnify Probe',
tooltip: 'Magnify Probe',
commands: 'toggleActiveDisabledToolbar',
evaluate: 'evaluate.cornerstoneTool.toggle.ifStrictlyDisabled',
}),
Expand Down
8 changes: 4 additions & 4 deletions modes/longitudinal/src/moreTools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ const moreTools = [
createButton({
id: 'Magnify',
icon: 'tool-magnify',
label: 'Magnify',
tooltip: 'Magnify',
label: 'Zoom-in',
tooltip: 'Zoom-in',
commands: setToolActiveToolbar,
evaluate: 'evaluate.cornerstoneTool',
}),
Expand All @@ -161,8 +161,8 @@ const moreTools = [
createButton({
id: 'AdvancedMagnify',
icon: 'icon-tool-loupe',
label: 'Loupe',
tooltip: 'Loupe',
label: 'Magnify Probe',
tooltip: 'Magnify Probe',
commands: 'toggleActiveDisabledToolbar',
evaluate: 'evaluate.cornerstoneTool.toggle.ifStrictlyDisabled',
}),
Expand Down
8 changes: 4 additions & 4 deletions modes/segmentation/src/toolbarButtons.ts
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,8 @@ const toolbarButtons: Button[] = [
createButton({
id: 'Magnify',
icon: 'tool-magnify',
label: 'Magnify',
tooltip: 'Magnify',
label: 'Zoom-in',
tooltip: 'Zoom-in',
commands: setToolActiveToolbar,
evaluate: 'evaluate.cornerstoneTool',
}),
Expand Down Expand Up @@ -238,8 +238,8 @@ const toolbarButtons: Button[] = [
createButton({
id: 'AdvancedMagnify',
icon: 'icon-tool-loupe',
label: 'Loupe',
tooltip: 'Loupe',
label: 'Magnify Probe',
tooltip: 'Magnify Probe',
commands: 'toggleActiveDisabledToolbar',
evaluate: 'evaluate.cornerstoneTool.toggle.ifStrictlyDisabled',
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ describe('OHIF Study List', function () {
'[data-cy="mode-basic-test-1.3.6.1.4.1.25403.345050719074.3824.20170125113417.1"]'
).click();
cy.get('[data-cy="return-to-work-list"]').click();
cy.wait(2000);

cy.get('@searchResult2').should($list => {
expect($list.length).to.be.eq(1);
expect($list).to.contain('Juno');
Expand All @@ -72,6 +74,8 @@ describe('OHIF Study List', function () {
'[data-cy="mode-basic-test-1.3.6.1.4.1.25403.345050719074.3824.20170125113417.1"]'
).click();
cy.get('[data-cy="return-to-work-list"]').click();
cy.wait(2000);

cy.get('@searchResult2').should($list => {
expect($list.length).to.be.eq(1);
expect($list).to.contain('0000003');
Expand All @@ -82,6 +86,7 @@ describe('OHIF Study List', function () {
cy.get('@AccessionNumber').type('321');
//Wait result list to be displayed
cy.waitStudyList();
cy.wait(2000);
cy.get('@searchResult2').should($list => {
expect($list.length).to.be.eq(1);
expect($list).to.contain('321');
Expand All @@ -92,11 +97,15 @@ describe('OHIF Study List', function () {
cy.get('@AccessionNumber').type('0000155811');
//Wait result list to be displayed
cy.waitStudyList();
cy.wait(2000);

cy.get('[data-cy="studyRow-1.3.6.1.4.1.25403.345050719074.3824.20170125113417.1"]').click();
cy.get(
'[data-cy="mode-basic-test-1.3.6.1.4.1.25403.345050719074.3824.20170125113417.1"]'
).click();
cy.get('[data-cy="return-to-work-list"]').click();
cy.wait(2000);

cy.get('@searchResult2').should($list => {
expect($list.length).to.be.eq(1);
expect($list).to.contain('0000155811');
Expand All @@ -107,6 +116,8 @@ describe('OHIF Study List', function () {
cy.get('@StudyDescription').type('PETCT');
//Wait result list to be displayed
cy.waitStudyList();
cy.wait(2000);

cy.get('@searchResult2').should($list => {
expect($list.length).to.be.eq(1);
expect($list).to.contain('PETCT');
Expand All @@ -117,13 +128,15 @@ describe('OHIF Study List', function () {
cy.get('@StudyDescription').type('PETCT');
//Wait result list to be displayed
cy.waitStudyList();
cy.wait(2000);

cy.get('[data-cy="studyRow-1.3.6.1.4.1.25403.345050719074.3824.20170125113417.1"]').click();
cy.get(
'[data-cy="mode-basic-test-1.3.6.1.4.1.25403.345050719074.3824.20170125113417.1"]'
).click();
cy.get('[data-cy="return-to-work-list"]').click();
cy.wait(2000);

cy.wait(1000);
cy.get('@searchResult2').should($list => {
expect($list.length).to.be.eq(1);
expect($list).to.contain('PETCT');
Expand Down
Loading
Loading