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:
parent
0d9da69580
commit
2f4cba28a5
@ -33,7 +33,7 @@
|
|||||||
"@ohif/ui": "^0.50.0",
|
"@ohif/ui": "^0.50.0",
|
||||||
"cornerstone-core": "^2.3.0",
|
"cornerstone-core": "^2.3.0",
|
||||||
"cornerstone-math": "^0.1.8",
|
"cornerstone-math": "^0.1.8",
|
||||||
"cornerstone-tools": "4.20.1",
|
"cornerstone-tools": "5.1.2",
|
||||||
"cornerstone-wado-image-loader": "^3.1.2",
|
"cornerstone-wado-image-loader": "^3.1.2",
|
||||||
"dcmjs": "0.16.1",
|
"dcmjs": "0.16.1",
|
||||||
"dicom-parser": "^1.8.3",
|
"dicom-parser": "^1.8.3",
|
||||||
|
|||||||
@ -13,9 +13,10 @@ const DEFAULT_SIZE = 512;
|
|||||||
const MAX_TEXTURE_SIZE = 10000;
|
const MAX_TEXTURE_SIZE = 10000;
|
||||||
|
|
||||||
const CornerstoneViewportDownloadForm = ({ onClose, activeViewportIndex }) => {
|
const CornerstoneViewportDownloadForm = ({ onClose, activeViewportIndex }) => {
|
||||||
const { element: activeEnabledElement } = getEnabledElement(
|
const enabledElement = getEnabledElement(
|
||||||
activeViewportIndex
|
activeViewportIndex
|
||||||
);
|
);
|
||||||
|
const activeEnabledElement = enabledElement?.element
|
||||||
|
|
||||||
const enableViewport = viewportElement => {
|
const enableViewport = viewportElement => {
|
||||||
if (viewportElement) {
|
if (viewportElement) {
|
||||||
@ -116,6 +117,7 @@ const CornerstoneViewportDownloadForm = ({ onClose, activeViewportIndex }) => {
|
|||||||
viewportElement.querySelector('canvas').toBlob(blob => {
|
viewportElement.querySelector('canvas').toBlob(blob => {
|
||||||
const URLObj = window.URL || window.webkitURL;
|
const URLObj = window.URL || window.webkitURL;
|
||||||
const a = document.createElement('a');
|
const a = document.createElement('a');
|
||||||
|
|
||||||
a.href = URLObj.createObjectURL(blob);
|
a.href = URLObj.createObjectURL(blob);
|
||||||
a.download = file;
|
a.download = file;
|
||||||
document.body.appendChild(a);
|
document.body.appendChild(a);
|
||||||
|
|||||||
@ -202,8 +202,9 @@ const commandsModule = ({ servicesManager, commandsManager }) => {
|
|||||||
return enabledElement;
|
return enabledElement;
|
||||||
},
|
},
|
||||||
showDownloadViewportModal: () => {
|
showDownloadViewportModal: () => {
|
||||||
const activeViewportIndex = 0; // viewports.activeViewportIndex;
|
const { activeViewportIndex } = ViewportGridService.getState();
|
||||||
const { UIModalService } = servicesManager.services;
|
const { UIModalService } = servicesManager.services;
|
||||||
|
|
||||||
if (UIModalService) {
|
if (UIModalService) {
|
||||||
UIModalService.show({
|
UIModalService.show({
|
||||||
content: CornerstoneViewportDownloadForm,
|
content: CornerstoneViewportDownloadForm,
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "^0.50.0",
|
"@ohif/core": "^0.50.0",
|
||||||
"cornerstone-core": "^2.2.8",
|
"cornerstone-core": "^2.2.8",
|
||||||
"cornerstone-tools": "4.20.1",
|
"cornerstone-tools": "5.1.2",
|
||||||
"dcmjs": "0.16.1",
|
"dcmjs": "0.16.1",
|
||||||
"prop-types": "^15.6.2",
|
"prop-types": "^15.6.2",
|
||||||
"react": "^16.8.6",
|
"react": "^16.8.6",
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "^0.50.0",
|
"@ohif/core": "^0.50.0",
|
||||||
"cornerstone-core": "^2.2.8",
|
"cornerstone-core": "^2.2.8",
|
||||||
"cornerstone-tools": "4.20.1",
|
"cornerstone-tools": "5.1.2",
|
||||||
"dcmjs": "0.16.1",
|
"dcmjs": "0.16.1",
|
||||||
"prop-types": "^15.6.2",
|
"prop-types": "^15.6.2",
|
||||||
"react": "^16.8.6",
|
"react": "^16.8.6",
|
||||||
|
|||||||
@ -33,7 +33,7 @@
|
|||||||
"@ohif/ui": "^0.50.0",
|
"@ohif/ui": "^0.50.0",
|
||||||
"cornerstone-core": "^2.3.0",
|
"cornerstone-core": "^2.3.0",
|
||||||
"cornerstone-math": "^0.1.8",
|
"cornerstone-math": "^0.1.8",
|
||||||
"cornerstone-tools": "4.20.1",
|
"cornerstone-tools": "5.1.2",
|
||||||
"cornerstone-wado-image-loader": "^3.1.2",
|
"cornerstone-wado-image-loader": "^3.1.2",
|
||||||
"dcmjs": "0.16.1",
|
"dcmjs": "0.16.1",
|
||||||
"dicom-parser": "^1.8.3",
|
"dicom-parser": "^1.8.3",
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "^0.50.0",
|
"@ohif/core": "^0.50.0",
|
||||||
"cornerstone-tools": "4.20.1",
|
"cornerstone-tools": "5.1.2",
|
||||||
"dcmjs": "0.16.1",
|
"dcmjs": "0.16.1",
|
||||||
"prop-types": "^15.6.2",
|
"prop-types": "^15.6.2",
|
||||||
"react": "^16.13.1",
|
"react": "^16.13.1",
|
||||||
|
|||||||
@ -57,7 +57,7 @@
|
|||||||
"@ohif/core": "^2.9.6",
|
"@ohif/core": "^2.9.6",
|
||||||
"@ohif/ui": "^2.0.0",
|
"@ohif/ui": "^2.0.0",
|
||||||
"cornerstone-core": "^2.3.0",
|
"cornerstone-core": "^2.3.0",
|
||||||
"cornerstone-tools": "4.20.1",
|
"cornerstone-tools": "5.1.2",
|
||||||
"cornerstone-wado-image-loader": "^3.1.2",
|
"cornerstone-wado-image-loader": "^3.1.2",
|
||||||
"dicom-parser": "^1.8.3",
|
"dicom-parser": "^1.8.3",
|
||||||
"gh-pages": "^2.0.1",
|
"gh-pages": "^2.0.1",
|
||||||
|
|||||||
@ -62,8 +62,7 @@ export default function mode({ modeConfiguration }) {
|
|||||||
'Zoom',
|
'Zoom',
|
||||||
'WindowLevel',
|
'WindowLevel',
|
||||||
'Pan',
|
'Pan',
|
||||||
// TODO: OHIF-376, need more time to adress this reasonably
|
'Capture',
|
||||||
// 'Capture',
|
|
||||||
'Layout',
|
'Layout',
|
||||||
'MoreTools',
|
'MoreTools',
|
||||||
]);
|
]);
|
||||||
|
|||||||
@ -146,17 +146,16 @@ export default [
|
|||||||
commandOptions: { toolName: 'Pan' },
|
commandOptions: { toolName: 'Pan' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// TODO: OHIF-376, need more time to adress this reasonably
|
{
|
||||||
// {
|
id: 'Capture',
|
||||||
// id: 'Capture',
|
type: 'ohif.action',
|
||||||
// type: 'ohif.action',
|
props: {
|
||||||
// props: {
|
icon: 'tool-capture',
|
||||||
// icon: 'tool-capture',
|
label: 'Capture',
|
||||||
// label: 'Capture',
|
type: 'action',
|
||||||
// type: 'action',
|
commandName: 'showDownloadViewportModal',
|
||||||
// commandName: 'showDownloadViewportModal',
|
},
|
||||||
// },
|
},
|
||||||
// },
|
|
||||||
{
|
{
|
||||||
id: 'Layout',
|
id: 'Layout',
|
||||||
type: 'ohif.layoutSelector',
|
type: 'ohif.layoutSelector',
|
||||||
|
|||||||
@ -31,7 +31,7 @@
|
|||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"cornerstone-core": "^2.3.0",
|
"cornerstone-core": "^2.3.0",
|
||||||
"cornerstone-tools": "4.20.1",
|
"cornerstone-tools": "5.1.2",
|
||||||
"cornerstone-wado-image-loader": "^3.1.2",
|
"cornerstone-wado-image-loader": "^3.1.2",
|
||||||
"dicom-parser": "^1.8.3"
|
"dicom-parser": "^1.8.3"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -281,7 +281,7 @@ const ViewportDownloadForm = ({
|
|||||||
<Input
|
<Input
|
||||||
data-cy="file-name"
|
data-cy="file-name"
|
||||||
value={filename}
|
value={filename}
|
||||||
onChange={value => setFilename(value)}
|
onChange={evt => setFilename(evt.target.value)}
|
||||||
label="File Name"
|
label="File Name"
|
||||||
/>
|
/>
|
||||||
{renderErrorHandler('filename')}
|
{renderErrorHandler('filename')}
|
||||||
@ -296,7 +296,7 @@ const ViewportDownloadForm = ({
|
|||||||
max={maximumSize}
|
max={maximumSize}
|
||||||
label="Image width (px)"
|
label="Image width (px)"
|
||||||
value={dimensions.width}
|
value={dimensions.width}
|
||||||
onChange={value => onDimensionsChange(value, 'width')}
|
onChange={evt => onDimensionsChange(evt.target.value, 'width')}
|
||||||
data-cy="image-width"
|
data-cy="image-width"
|
||||||
/>
|
/>
|
||||||
{renderErrorHandler('width')}
|
{renderErrorHandler('width')}
|
||||||
@ -308,7 +308,7 @@ const ViewportDownloadForm = ({
|
|||||||
max={maximumSize}
|
max={maximumSize}
|
||||||
label="Image height (px)"
|
label="Image height (px)"
|
||||||
value={dimensions.height}
|
value={dimensions.height}
|
||||||
onChange={value => onDimensionsChange(value, 'height')}
|
onChange={evt => onDimensionsChange(evt.target.value, 'height')}
|
||||||
data-cy="image-height"
|
data-cy="image-height"
|
||||||
/>
|
/>
|
||||||
{renderErrorHandler('height')}
|
{renderErrorHandler('height')}
|
||||||
@ -372,7 +372,12 @@ const ViewportDownloadForm = ({
|
|||||||
|
|
||||||
<div className="mt-8">
|
<div className="mt-8">
|
||||||
<div
|
<div
|
||||||
className="hidden"
|
className="p-4 rounded bg-secondary-dark border-secondary-primary"
|
||||||
|
data-cy="image-preview"
|
||||||
|
>
|
||||||
|
<Typography variant="h5">Image preview</Typography>
|
||||||
|
{activeViewport && (<div
|
||||||
|
className="mx-auto my-0"
|
||||||
style={{
|
style={{
|
||||||
height: viewportElementDimensions.height,
|
height: viewportElementDimensions.height,
|
||||||
width: viewportElementDimensions.width,
|
width: viewportElementDimensions.width,
|
||||||
@ -389,26 +394,13 @@ const ViewportDownloadForm = ({
|
|||||||
height={downloadCanvas.height}
|
height={downloadCanvas.height}
|
||||||
ref={downloadCanvas.ref}
|
ref={downloadCanvas.ref}
|
||||||
></canvas>
|
></canvas>
|
||||||
|
</div>)}
|
||||||
|
{!activeViewport &&
|
||||||
|
<Typography className="mt-4">
|
||||||
|
Active viewport has no displayed image
|
||||||
|
</Typography>
|
||||||
|
}
|
||||||
</div>
|
</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"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
<div className="p-8 text-center">
|
|
||||||
<Typography>Loading Image Preview...</Typography>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex justify-end mt-4">
|
<div className="flex justify-end mt-4">
|
||||||
|
|||||||
@ -68,7 +68,7 @@
|
|||||||
"classnames": "^2.2.6",
|
"classnames": "^2.2.6",
|
||||||
"core-js": "^3.2.1",
|
"core-js": "^3.2.1",
|
||||||
"cornerstone-math": "^0.1.8",
|
"cornerstone-math": "^0.1.8",
|
||||||
"cornerstone-tools": "^4.22.0",
|
"cornerstone-tools": "5.1.2",
|
||||||
"cornerstone-wado-image-loader": "^3.1.2",
|
"cornerstone-wado-image-loader": "^3.1.2",
|
||||||
"dcmjs": "0.16.1",
|
"dcmjs": "0.16.1",
|
||||||
"dicom-parser": "^1.8.3",
|
"dicom-parser": "^1.8.3",
|
||||||
|
|||||||
21
yarn.lock
21
yarn.lock
@ -1787,27 +1787,13 @@
|
|||||||
core-js-pure "^3.0.0"
|
core-js-pure "^3.0.0"
|
||||||
regenerator-runtime "^0.13.4"
|
regenerator-runtime "^0.13.4"
|
||||||
|
|
||||||
"@babel/runtime@7.1.2":
|
"@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.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":
|
|
||||||
version "7.7.6"
|
version "7.7.6"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f"
|
||||||
integrity sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw==
|
integrity sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw==
|
||||||
dependencies:
|
dependencies:
|
||||||
regenerator-runtime "^0.13.2"
|
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":
|
"@babel/standalone@^7.10.2", "@babel/standalone@^7.4.5":
|
||||||
version "7.10.2"
|
version "7.10.2"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.10.2.tgz#49dbbadcbc4b199df064d7d8b3e21c915b84abdb"
|
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"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
|
||||||
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
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:
|
regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4:
|
||||||
version "0.13.5"
|
version "0.13.5"
|
||||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user