import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { StudiesList } from './StudiesList.js'; import { ScrollableArea } from './../../ScrollableArea/ScrollableArea.js'; import { SeriesList } from './SeriesList.js'; import './QuickSwitch.styl'; export class QuickSwitch extends Component { static propTypes = { side: PropTypes.string, studyListData: PropTypes.array.isRequired, onSeriesSelected: PropTypes.func.isRequired, seriesListData: PropTypes.array, onStudySelected: PropTypes.func, activeStudyInstanceUid: PropTypes.string, activeDisplaySetInstanceUid: PropTypes.string, }; constructor(props) { super(props); this.state = { seriesQuickSwitchOpen: false, sideClass: this.props.side || '', activeStudyInstanceUid: this.props.activeStudyInstanceUid, activeDisplaySetInstanceUid: this.props.activeDisplaySetInstanceUid, }; } componentDidUpdate(prevProps) { const props = this.props; if (props.activeStudyInstanceUid !== prevProps.activeStudyInstanceUid) { this.setState({ activeStudyInstanceUid: props.activeStudyInstanceUid, }); } if ( props.activeDisplaySetInstanceUid !== prevProps.activeDisplaySetInstanceUid ) { this.setState({ activeDisplaySetInstanceUid: props.activeDisplaySetInstanceUid, }); } } render() { const quickSwitchClass = this.state.seriesQuickSwitchOpen ? 'series-triggered' : ''; return (
Series
{this.getSmallListItems()}
Study
); } getSeriesItems = () => { let seriesListData; if (this.props.seriesListData) { seriesListData = this.props.seriesListData; } else if (this.state.activeStudyInstanceUid) { const study = this.props.studyListData.find( study => study.studyInstanceUid === this.state.activeStudyInstanceUid ); seriesListData = study.thumbnails; } else { seriesListData = this.props.studyListData[0].thumbnails; } return seriesListData || []; }; getSmallListItems = () => { const seriesItems = this.getSeriesItems() || []; return seriesItems.map((seriesData, index) => { const active = seriesData.displaySetInstanceUid === this.state.activeDisplaySetInstanceUid; return (
); }); }; onStudyClick = studyDataSelected => { if (this.props.onStudySelected) { this.props.onStudySelected(studyDataSelected); } this.setState({ activeStudyInstanceUid: studyDataSelected.studyInstanceUid, seriesQuickSwitchOpen: true, }); }; onSeriesClick = seriesDataSelected => { this.setState({ activeDisplaySetInstanceUid: seriesDataSelected.displaySetInstanceUid, }); this.props.onSeriesSelected(seriesDataSelected); }; showSeriesSwitch = () => { this.setState({ seriesQuickSwitchOpen: true, }); }; hideSeriesSwitch = () => { this.setState({ seriesQuickSwitchOpen: false, }); }; }