From 3242bbcf764964e789ad5ec40197cc829189ed00 Mon Sep 17 00:00:00 2001 From: dannyrb Date: Thu, 7 May 2020 14:05:57 -0400 Subject: [PATCH] Playing with how routes access ViewModel context and SopClassHandlers that map meta to ViewModel (displaySets) --- .../src/routes/SOPClassHandlerManager.js | 33 +++++++++---------- .../viewer/src/routes/ViewModelContext.js | 33 +++++++++++++++++++ 2 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 platform/viewer/src/routes/ViewModelContext.js diff --git a/platform/viewer/src/routes/SOPClassHandlerManager.js b/platform/viewer/src/routes/SOPClassHandlerManager.js index 359551f6f..3bd2cb5d4 100644 --- a/platform/viewer/src/routes/SOPClassHandlerManager.js +++ b/platform/viewer/src/routes/SOPClassHandlerManager.js @@ -1,27 +1,24 @@ +import { dicomMetadataStore } from '@ohif/core'; + export default class SOPClassHandlerManager { - constructor(sopClassHandlerIds) { - this.SOPClassHandlers = sopClassHandlerIds.map(getSOPClassHandler); + constructor(extensionManager, sopClassHandlerIds) { + this.SOPClassHandlers = sopClassHandlerIds.map( + extensionManager.getModuleEntry + ); + + dicomMetadataStore.listen(this.onSeriesMetadataLoaded); } - async createDisplaySets() { + onSeriesMetadataLoaded = instances => { const SOPClassHandlers = this.SOPClassHandlers; - const displaySets = []; - - // TODO - StudyMetadata.forEachSeries(series => { - for (let i = 0; i < SOPClassHandlers.length; i++) { - const handler = SOPClassHandlers[i]; + for (let i = 0; i < SOPClassHandlers.length; i++) { + const handler = SOPClassHandlers[i]; + if (handler.sopClassUids.includes(instances[0].SOPClassUID)) { // TODO: This step is still unclear to me - const displaySet = handler(series); - - if (displaySet) { - displaySets.push(displaySet); - } + return handler.getDisplaySetFromSeries(series); } - }); - - return displaySets; - } + } + }; } diff --git a/platform/viewer/src/routes/ViewModelContext.js b/platform/viewer/src/routes/ViewModelContext.js new file mode 100644 index 000000000..bc6390e50 --- /dev/null +++ b/platform/viewer/src/routes/ViewModelContext.js @@ -0,0 +1,33 @@ +import React, { Component } from 'react'; + +const ViewModelContext = React.createContext({ + displaySetInstanceUids: [], + setDisplaySetInstanceUids: () => {}, +}); + +class ViewModelProvider extends Component { + state = { + displaySetInstanceUids: [], + }; + + render() { + const setDisplaySetInstanceUids = displaySetInstanceUids => { + this.setState({ displaySetInstanceUids }); + }; + + return ( + + {this.props.children} + + ); + } +} + +export default ViewModelContext; + +export { ViewModelProvider };