fix(dynamic load): make sure required extensions are loaded (#3377)
* fixes some bugs * make cornerstone default for now
This commit is contained in:
parent
98d966514a
commit
0b4c3649e7
@ -5,7 +5,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"packageName": "@ohif/extension-cornerstone",
|
"packageName": "@ohif/extension-cornerstone",
|
||||||
"default": false,
|
|
||||||
"version": "3.0.0"
|
"version": "3.0.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -103,7 +103,10 @@ export default function ModeRoute({
|
|||||||
const [studyInstanceUIDs, setStudyInstanceUIDs] = useState();
|
const [studyInstanceUIDs, setStudyInstanceUIDs] = useState();
|
||||||
|
|
||||||
const [refresh, setRefresh] = useState(false);
|
const [refresh, setRefresh] = useState(false);
|
||||||
const [allExtensionsLoaded, setAllExtensionsLoaded] = useState(false);
|
const [
|
||||||
|
ExtensionDependenciesLoaded,
|
||||||
|
setExtensionDependenciesLoaded,
|
||||||
|
] = useState(false);
|
||||||
|
|
||||||
const layoutTemplateData = useRef(false);
|
const layoutTemplateData = useRef(false);
|
||||||
const locationRef = useRef(null);
|
const locationRef = useRef(null);
|
||||||
@ -169,6 +172,23 @@ export default function ModeRoute({
|
|||||||
return ViewportGrid({ ...props, dataSource });
|
return ViewportGrid({ ...props, dataSource });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const loadExtensions = async () => {
|
||||||
|
const loadedExtensions = await loadModules(Object.keys(extensions));
|
||||||
|
for (const extension of loadedExtensions) {
|
||||||
|
const { id: extensionId } = extension;
|
||||||
|
if (
|
||||||
|
extensionManager.registeredExtensionIds.indexOf(extensionId) === -1
|
||||||
|
) {
|
||||||
|
await extensionManager.registerExtension(extension);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setExtensionDependenciesLoaded(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
loadExtensions();
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Preventing state update for unmounted component
|
// Preventing state update for unmounted component
|
||||||
isMounted.current = true;
|
isMounted.current = true;
|
||||||
@ -178,6 +198,10 @@ export default function ModeRoute({
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!ExtensionDependenciesLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Todo: this should not be here, data source should not care about params
|
// Todo: this should not be here, data source should not care about params
|
||||||
const initializeDataSource = async (params, query) => {
|
const initializeDataSource = async (params, query) => {
|
||||||
const studyInstanceUIDs = await dataSource.initialize({
|
const studyInstanceUIDs = await dataSource.initialize({
|
||||||
@ -191,9 +215,13 @@ export default function ModeRoute({
|
|||||||
return () => {
|
return () => {
|
||||||
layoutTemplateData.current = null;
|
layoutTemplateData.current = null;
|
||||||
};
|
};
|
||||||
}, [location]);
|
}, [location, ExtensionDependenciesLoaded]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!ExtensionDependenciesLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const retrieveLayoutData = async () => {
|
const retrieveLayoutData = async () => {
|
||||||
const layoutData = await route.layoutTemplate({
|
const layoutData = await route.layoutTemplate({
|
||||||
location,
|
location,
|
||||||
@ -211,10 +239,10 @@ export default function ModeRoute({
|
|||||||
return () => {
|
return () => {
|
||||||
layoutTemplateData.current = null;
|
layoutTemplateData.current = null;
|
||||||
};
|
};
|
||||||
}, [studyInstanceUIDs]);
|
}, [studyInstanceUIDs, ExtensionDependenciesLoaded]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!hotkeys) {
|
if (!hotkeys || !ExtensionDependenciesLoaded) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,25 +259,14 @@ export default function ModeRoute({
|
|||||||
return () => {
|
return () => {
|
||||||
hotkeysManager.destroy();
|
hotkeysManager.destroy();
|
||||||
};
|
};
|
||||||
}, []);
|
}, [ExtensionDependenciesLoaded]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!layoutTemplateData.current) {
|
if (!layoutTemplateData.current || !ExtensionDependenciesLoaded) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const setupRouteInit = async () => {
|
const setupRouteInit = async () => {
|
||||||
const loadedExtensions = await loadModules(Object.keys(extensions));
|
|
||||||
for (const extension of loadedExtensions) {
|
|
||||||
const { id: extensionId } = extension;
|
|
||||||
if (
|
|
||||||
extensionManager.registeredExtensionIds.indexOf(extensionId) === -1
|
|
||||||
) {
|
|
||||||
await extensionManager.registerExtension(extension);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
setAllExtensionsLoaded(true);
|
|
||||||
|
|
||||||
// TODO: For some reason this is running before the Providers
|
// TODO: For some reason this is running before the Providers
|
||||||
// are calling setServiceImplementation
|
// are calling setServiceImplementation
|
||||||
// TODO -> iterate through services.
|
// TODO -> iterate through services.
|
||||||
@ -370,6 +387,7 @@ export default function ModeRoute({
|
|||||||
mode,
|
mode,
|
||||||
dataSourceName,
|
dataSourceName,
|
||||||
location,
|
location,
|
||||||
|
ExtensionDependenciesLoaded,
|
||||||
route,
|
route,
|
||||||
servicesManager,
|
servicesManager,
|
||||||
extensionManager,
|
extensionManager,
|
||||||
@ -397,7 +415,7 @@ export default function ModeRoute({
|
|||||||
<DragAndDropProvider>
|
<DragAndDropProvider>
|
||||||
{layoutTemplateData.current &&
|
{layoutTemplateData.current &&
|
||||||
studyInstanceUIDs?.[0] !== undefined &&
|
studyInstanceUIDs?.[0] !== undefined &&
|
||||||
allExtensionsLoaded &&
|
ExtensionDependenciesLoaded &&
|
||||||
renderLayoutData({
|
renderLayoutData({
|
||||||
...layoutTemplateData.current.props,
|
...layoutTemplateData.current.props,
|
||||||
ViewportGridComp: ViewportGridWithDataSource,
|
ViewportGridComp: ViewportGridWithDataSource,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user