bubble up thumbnail "untrack" clicks to parent "StudyBrowser" component w/ prop drilling

This commit is contained in:
dannyrb 2020-06-07 12:08:50 -04:00
parent 0573cb18e6
commit ffbf7b4a76
5 changed files with 32 additions and 24 deletions

View File

@ -50,9 +50,6 @@ function PanelStudyBrowserTracking({
StudyInstanceUID, StudyInstanceUID,
SeriesInstanceUID, SeriesInstanceUID,
}); });
console.log('PANEL:', measurement);
// console.log('Mapped:', annotation);
} }
); );
@ -159,7 +156,7 @@ function PanelStudyBrowserTracking({
changedDisplaySets, changedDisplaySets,
thumbnailImageSrcMap, thumbnailImageSrcMap,
trackedSeries, trackedSeries,
viewports, viewports
); );
setDisplaySets(mappedDisplaySets); setDisplaySets(mappedDisplaySets);
@ -214,6 +211,9 @@ function PanelStudyBrowserTracking({
onClickTab={clickedTabName => { onClickTab={clickedTabName => {
setActiveTabName(clickedTabName); setActiveTabName(clickedTabName);
}} }}
onClickUntrack={displaySetInstanceUID =>
console.log(displaySetInstanceUID)
}
/> />
); );
} }

View File

@ -40,11 +40,3 @@
.invisible-scrollbar::-webkit-scrollbar-thumb:window-inactive { .invisible-scrollbar::-webkit-scrollbar-thumb:window-inactive {
@apply hidden; @apply hidden;
} }
.showExcludeButtonOnHover .excludeButton {
display: none;
}
.showExcludeButtonOnHover:hover .excludeButton {
display: block;
}

View File

@ -25,6 +25,7 @@ const StudyBrowser = ({
onClickTab, onClickTab,
onClickStudy, onClickStudy,
onClickThumbnail, onClickThumbnail,
onClickUntrack,
}) => { }) => {
const [thumbnailActive, setThumbnailActive] = useState(null); const [thumbnailActive, setThumbnailActive] = useState(null);
@ -58,15 +59,16 @@ const StudyBrowser = ({
<ThumbnailList <ThumbnailList
thumbnails={displaySets} thumbnails={displaySets}
thumbnailActive={thumbnailActive} thumbnailActive={thumbnailActive}
onThumbnailClick={thumbnailId => { onThumbnailClick={displaySetInstanceUID => {
setThumbnailActive( setThumbnailActive(
thumbnailId === thumbnailActive ? null : thumbnailId displaySetInstanceUID === thumbnailActive
? null
: displaySetInstanceUID
); );
onClickThumbnail(displaySetInstanceUID);
if (onClickThumbnail) { }}
// TODO: what is thumbnailId? Should pass display set instead onClickUntrack={displaySetInstanceUID => {
onClickThumbnail(thumbnailId); onClickUntrack(displaySetInstanceUID);
}
}} }}
/> />
)} )}
@ -116,6 +118,7 @@ StudyBrowser.propTypes = {
onClickTab: PropTypes.func.isRequired, onClickTab: PropTypes.func.isRequired,
onClickStudy: PropTypes.func, onClickStudy: PropTypes.func,
onClickThumbnail: PropTypes.func, onClickThumbnail: PropTypes.func,
onClickUntrack: PropTypes.func,
activeTabName: PropTypes.string.isRequired, activeTabName: PropTypes.string.isRequired,
expandedStudyInstanceUIDs: PropTypes.arrayOf(PropTypes.string).isRequired, expandedStudyInstanceUIDs: PropTypes.arrayOf(PropTypes.string).isRequired,
tabs: PropTypes.arrayOf( tabs: PropTypes.arrayOf(
@ -164,4 +167,13 @@ StudyBrowser.propTypes = {
), ),
}; };
const noop = () => {};
StudyBrowser.defaultProps = {
onClickTab: noop,
onClickStudy: noop,
onClickThumbnail: noop,
onClickUntrack: noop,
};
export default StudyBrowser; export default StudyBrowser;

View File

@ -7,6 +7,7 @@ const ThumbnailList = ({
thumbnails, thumbnails,
thumbnailActive, thumbnailActive,
onThumbnailClick, onThumbnailClick,
onClickUntrack,
}) => { }) => {
return ( return (
<div className="py-3 bg-black"> <div className="py-3 bg-black">
@ -57,6 +58,7 @@ const ThumbnailList = ({
isTracked={isTracked} isTracked={isTracked}
isActive={isActive} isActive={isActive}
onClick={() => onThumbnailClick(displaySetInstanceUID)} onClick={() => onThumbnailClick(displaySetInstanceUID)}
onClickUntrack={() => onClickUntrack(displaySetInstanceUID)}
/> />
); );
case 'thumbnailNoImage': case 'thumbnailNoImage':
@ -111,6 +113,7 @@ ThumbnailList.propTypes = {
), ),
thumbnailActive: PropTypes.string, thumbnailActive: PropTypes.string,
onThumbnailClick: PropTypes.func, onThumbnailClick: PropTypes.func,
onClickUntrack: PropTypes.func.isRequired,
}; };
export default ThumbnailList; export default ThumbnailList;

View File

@ -13,6 +13,7 @@ const ThumbnailTracked = ({
numInstances, numInstances,
dragData, dragData,
onClick, onClick,
onClickUntrack,
viewportIdentificator, viewportIdentificator,
isTracked, isTracked,
isActive, isActive,
@ -22,7 +23,7 @@ const ThumbnailTracked = ({
return ( return (
<div <div
className={classnames( className={classnames(
'flex flex-row flex-1 px-3 py-2 showExcludeButtonOnHover cursor-pointer outline-none', 'flex flex-row flex-1 px-3 py-2 cursor-pointer outline-none',
className className
)} )}
> >
@ -63,10 +64,9 @@ const ThumbnailTracked = ({
</Tooltip> </Tooltip>
</div> </div>
{isTracked && ( {isTracked && (
<Icon <div onClick={onClickUntrack}>
name="cancel" <Icon name="cancel" className="w-4 text-primary-active" />
className="w-4 text-primary-active excludeButton" </div>
/>
)} )}
</div> </div>
<Thumbnail <Thumbnail
@ -102,6 +102,7 @@ ThumbnailTracked.propTypes = {
seriesNumber: PropTypes.number.isRequired, seriesNumber: PropTypes.number.isRequired,
numInstances: PropTypes.number.isRequired, numInstances: PropTypes.number.isRequired,
onClick: PropTypes.func.isRequired, onClick: PropTypes.func.isRequired,
onClickUntrack: PropTypes.func.isRequired,
viewportIdentificator: PropTypes.string, viewportIdentificator: PropTypes.string,
isTracked: PropTypes.bool, isTracked: PropTypes.bool,
isActive: PropTypes.bool.isRequired, isActive: PropTypes.bool.isRequired,