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';