diff --git a/platform/ui/src/components/Viewport/Viewport.jsx b/platform/ui/src/components/Viewport/Viewport.jsx index e847f85d0..ccf8a067d 100644 --- a/platform/ui/src/components/Viewport/Viewport.jsx +++ b/platform/ui/src/components/Viewport/Viewport.jsx @@ -1,38 +1,62 @@ import React from 'react'; +import PropTypes from 'prop-types'; import { ViewportActionBar, Notification, Button } from '@ohif/ui'; -const Viewport = ({ - viewportIndex, - onSeriesChange, - studyData, - isTracked, - studyDate, - modality, - currentSeries, - patientInformation, - activeViewportIndex, - children, -}) => { +const Viewport = ({ viewportIndex, onSeriesChange, studyData, children }) => { return ( -
- +
+
+ - {/* TODO: NOTIFICATION API DEFINITION - OHIF-112 */} - - - - -
- } - /> + {/* TODO: NOTIFICATION API DEFINITION - OHIF-112 */} + + + + +
+ } + /> +
+ + {/* STUDY IMAGE */} +
+ {children} +
); }; +Viewport.propTypes = { + viewportIndex: PropTypes.number.isRequired, + onSeriesChange: PropTypes.func.isRequired, + studyData: PropTypes.shape({ + label: PropTypes.string.isRequired, + isTracked: PropTypes.bool.isRequired, + isLocked: PropTypes.bool.isRequired, + studyDate: PropTypes.string.isRequired, + currentSeries: PropTypes.number.isRequired, + seriesDescription: PropTypes.string.isRequired, + modality: PropTypes.string.isRequired, + patientInformation: PropTypes.shape({ + patientName: PropTypes.string.isRequired, + patientSex: PropTypes.string.isRequired, + patientAge: PropTypes.string.isRequired, + MRN: PropTypes.string.isRequired, + thickness: PropTypes.string.isRequired, + spacing: PropTypes.string.isRequired, + scanner: PropTypes.string.isRequired, + }), + }).isRequired, + children: PropTypes.node.isRequired, +}; + export default Viewport; diff --git a/platform/ui/src/components/ViewportActionBar/ViewportActionBar.jsx b/platform/ui/src/components/ViewportActionBar/ViewportActionBar.jsx index a38a6c5b4..a338617a8 100644 --- a/platform/ui/src/components/ViewportActionBar/ViewportActionBar.jsx +++ b/platform/ui/src/components/ViewportActionBar/ViewportActionBar.jsx @@ -10,7 +10,41 @@ const classes = { row: 'flex flex-col ml-4', }; -const ViewportActionBar = ({ isTracked, isLocked, modality }) => { +// isTracked: true, +// studyDate: '07-Sep-2010', +// currentSeries: 1, +// modality: 'CT', +// patientInformation: { +// patientName: 'Smith, Jane', +// patientSex: 'F', +// patientAge: '59', +// MRN: '10000001', +// thickness: '5.0mm', +// spacing: '1.25mm', +// scanner: 'Aquilion', + +const ViewportActionBar = ({ studyData, onSeriesChange }) => { + const { + label, + isTracked, + isLocked, + modality, + studyDate, + currentSeries, + seriesDescription, + patientInformation, + } = studyData; + + const { + patientName, + patientSex, + patientAge, + MRN, + thickness, + spacing, + scanner, + } = patientInformation; + const renderIconStatus = () => { if (modality === 'SR') { return ( @@ -73,28 +107,36 @@ const ViewportActionBar = ({ isTracked, isLocked, modality }) => {
{renderIconStatus()} - A + {label}
- 07-Sep-2010 + {studyDate} - S: 1 + S: {currentSeries}
- - Series description lorem ipsum dolor sit... - +

+ {seriesDescription} +

- - @@ -120,22 +162,24 @@ const ViewportActionBar = ({ isTracked, isLocked, modality }) => {
- Smith, Jane + {patientName}
Sex - F + + {patientSex} +
Age - 59 + + {patientAge} +
MRN - - 10000001 - + {MRN}
@@ -143,14 +187,16 @@ const ViewportActionBar = ({ isTracked, isLocked, modality }) => { Thickness - 5.00mm + + {thickness} +
Spacing - 1.25 mm + {spacing}
@@ -158,7 +204,7 @@ const ViewportActionBar = ({ isTracked, isLocked, modality }) => { Scanner - Aquilion + {scanner}
@@ -181,14 +227,26 @@ const ViewportActionBar = ({ isTracked, isLocked, modality }) => { ); }; -ViewportActionBar.defaultProps = { - isLocked: false, -}; - ViewportActionBar.propTypes = { - isTracked: PropTypes.bool.isRequired, - isLocked: PropTypes.bool, - modality: PropTypes.string.isRequired, + onSeriesChange: PropTypes.func.isRequired, + studyData: PropTypes.shape({ + label: PropTypes.string.isRequired, + isTracked: PropTypes.bool.isRequired, + isLocked: PropTypes.bool.isRequired, + studyDate: PropTypes.string.isRequired, + currentSeries: PropTypes.number.isRequired, + seriesDescription: PropTypes.string.isRequired, + modality: PropTypes.string.isRequired, + patientInformation: PropTypes.shape({ + patientName: PropTypes.string.isRequired, + patientSex: PropTypes.string.isRequired, + patientAge: PropTypes.string.isRequired, + MRN: PropTypes.string.isRequired, + thickness: PropTypes.string.isRequired, + spacing: PropTypes.string.isRequired, + scanner: PropTypes.string.isRequired, + }), + }).isRequired, }; export default ViewportActionBar; diff --git a/platform/ui/src/components/ViewportActionBar/ViewportActionBar.mdx b/platform/ui/src/components/ViewportActionBar/ViewportActionBar.mdx index 545f82303..7f6e99cc7 100644 --- a/platform/ui/src/components/ViewportActionBar/ViewportActionBar.mdx +++ b/platform/ui/src/components/ViewportActionBar/ViewportActionBar.mdx @@ -21,25 +21,109 @@ import { ViewportActionBar } from '@ohif/ui';
- + alert(`Series ${direction}`)} + studyData={{ + label: 'A', + isTracked: true, + isLocked: false, + studyDate: '07-Sep-2010', + currentSeries: 1, + seriesDescription: + 'Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit ', + modality: 'CT', + patientInformation: { + patientName: 'Smith, Jane', + patientSex: 'F', + patientAge: '59', + MRN: '10000001', + thickness: '2.0mm', + spacing: '1.25mm', + scanner: 'Aquilion', + }, + }} + />
- + alert(`Series ${direction}`)} + studyData={{ + label: 'A', + isTracked: false, + isLocked: true, + studyDate: '07-Sep-2010', + currentSeries: 1, + seriesDescription: + 'Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit ', + modality: 'CT', + patientInformation: { + patientName: 'Smith, Jane', + patientSex: 'F', + patientAge: '59', + MRN: '10000001', + thickness: '2.0mm', + spacing: '1.25mm', + scanner: 'Aquilion', + }, + }} + />
- + alert(`Series ${direction}`)} + studyData={{ + label: 'A', + isTracked: false, + isLocked: false, + studyDate: '07-Sep-2010', + currentSeries: 1, + seriesDescription: + 'Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit ', + modality: 'SR', + patientInformation: { + patientName: 'Smith, Jane', + patientSex: 'F', + patientAge: '59', + MRN: '10000001', + thickness: '2.0mm', + spacing: '1.25mm', + scanner: 'Aquilion', + }, + }} + />
- + alert(`Series ${direction}`)} + studyData={{ + label: 'A', + isTracked: false, + isLocked: true, + studyDate: '07-Sep-2010', + currentSeries: 1, + seriesDescription: + 'Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit ', + modality: 'SR', + patientInformation: { + patientName: 'Smith, Jane', + patientSex: 'F', + patientAge: '59', + MRN: '10000001', + thickness: '2.0mm', + spacing: '1.25mm', + scanner: 'Aquilion', + }, + }} + />
diff --git a/platform/ui/src/components/ViewportGrid/ViewportGrid.jsx b/platform/ui/src/components/ViewportGrid/ViewportGrid.jsx index d2c397973..bc525af4f 100644 --- a/platform/ui/src/components/ViewportGrid/ViewportGrid.jsx +++ b/platform/ui/src/components/ViewportGrid/ViewportGrid.jsx @@ -15,6 +15,9 @@ const ViewportGrid = ({ rows, cols, viewportContents }) => { 'border border-secondary-light': !isActive, } )} + onClick={() => { + setActiveViewportIndex(index); + }} > {viewportContent} diff --git a/platform/ui/src/views/Viewer/Viewer.mdx b/platform/ui/src/views/Viewer/Viewer.mdx index ea17e8e04..28cdc6825 100644 --- a/platform/ui/src/views/Viewer/Viewer.mdx +++ b/platform/ui/src/views/Viewer/Viewer.mdx @@ -80,11 +80,15 @@ import { tabs } from './studyBrowserMockData'; viewportContents={[ {}} + onSeriesChange={(direction) => alert(`Series ${direction}`)} studyData={{ - isTracked: false, - studyDate: '07-Sep-2010', + label: 'A', + isTracked: true, + isLocked: false, + studyDate: '07-Sep-2011', currentSeries: 1, + seriesDescription: + 'Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit ', modality: 'CT', patientInformation: { patientName: 'Smith, Jane', @@ -96,27 +100,38 @@ import { tabs } from './studyBrowserMockData'; scanner: 'Aquilion', }, }} - isTracked={false} - activeViewportIndex={activeViewportIndex} - />, + > +
+ CONTENT +
+
, {}} + onSeriesChange={(direction) => alert(`Series ${direction}`)} studyData={{ + label: 'A', isTracked: false, + isLocked: true, studyDate: '07-Sep-2010', - currentSeries: 1, - modality: 'CT', + currentSeries: 2, + seriesDescription: + 'Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit Series description lorem ipsum dolor sit ', + modality: 'SR', patientInformation: { patientName: 'Smith, Jane', patientSex: 'F', patientAge: '59', MRN: '10000001', + thickness: '2.0mm', + spacing: '1.25mm', + scanner: 'Aquilion', }, }} - isTracked={false} - activeViewportIndex={activeViewportIndex} - />, + > +
+ CONTENT +
+
, ]} setActiveViewportIndex={setActiveViewportIndex} activeViewportIndex={activeViewportIndex} diff --git a/platform/ui/src/views/Viewer/components/ViewportToolBar.js b/platform/ui/src/views/Viewer/components/ViewportToolBar.js index a2fa1c436..30b18e98f 100644 --- a/platform/ui/src/views/Viewer/components/ViewportToolBar.js +++ b/platform/ui/src/views/Viewer/components/ViewportToolBar.js @@ -1,5 +1,4 @@ -import React, { useState } from 'react'; -import classnames from 'classnames'; +import React from 'react'; import { Toolbar } from '@ohif/ui';