From 980b44f18c0edee50da6f276e96a78f2749f4f5c Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 3 Feb 2023 16:56:27 -0500 Subject: [PATCH] fix(misc): Update the data source name, provide a /datasources example customization for debug (#3036) * fix(misc):Update the data source name, provide a /datasources Update the imports for a few things to match, to avoid 2 versions Fix the datasources name pr:Make the data source selector configurable * Updated data source selector page as requested * PR fixes --- extensions/cornerstone-dicom-sr/package.json | 2 +- extensions/cornerstone/package.json | 2 +- .../default/src/Panels/DataSourceSelector.tsx | 56 +++++++++++++++++++ extensions/default/src/ViewerLayout/index.tsx | 2 +- .../default/src/getCustomizationModule.tsx | 15 +++++ extensions/dicom-pdf/package.json | 2 +- extensions/dicom-video/package.json | 2 +- extensions/measurement-tracking/package.json | 2 +- extensions/tmtv/package.json | 2 +- platform/docs/package.json | 2 +- platform/ui/package.json | 2 +- platform/viewer/package.json | 13 +++-- platform/viewer/public/config/multiple.js | 6 +- .../viewer/src/routes/DataSourceWrapper.tsx | 4 +- .../viewer/src/routes/WorkList/WorkList.tsx | 4 +- platform/viewer/src/routes/index.tsx | 1 + yarn.lock | 32 +++++------ 17 files changed, 110 insertions(+), 39 deletions(-) create mode 100644 extensions/default/src/Panels/DataSourceSelector.tsx diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index e27ebca0f..886f16648 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -44,7 +44,7 @@ }, "dependencies": { "@babel/runtime": "7.16.3", - "classnames": "^2.2.6", + "classnames": "^2.3.2", "@cornerstonejs/core": "^0.27.1", "@cornerstonejs/tools": "^0.36.3" } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 28246bfd0..414159a3d 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -39,7 +39,7 @@ "react-resize-detector": "^6.7.6" }, "devDependencies": { - "lodash": "4.17.21" + "lodash": "^4.17.21" }, "dependencies": { "@babel/runtime": "7.17.9", diff --git a/extensions/default/src/Panels/DataSourceSelector.tsx b/extensions/default/src/Panels/DataSourceSelector.tsx new file mode 100644 index 000000000..decb24ad8 --- /dev/null +++ b/extensions/default/src/Panels/DataSourceSelector.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import classnames from 'classnames'; +import { useNavigate } from 'react-router-dom'; +import { useAppConfig } from '@state'; + +import { Button } from '@ohif/ui'; + +function DataSourceSelector() { + const [appConfig] = useAppConfig(); + const navigate = useNavigate(); + + // This is frowned upon, but the raw config is needed here to provide + // the selector + const dsConfigs = appConfig.dataSources; + + return ( +
+
+
+ OHIF +
+ {dsConfigs + .filter( + it => + it.sourceName !== 'dicomjson' && + it.sourceName !== 'dicomlocal' + ) + .map(ds => ( +
+

{ds.friendlyName}

+ +
+
+ ))} +
+
+
+
+ ); +} + +export default DataSourceSelector; diff --git a/extensions/default/src/ViewerLayout/index.tsx b/extensions/default/src/ViewerLayout/index.tsx index 422bcc8e8..1ee954b55 100644 --- a/extensions/default/src/ViewerLayout/index.tsx +++ b/extensions/default/src/ViewerLayout/index.tsx @@ -44,7 +44,7 @@ function ViewerLayout({ const search = dataSourceIdx === -1 ? undefined - : `datasourcename=${pathname.substring(dataSourceIdx + 1)}`; + : `datasources=${pathname.substring(dataSourceIdx + 1)}`; navigate({ pathname: '/', search, diff --git a/extensions/default/src/getCustomizationModule.tsx b/extensions/default/src/getCustomizationModule.tsx index be0c6ac88..3ffd78a3e 100644 --- a/extensions/default/src/getCustomizationModule.tsx +++ b/extensions/default/src/getCustomizationModule.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import DataSourceSelector from './Panels/DataSourceSelector'; /** * @@ -25,5 +26,19 @@ export default function getCustomizationModule() { ], }, }, + + // Example customization to list a set of datasources + { + name: 'datasources', + value: { + id: 'customRoutes', + routes: [ + { + path: '/datasources', + children: DataSourceSelector, + }, + ], + }, + }, ]; } diff --git a/extensions/dicom-pdf/package.json b/extensions/dicom-pdf/package.json index fa956c19d..03fe4c66a 100644 --- a/extensions/dicom-pdf/package.json +++ b/extensions/dicom-pdf/package.json @@ -38,6 +38,6 @@ }, "dependencies": { "@babel/runtime": "7.7.6", - "classnames": "^2.2.6" + "classnames": "^2.3.2" } } diff --git a/extensions/dicom-video/package.json b/extensions/dicom-video/package.json index a9b0a6526..4d86d4251 100644 --- a/extensions/dicom-video/package.json +++ b/extensions/dicom-video/package.json @@ -38,6 +38,6 @@ }, "dependencies": { "@babel/runtime": "7.7.6", - "classnames": "^2.2.6" + "classnames": "^2.3.2" } } diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 0a4df87c2..0e9f1349b 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -31,7 +31,7 @@ }, "peerDependencies": { "@ohif/core": "^3.0.0", - "classnames": "^2.2.6", + "classnames": "^2.3.2", "@cornerstonejs/core": "^0.27.1", "@cornerstonejs/tools": "^0.36.3", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", diff --git a/extensions/tmtv/package.json b/extensions/tmtv/package.json index aa2e4faef..9bb5c9479 100644 --- a/extensions/tmtv/package.json +++ b/extensions/tmtv/package.json @@ -38,6 +38,6 @@ }, "dependencies": { "@babel/runtime": "7.7.6", - "classnames": "^2.2.6" + "classnames": "^2.3.2" } } diff --git a/platform/docs/package.json b/platform/docs/package.json index 39b205074..15828d0d7 100644 --- a/platform/docs/package.json +++ b/platform/docs/package.json @@ -37,7 +37,7 @@ "@docusaurus/plugin-google-gtag": "2.0.1", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", - "classnames": "^2.3.1", + "classnames": "^2.3.2", "clsx": "^1.1.1", "file-loader": "^6.2.0", "plugin-image-zoom": "ataft/plugin-image-zoom", diff --git a/platform/ui/package.json b/platform/ui/package.json index 9c5ff526f..9f11e280f 100644 --- a/platform/ui/package.json +++ b/platform/ui/package.json @@ -31,7 +31,7 @@ }, "dependencies": { "browser-detect": "^0.2.28", - "classnames": "2.2.6", + "classnames": "^2.3.2", "lodash.debounce": "4.0.8", "moment": "2.24.0", "mousetrap": "^1.6.5", diff --git a/platform/viewer/package.json b/platform/viewer/package.json index c4666356f..48ef595d9 100644 --- a/platform/viewer/package.json +++ b/platform/viewer/package.json @@ -49,8 +49,8 @@ "@babel/runtime": "7.16.3", "@ohif/core": "^3.0.0", "@ohif/extension-cornerstone": "^3.0.0", - "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "@ohif/extension-cornerstone-dicom-seg": "^3.0.0", + "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "@ohif/extension-default": "^3.0.0", "@ohif/extension-dicom-pdf": "^3.0.1", "@ohif/extension-dicom-video": "^3.0.1", @@ -58,12 +58,13 @@ "@ohif/mode-basic-dev-mode": "^3.0.0", "@ohif/mode-longitudinal": "^3.0.0", "@ohif/ui": "^2.0.0", - "@types/react": "^16.0.0", - "classnames": "^2.2.6", + "@types/react": "^17.0.38", + "classnames": "^2.3.2", "config-point": "^0.4.8", "core-js": "^3.16.1", "cornerstone-math": "^0.1.9", "cornerstone-wado-image-loader": "^4.2.1", + "dayjs": "^1.11.6", "dcmjs": "^0.28.3", "detect-gpu": "^4.0.16", "dicom-parser": "^1.8.9", @@ -73,7 +74,6 @@ "i18next": "^17.0.3", "i18next-browser-languagedetector": "^3.0.1", "lodash.isequal": "4.5.0", - "moment": "^2.24.0", "oidc-client": "1.11.5", "prop-types": "^15.7.2", "query-string": "^6.12.1", @@ -86,12 +86,13 @@ "react-router-dom": "^6.3.0" }, "devDependencies": { + "@babel/plugin-proposal-private-methods": "^7.18.6", "@percy/cypress": "^3.1.1", "cypress": "^9.5.4", "cypress-file-upload": "^3.5.3", - "identity-obj-proxy": "3.0.x", - "lodash": "4.17.15", "glob": "^8.0.3", + "identity-obj-proxy": "3.0.x", + "lodash": "^4.17.21", "tailwindcss": "3.2.4", "terser-webpack-plugin": "^5.1.1", "webpack": "^5.50.0", diff --git a/platform/viewer/public/config/multiple.js b/platform/viewer/public/config/multiple.js index 5ff3b2344..3738f4a4a 100644 --- a/platform/viewer/public/config/multiple.js +++ b/platform/viewer/public/config/multiple.js @@ -1,7 +1,7 @@ window.config = { routerBasename: '/', customizationService: [ - '@ohif/extension-default.customizationModule.helloPage', + '@ohif/extension-default.customizationModule.datasources', { id: 'class:StudyBrowser', true: 'black', @@ -43,8 +43,8 @@ window.config = { sourceName: 'aws', configuration: { name: 'aws', - qidoRoot: 'https://viewer.flexview.ai/dicomweb', - wadoRoot: 'https://viewer.flexview.ai/dicomweb', + qidoRoot: 'https://dd32w2rfebxel.cloudfront.net/dicomweb', + wadoRoot: 'https://dd32w2rfebxel.cloudfront.net/dicomweb', qidoSupportsIncludeField: false, supportsReject: false, supportsStow: false, diff --git a/platform/viewer/src/routes/DataSourceWrapper.tsx b/platform/viewer/src/routes/DataSourceWrapper.tsx index 951e5dba8..51fa05d95 100644 --- a/platform/viewer/src/routes/DataSourceWrapper.tsx +++ b/platform/viewer/src/routes/DataSourceWrapper.tsx @@ -20,9 +20,7 @@ function DataSourceWrapper(props) { const location = useLocation(); // TODO - get the variable from the props all the time... - let dataSourceName = new URLSearchParams(location.search).get( - 'datasourcename' - ); + let dataSourceName = new URLSearchParams(location.search).get('datasources'); const dataPath = dataSourceName ? `/${dataSourceName}` : ''; if (!dataSourceName && window.config.defaultDataSourceName) { diff --git a/platform/viewer/src/routes/WorkList/WorkList.tsx b/platform/viewer/src/routes/WorkList/WorkList.tsx index 005282ad8..9ce0cfdb0 100644 --- a/platform/viewer/src/routes/WorkList/WorkList.tsx +++ b/platform/viewer/src/routes/WorkList/WorkList.tsx @@ -498,7 +498,7 @@ const defaultFilterValues = { sortDirection: 'none', pageNumber: 1, resultsPerPage: 25, - datasourcename: '', + datasources: '', }; function _tryParseInt(str, defaultValue) { @@ -530,7 +530,7 @@ function _getQueryFilterValues(query) { sortDirection: query.get('sortDirection'), pageNumber: _tryParseInt(query.get('pageNumber'), undefined), resultsPerPage: _tryParseInt(query.get('resultsPerPage'), undefined), - datasourcename: query.get('datasourcename'), + datasources: query.get('datasources'), }; // Delete null/undefined keys diff --git a/platform/viewer/src/routes/index.tsx b/platform/viewer/src/routes/index.tsx index e93a70e89..aee16bd2a 100644 --- a/platform/viewer/src/routes/index.tsx +++ b/platform/viewer/src/routes/index.tsx @@ -74,6 +74,7 @@ const createRoutes = ({ {...route.props} route={route} servicesManager={servicesManager} + extensionManager={extensionManager} hotkeysManager={hotkeysManager} /> diff --git a/yarn.lock b/yarn.lock index 9317f3d64..7ed8045a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6283,10 +6283,10 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/react@^16.0.0": - version "16.14.26" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.26.tgz#82540a240ba7207ebe87d9579051bc19c9ef7605" - integrity sha512-c/5CYyciOO4XdFcNhZW1O2woVx86k4T+DO2RorHZL7EhitkNQgSD/SgpdZJAUJa/qjVgOmTM44gHkAdZSXeQuQ== +"@types/react@^17.0.38": + version "17.0.53" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.53.tgz#10d4d5999b8af3d6bc6a9369d7eb953da82442ab" + integrity sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -8791,16 +8791,16 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" - integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== - -classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: +classnames@^2.2.5: version "2.3.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== +classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + clean-css@^4.2.3: version "4.2.4" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" @@ -10245,6 +10245,11 @@ dayjs@^1.10.4: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.2.tgz#fa0f5223ef0d6724b3d8327134890cfe3d72fbe5" integrity sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw== +dayjs@^1.11.6: + version "1.11.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + dcmjs@^0.28.3: version "0.28.3" resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.28.3.tgz#a756ab4b02363d12545c9830b8f97b5141723727" @@ -15811,12 +15816,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@4.17.21, lodash@^4.0.1, lodash@^4.1.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1: +lodash@^4.0.1, lodash@^4.1.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==