fix: update DICOMSR and Measurement Panel copy to use L/W (#2174)

* fix: update DICOMSR and Measurement Panel copy to use L/W

* functional viewport

* support the active viewport for snapshot

* Support empty viewport case

* bump cs-tools to pick up misc. fixes
This commit is contained in:
Danny Brown 2020-11-18 00:14:52 -05:00 committed by GitHub
parent 0d9da69580
commit 2f4cba28a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 52 additions and 78 deletions

View File

@ -33,7 +33,7 @@
"@ohif/ui": "^0.50.0",
"cornerstone-core": "^2.3.0",
"cornerstone-math": "^0.1.8",
"cornerstone-tools": "4.20.1",
"cornerstone-tools": "5.1.2",
"cornerstone-wado-image-loader": "^3.1.2",
"dcmjs": "0.16.1",
"dicom-parser": "^1.8.3",

View File

@ -13,9 +13,10 @@ const DEFAULT_SIZE = 512;
const MAX_TEXTURE_SIZE = 10000;
const CornerstoneViewportDownloadForm = ({ onClose, activeViewportIndex }) => {
const { element: activeEnabledElement } = getEnabledElement(
const enabledElement = getEnabledElement(
activeViewportIndex
);
const activeEnabledElement = enabledElement?.element
const enableViewport = viewportElement => {
if (viewportElement) {
@ -116,6 +117,7 @@ const CornerstoneViewportDownloadForm = ({ onClose, activeViewportIndex }) => {
viewportElement.querySelector('canvas').toBlob(blob => {
const URLObj = window.URL || window.webkitURL;
const a = document.createElement('a');
a.href = URLObj.createObjectURL(blob);
a.download = file;
document.body.appendChild(a);

View File

@ -202,8 +202,9 @@ const commandsModule = ({ servicesManager, commandsManager }) => {
return enabledElement;
},
showDownloadViewportModal: () => {
const activeViewportIndex = 0; // viewports.activeViewportIndex;
const { activeViewportIndex } = ViewportGridService.getState();
const { UIModalService } = servicesManager.services;
if (UIModalService) {
UIModalService.show({
content: CornerstoneViewportDownloadForm,

View File

@ -30,7 +30,7 @@
"peerDependencies": {
"@ohif/core": "^0.50.0",
"cornerstone-core": "^2.2.8",
"cornerstone-tools": "4.20.1",
"cornerstone-tools": "5.1.2",
"dcmjs": "0.16.1",
"prop-types": "^15.6.2",
"react": "^16.8.6",

View File

@ -30,7 +30,7 @@
"peerDependencies": {
"@ohif/core": "^0.50.0",
"cornerstone-core": "^2.2.8",
"cornerstone-tools": "4.20.1",
"cornerstone-tools": "5.1.2",
"dcmjs": "0.16.1",
"prop-types": "^15.6.2",
"react": "^16.8.6",

View File

@ -33,7 +33,7 @@
"@ohif/ui": "^0.50.0",
"cornerstone-core": "^2.3.0",
"cornerstone-math": "^0.1.8",
"cornerstone-tools": "4.20.1",
"cornerstone-tools": "5.1.2",
"cornerstone-wado-image-loader": "^3.1.2",
"dcmjs": "0.16.1",
"dicom-parser": "^1.8.3",

View File

@ -28,7 +28,7 @@
},
"peerDependencies": {
"@ohif/core": "^0.50.0",
"cornerstone-tools": "4.20.1",
"cornerstone-tools": "5.1.2",
"dcmjs": "0.16.1",
"prop-types": "^15.6.2",
"react": "^16.13.1",

View File

@ -57,7 +57,7 @@
"@ohif/core": "^2.9.6",
"@ohif/ui": "^2.0.0",
"cornerstone-core": "^2.3.0",
"cornerstone-tools": "4.20.1",
"cornerstone-tools": "5.1.2",
"cornerstone-wado-image-loader": "^3.1.2",
"dicom-parser": "^1.8.3",
"gh-pages": "^2.0.1",

View File

@ -62,8 +62,7 @@ export default function mode({ modeConfiguration }) {
'Zoom',
'WindowLevel',
'Pan',
// TODO: OHIF-376, need more time to adress this reasonably
// 'Capture',
'Capture',
'Layout',
'MoreTools',
]);

View File

@ -146,17 +146,16 @@ export default [
commandOptions: { toolName: 'Pan' },
},
},
// TODO: OHIF-376, need more time to adress this reasonably
// {
// id: 'Capture',
// type: 'ohif.action',
// props: {
// icon: 'tool-capture',
// label: 'Capture',
// type: 'action',
// commandName: 'showDownloadViewportModal',
// },
// },
{
id: 'Capture',
type: 'ohif.action',
props: {
icon: 'tool-capture',
label: 'Capture',
type: 'action',
commandName: 'showDownloadViewportModal',
},
},
{
id: 'Layout',
type: 'ohif.layoutSelector',

View File

@ -31,7 +31,7 @@
},
"peerDependencies": {
"cornerstone-core": "^2.3.0",
"cornerstone-tools": "4.20.1",
"cornerstone-tools": "5.1.2",
"cornerstone-wado-image-loader": "^3.1.2",
"dicom-parser": "^1.8.3"
},

View File

@ -281,7 +281,7 @@ const ViewportDownloadForm = ({
<Input
data-cy="file-name"
value={filename}
onChange={value => setFilename(value)}
onChange={evt => setFilename(evt.target.value)}
label="File Name"
/>
{renderErrorHandler('filename')}
@ -296,7 +296,7 @@ const ViewportDownloadForm = ({
max={maximumSize}
label="Image width (px)"
value={dimensions.width}
onChange={value => onDimensionsChange(value, 'width')}
onChange={evt => onDimensionsChange(evt.target.value, 'width')}
data-cy="image-width"
/>
{renderErrorHandler('width')}
@ -308,7 +308,7 @@ const ViewportDownloadForm = ({
max={maximumSize}
label="Image height (px)"
value={dimensions.height}
onChange={value => onDimensionsChange(value, 'height')}
onChange={evt => onDimensionsChange(evt.target.value, 'height')}
data-cy="image-height"
/>
{renderErrorHandler('height')}
@ -371,44 +371,36 @@ const ViewportDownloadForm = ({
</div>
<div className="mt-8">
<div
className="hidden"
style={{
height: viewportElementDimensions.height,
width: viewportElementDimensions.width,
}}
ref={ref => setViewportElement(ref)}
>
<canvas
className={classnames('block', canvasClass)}
style={{
height: downloadCanvas.height,
width: downloadCanvas.width,
}}
width={downloadCanvas.width}
height={downloadCanvas.height}
ref={downloadCanvas.ref}
></canvas>
</div>
{viewportPreview.src ? (
<div
className="p-4 rounded bg-secondary-dark border-secondary-primary"
data-cy="image-preview"
>
<Typography variant="h5">Image preview</Typography>
<img
className="mt-4"
src={viewportPreview.src}
alt="Preview"
data-cy="image-preview"
/>
{activeViewport && (<div
className="mx-auto my-0"
style={{
height: viewportElementDimensions.height,
width: viewportElementDimensions.width,
}}
ref={ref => setViewportElement(ref)}
>
<canvas
className={classnames('block', canvasClass)}
style={{
height: downloadCanvas.height,
width: downloadCanvas.width,
}}
width={downloadCanvas.width}
height={downloadCanvas.height}
ref={downloadCanvas.ref}
></canvas>
</div>)}
{!activeViewport &&
<Typography className="mt-4">
Active viewport has no displayed image
</Typography>
}
</div>
) : (
<div className="p-8 text-center">
<Typography>Loading Image Preview...</Typography>
</div>
)}
</div>
<div className="flex justify-end mt-4">

View File

@ -68,7 +68,7 @@
"classnames": "^2.2.6",
"core-js": "^3.2.1",
"cornerstone-math": "^0.1.8",
"cornerstone-tools": "^4.22.0",
"cornerstone-tools": "5.1.2",
"cornerstone-wado-image-loader": "^3.1.2",
"dcmjs": "0.16.1",
"dicom-parser": "^1.8.3",

View File

@ -1787,27 +1787,13 @@
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
"@babel/runtime@7.1.2":
version "7.1.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3"
integrity sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==
dependencies:
regenerator-runtime "^0.12.0"
"@babel/runtime@7.7.6", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4":
"@babel/runtime@7.1.2", "@babel/runtime@7.7.6", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@^7.9.6":
version "7.7.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f"
integrity sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw==
dependencies:
regenerator-runtime "^0.13.2"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@^7.9.6":
version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/standalone@^7.10.2", "@babel/standalone@^7.4.5":
version "7.10.2"
resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.10.2.tgz#49dbbadcbc4b199df064d7d8b3e21c915b84abdb"
@ -20754,11 +20740,6 @@ regenerator-runtime@^0.11.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
regenerator-runtime@^0.12.0:
version "0.12.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4:
version "0.13.5"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"