ohif-viewer/platform/viewer/src/components/ViewportGrid.jsx

102 lines
2.5 KiB
React
Raw Normal View History

2020-05-14 21:58:06 +02:00
/**
* CSS Grid Reference: http://grid.malven.co/
*/
2020-05-14 22:39:57 +02:00
import React, { useState } from 'react';
2020-05-14 21:58:06 +02:00
import PropTypes from 'prop-types';
import { ViewportGrid, ViewportPane } from '@ohif/ui';
2020-05-14 21:58:06 +02:00
// import DefaultViewport from './DefaultViewport.js';
// import EmptyViewport from './EmptyViewport.js';
function ViewerViewportGrid(props) {
const { activeViewportIndex, displaySets, children } = props;
2020-05-14 21:58:06 +02:00
2020-05-14 22:39:57 +02:00
// From ViewportGridService and/or ContextProvider
const [viewportGrid, setViewportGrid] = useState({
numRows: 2,
numCols: 2,
activeViewportIndex: 0,
2020-05-14 22:39:57 +02:00
viewports: [
{
displaySetUid: undefined,
},
{
displaySetUid: undefined,
},
{
displaySetUid: undefined,
},
{
displaySetUid: undefined,
},
2020-05-14 22:39:57 +02:00
],
});
2020-05-14 21:58:06 +02:00
// viewportData --> displaySets
const getViewportPanes = () =>
2020-05-14 22:39:57 +02:00
viewportGrid.viewports.map((viewport, viewportIndex) => {
2020-05-14 21:58:06 +02:00
const someId = viewport.displaySetId;
2020-05-14 22:39:57 +02:00
// const displaySet = displaySets[someId];
2020-05-14 21:58:06 +02:00
2020-05-14 22:39:57 +02:00
// if (!displaySet) {
// // TODO: Empty Viewport
// return null;
// }
2020-05-14 21:58:06 +02:00
// const pluginName =
// !layout.plugin && displaySet && displaySet.plugin
// ? displaySet.plugin
// : layout.plugin;
// const ViewportComponent = _getViewportComponent(
// data, // Why do we pass this as `ViewportData`, when that's not really what it is?
// viewportIndex,
// children,
// pluginName,
// defaultPluginName
// );
return (
<ViewportPane
key={viewportIndex}
className="m-1"
2020-05-14 22:39:57 +02:00
onDrop={() => {
/* setDisplaySet for Viewport */
}}
2020-05-14 21:58:06 +02:00
isActive={activeViewportIndex === viewportIndex}
>
{/* {ViewportComponent} */}
</ViewportPane>
);
});
2020-05-14 22:39:57 +02:00
const ViewportPanes = React.useMemo(getViewportPanes, [
children,
activeViewportIndex,
]);
2020-05-14 21:58:06 +02:00
return (
<ViewportGrid numRows={viewportGrid.numRows} numCols={viewportGrid.numCols}>
2020-05-14 22:39:57 +02:00
{ViewportPanes}
</ViewportGrid>
2020-05-14 21:58:06 +02:00
);
2020-05-14 22:39:57 +02:00
}
2020-05-14 21:58:06 +02:00
ViewerViewportGrid.propTypes = {
2020-05-14 22:39:57 +02:00
// viewports: PropTypes.array.isRequired,
2020-05-14 21:58:06 +02:00
activeViewportIndex: PropTypes.number.isRequired,
children: PropTypes.node,
// numRows: PropTypes.number.isRequired,
// numColumns: PropTypes.number.isRequired,
2020-05-14 21:58:06 +02:00
};
ViewerViewportGrid.defaultProps = {
2020-05-14 22:39:57 +02:00
// viewports: [],
// numRows: 1,
// numColumns: 1,
2020-05-14 21:58:06 +02:00
activeViewportIndex: 0,
};
export default ViewerViewportGrid;