diff --git a/extensions/cornerstone-dicom-seg/package.json b/extensions/cornerstone-dicom-seg/package.json index 6c751e139..d6267e325 100644 --- a/extensions/cornerstone-dicom-seg/package.json +++ b/extensions/cornerstone-dicom-seg/package.json @@ -46,8 +46,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^1.70.10", - "@cornerstonejs/core": "^1.70.10", + "@cornerstonejs/adapters": "^1.70.12", + "@cornerstonejs/core": "^1.70.12", "@kitware/vtk.js": "30.3.3", "react-color": "^2.19.3" } diff --git a/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx b/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx index e640ca309..ba10362fa 100644 --- a/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx +++ b/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx @@ -107,7 +107,9 @@ export default function PanelSegmentation({ }; const onSegmentationAdd = async () => { - commandsManager.runCommand('createEmptySegmentationForViewport'); + commandsManager.runCommand('createEmptySegmentationForViewport', { + viewportId: viewportGridService.getActiveViewportId(), + }); }; const onSegmentationClick = (segmentationId: string) => { diff --git a/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx b/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx index 894a4c407..b4e0f4528 100644 --- a/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx +++ b/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx @@ -25,7 +25,6 @@ function OHIFCornerstoneSEGViewport(props) { displaySetService, toolGroupService, segmentationService, - uiNotificationService, customizationService, viewportActionCornersService, } = servicesManager.services; diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index e1c2674d0..1a27b01a1 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -46,9 +46,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^1.70.10", - "@cornerstonejs/core": "^1.70.10", - "@cornerstonejs/tools": "^1.70.10", + "@cornerstonejs/adapters": "^1.70.12", + "@cornerstonejs/core": "^1.70.12", + "@cornerstonejs/tools": "^1.70.12", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index 7dd06a1ad..243cfe345 100644 --- a/extensions/cornerstone-dynamic-volume/package.json +++ b/extensions/cornerstone-dynamic-volume/package.json @@ -42,9 +42,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/core": "^1.70.10", - "@cornerstonejs/streaming-image-volume-loader": "^1.70.10", - "@cornerstonejs/tools": "^1.70.10", + "@cornerstonejs/core": "^1.70.12", + "@cornerstonejs/streaming-image-volume-loader": "^1.70.12", + "@cornerstonejs/tools": "^1.70.12", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index cb87fe45b..ec2a6258c 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -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.10", + "@cornerstonejs/dicom-image-loader": "^1.70.12", "@icr/polyseg-wasm": "^0.4.0", "@ohif/core": "3.8.0-beta.88", "@ohif/ui": "3.8.0-beta.88", @@ -55,10 +55,10 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^1.70.10", - "@cornerstonejs/core": "^1.70.10", - "@cornerstonejs/streaming-image-volume-loader": "^1.70.10", - "@cornerstonejs/tools": "^1.70.10", + "@cornerstonejs/adapters": "^1.70.12", + "@cornerstonejs/core": "^1.70.12", + "@cornerstonejs/streaming-image-volume-loader": "^1.70.12", + "@cornerstonejs/tools": "^1.70.12", "@icr/polyseg-wasm": "^0.4.0", "@kitware/vtk.js": "30.3.3", "html2canvas": "^1.4.1", diff --git a/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx b/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx index 50dfd8c49..cd0734ecc 100644 --- a/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx +++ b/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx @@ -132,7 +132,7 @@ const OHIFCornerstoneViewport = React.memo(props => { // Since we only have support for dynamic data in volume viewports, we should // handle this case here and set the viewportType to volume if any of the // displaySets are dynamic volumes - viewportOptions.viewportType = displaySets.some(ds => ds.isDynamicVolume) + viewportOptions.viewportType = displaySets.some(ds => ds.isDynamicVolume && ds.isReconstructable) ? 'volume' : viewportOptions.viewportType; diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 8302e8d35..c3ea63cac 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,8 +32,8 @@ "start": "yarn run dev" }, "peerDependencies": { - "@cornerstonejs/core": "^1.70.10", - "@cornerstonejs/tools": "^1.70.10", + "@cornerstonejs/core": "^1.70.12", + "@cornerstonejs/tools": "^1.70.12", "@ohif/core": "3.8.0-beta.88", "@ohif/extension-cornerstone-dicom-sr": "3.8.0-beta.88", "@ohif/ui": "3.8.0-beta.88", diff --git a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdExport.tsx b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdExport.tsx index bcbe0a4a7..a16eaa812 100644 --- a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdExport.tsx +++ b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdExport.tsx @@ -76,7 +76,7 @@ export default function PanelRoiThresholdSegmentation({ servicesManager, command } }; - eventTarget.addEventListenerDebounced(Enums.Events.SEGMENTATION_DATA_MODIFIED, callback, 300); + eventTarget.addEventListenerDebounced(Enums.Events.SEGMENTATION_DATA_MODIFIED, callback, 250); return () => { eventTarget.removeEventListenerDebounced(Enums.Events.SEGMENTATION_DATA_MODIFIED, callback); diff --git a/extensions/tmtv/src/commandsModule.js b/extensions/tmtv/src/commandsModule.js index dfca7569f..d948f46a9 100644 --- a/extensions/tmtv/src/commandsModule.js +++ b/extensions/tmtv/src/commandsModule.js @@ -316,10 +316,28 @@ const commandsModule = ({ servicesManager, commandsManager, extensionManager }) metadata: referencedVolume.metadata, }; + // metadata in annotations has enabledElement which is not serializable + // we need to remove it + // Todo: we should probably have a sanitization function for this + const annotationsToSend = annotations.map(annotation => { + return { + ...annotation, + metadata: { + ...annotation.metadata, + enabledElement: { + ...annotation.metadata.enabledElement, + viewport: null, + renderingEngine: null, + element: null, + }, + }, + }; + }); + const suvPeak = await workerManager.executeTask('suv-peak-worker', 'calculateSuvPeak', { labelmapProps, referenceVolumeProps, - annotations, + annotations: annotationsToSend, segmentIndex, }); diff --git a/platform/app/package.json b/platform/app/package.json index 0838c0d10..03c150984 100644 --- a/platform/app/package.json +++ b/platform/app/package.json @@ -54,7 +54,7 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^1.70.10", + "@cornerstonejs/dicom-image-loader": "^1.70.12", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.8.0-beta.88", "@ohif/extension-cornerstone": "3.8.0-beta.88", diff --git a/platform/app/src/routes/WorkList/WorkList.tsx b/platform/app/src/routes/WorkList/WorkList.tsx index 225bf71c8..171ed7994 100644 --- a/platform/app/src/routes/WorkList/WorkList.tsx +++ b/platform/app/src/routes/WorkList/WorkList.tsx @@ -15,7 +15,6 @@ import { utils, hotkeys, ServicesManager } from '@ohif/core'; import { Icon, StudyListExpandedRow, - LegacyButton, EmptyStudies, StudyListTable, StudyListPagination, @@ -526,7 +525,7 @@ function WorkList({ customizationService.get('ohif.dataSourceConfigurationComponent') ?? {}; return ( -
+
-
+
100 ? 101 : numOfStudies} filtersMeta={filtersMeta} diff --git a/platform/core/package.json b/platform/core/package.json index bcf571d75..95e4ec491 100644 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -37,7 +37,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.10", + "@cornerstonejs/dicom-image-loader": "^1.70.12", "@ohif/ui": "3.8.0-beta.88", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/platform/ui/src/contextProviders/ViewportGridProvider.tsx b/platform/ui/src/contextProviders/ViewportGridProvider.tsx index a186b8a29..d82004c6d 100644 --- a/platform/ui/src/contextProviders/ViewportGridProvider.tsx +++ b/platform/ui/src/contextProviders/ViewportGridProvider.tsx @@ -182,8 +182,10 @@ export function ViewportGridProvider({ children, service }) { // if it is not part of the hanging protocol layout, we should remove the toolGroupId // and viewportType from the viewportOptions so that it doesn't - // inherit the hanging protocol layout options - if (!state.isHangingProtocolLayout) { + // inherit the hanging protocol layout options, only when + // the viewport options is not provided (e.g., when drag and drop) + // otherwise, programmatically set options should be preserved + if (!updatedViewport.viewportOptions && !state.isHangingProtocolLayout) { viewportOptions = { viewportId: viewportOptions.viewportId, }; diff --git a/yarn.lock b/yarn.lock index e42d9336f..faa8436ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1497,13 +1497,13 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cornerstonejs/adapters@^1.70.10": - version "1.70.10" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-1.70.10.tgz#5b8113a6a7c0d8677d72d97761530e3e7f91e118" - integrity sha512-OTYDg64SjrmCGEt1VDM27iaUOXi+v7WZaoJI5CfwXOA3cHG9AAv8lRaCtvUhIMKXce7HZuYdgKh/zizvrnVPow== +"@cornerstonejs/adapters@^1.70.12": + version "1.70.12" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-1.70.12.tgz#6556cb511840a6d10cc8eabbf7c408a5e07f3d33" + integrity sha512-XeBCpgW8S7WgTbFqq5oH3S4P5reVD9hXF10yPnEVpSdXygEFuFz4CG00RgVUEt7OT2gBNS18AZSLUqpZajmvlA== dependencies: "@babel/runtime-corejs2" "^7.17.8" - "@cornerstonejs/tools" "^1.70.10" + "@cornerstonejs/tools" "^1.70.12" buffer "^6.0.3" dcmjs "^0.29.8" gl-matrix "^3.4.3" @@ -1550,10 +1550,10 @@ resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.5.tgz#8690b61a86fa53ef38a70eee9d665a79229517c0" integrity sha512-MZCUy8VG0VG5Nl1l58+g+kH3LujAzLYTfJqkwpWI2gjSrGXnP6lgwyy4GmPRZWVoS40/B1LDNALK905cNWm+sg== -"@cornerstonejs/core@^1.70.10": - version "1.70.10" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-1.70.10.tgz#8485ad15cd07e784a07892c2d2246bc6e2d5d5fe" - integrity sha512-c9wkgDGKpGt0VEdILLAIn5ZRTqoofsGrWAzj+8h0zogdVY9yQ1PIP2WW7xEbuUcJ/m1RFpapiwqMFU6UEXNNBA== +"@cornerstonejs/core@^1.70.12": + version "1.70.12" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-1.70.12.tgz#51bbb966603439bec84aced69a664d04b13f7071" + integrity sha512-rGnmpEuLUruc9TcHpFBlEuCJPxufb0r9I5wbhh4VUhSUcyVgRA5gyImuny2pt8W4yhN3DCLE9LpNX9dah1/O0A== dependencies: "@kitware/vtk.js" "30.3.3" comlink "^4.4.1" @@ -1561,34 +1561,34 @@ gl-matrix "^3.4.3" lodash.clonedeep "4.5.0" -"@cornerstonejs/dicom-image-loader@^1.70.10": - version "1.70.10" - resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-1.70.10.tgz#29de339e969e370b07fbb229724094b924cf5469" - integrity sha512-4/J4xU3C1Qk8KAQaQdF0duaehfGFX5z47ucU3rXqvN44+qHZrK/iPeGVORhJmErlB9qTY++K8uAZbqo/E65Aiw== +"@cornerstonejs/dicom-image-loader@^1.70.12": + version "1.70.12" + resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-1.70.12.tgz#376b2ac1d6e36f1aaf2e2acd0f90f3b5d1a510b3" + integrity sha512-OBcP+QqhBHim9LsPrhBg9w5SkkY88YYgnI1elw2PzOu2thMm7Em2CgHDf0VlrNEvStovkvaqFdo6sawP3QD5HA== dependencies: "@cornerstonejs/codec-charls" "^1.2.3" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" "@cornerstonejs/codec-openjpeg" "^1.2.2" "@cornerstonejs/codec-openjph" "^2.4.5" - "@cornerstonejs/core" "^1.70.10" + "@cornerstonejs/core" "^1.70.12" dicom-parser "^1.8.9" pako "^2.0.4" uuid "^9.0.0" -"@cornerstonejs/streaming-image-volume-loader@^1.70.10": - version "1.70.10" - resolved "https://registry.yarnpkg.com/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-1.70.10.tgz#e548e82b1014517efd686c294e161a15b66b6e1e" - integrity sha512-Rg7v0WDjGNjV+DPXLj1LLSXV/6kBq+RxRBxLVfKnA3onEFRuPxqnMUYY9uxG7Edr5RLaGlnBCr4V4tvFzzYYmA== +"@cornerstonejs/streaming-image-volume-loader@^1.70.12": + version "1.70.12" + resolved "https://registry.yarnpkg.com/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-1.70.12.tgz#f3ca840ec003db4fd7b336568627a39c5462244c" + integrity sha512-U6lUOfUduZKl2VeAikcAw5sDUrZoWiCCS4c4dI67lPZLdIREdbJYHf+cG8EovsaN0nvm1gGvYfD5R47TojQUyw== dependencies: - "@cornerstonejs/core" "^1.70.10" + "@cornerstonejs/core" "^1.70.12" comlink "^4.4.1" -"@cornerstonejs/tools@^1.70.10": - version "1.70.10" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-1.70.10.tgz#9b24b17dfb5ba48556df7643bee01f79b6378672" - integrity sha512-GmwhfB/DzEc86cur2pHvlLp/FCvhG7WlNe0dJWLNRPA/fgPt+BPVBwrMf4a6934r4N7WCzwOJjcnUpiwDjT+MQ== +"@cornerstonejs/tools@^1.70.12": + version "1.70.12" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-1.70.12.tgz#6f1c7c82bf5b84f10588222564d270ffb2cfca7a" + integrity sha512-UKWoA/dLvhH5F1KnR/dZ454OL6m8npubGYse0f6BEfushqvN+INNKgj9zwPLXvfgyibwaz1SC6iIduUvIQMudg== dependencies: - "@cornerstonejs/core" "^1.70.10" + "@cornerstonejs/core" "^1.70.12" "@icr/polyseg-wasm" "0.4.0" "@types/offscreencanvas" "2019.7.3" comlink "^4.4.1"