ohif-viewer/OHIFViewer/client/components/viewer/viewer.js
2018-12-14 14:38:36 +01:00

108 lines
3.3 KiB
JavaScript

import React, { Component } from "react";
import PropTypes from "prop-types";
import { OHIF } from 'ohif-core';
import { MeasurementTable } from 'meteor/ohif:measurement-table';
import { CineDialog } from 'react-viewerbase';
import FlexboxLayout from '../flexboxLayout/flexboxLayout.js';
import 'meteor/ohif:cornerstone';
import 'meteor/ohif:viewerbase';
/**
* Inits OHIF Hanging Protocol's onReady.
* It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine
* Hanging Protocol will use OHIF LayoutManager to render viewports properly
*/
const initHangingProtocol = () => {
// When Hanging Protocol is ready
HP.ProtocolStore.onReady(() => {
// Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata
const studyMetadataList = OHIF.viewer.StudyMetadataList.all();
// Caches Layout Manager: Hanging Protocol uses it for layout management according to current protocol
const layoutManager = OHIF.viewerbase.layoutManager;
// Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata
const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();
// Get prior studies map
const studyPriorsMap = OHIF.studylist.functions.getStudyPriorsMap(studyMetadataList);
// Creates Protocol Engine object with required arguments
const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, studyPriorsMap, studyMetadataSource);
// Sets up Hanging Protocol engine
HP.setEngine(ProtocolEngine);
});
};
OHIF.viewer.defaultTool = {
left: 'wwwc',
right: 'zoom',
middle: 'pan'
};
OHIF.viewer.refLinesEnabled = true;
OHIF.viewer.cine = {
framesPerSecond: 24,
loop: true
};
const viewportUtils = OHIF.viewerbase.viewportUtils;
OHIF.viewer.functionList = {
toggleCineDialog: viewportUtils.toggleCineDialog,
toggleCinePlay: viewportUtils.toggleCinePlay,
clearTools: viewportUtils.clearTools,
resetViewport: viewportUtils.resetViewport,
invert: viewportUtils.invert
};
// Create the synchronizer used to update reference lines
OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);
OHIF.viewer.metadataProvider = new OHIF.cornerstone.MetadataProvider();
// Metadata configuration
const metadataProvider = OHIF.viewer.metadataProvider;
cornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));
// Instantiate viewer plugins
OHIF.viewer.measurementTable = new MeasurementTable();
class Viewer extends Component {
constructor(props) {
super(props);
this.state = {
leftSidebar: 'studies',
rightSidebar: 'measurements',
studies: this.props.studies
};
}
render() {
return (<>
<div className='viewerDialogs'>
{/*<CineDialog/>*/}
</div>
<div id="viewer" className='Viewer'>
{/*<ToolbarSection/>*/}
<FlexboxLayout studies={this.state.studies}/>
</div>
</>
);
}
}
Viewer.propTypes = {
studies: PropTypes.array
};
export default Viewer;