frontend/app/browse/BrowseSummaryDisplay.tsx (79 lines of code) (raw):
import React from "react";
import {Grid, IconButton, makeStyles, Tooltip, Typography} from "@material-ui/core";
import clsx from "clsx";
import {HomeRounded, Storage, WarningRounded} from "@material-ui/icons";
import PathDisplayComponent from "./PathDisplayComponent";
import RefreshButton from "../common/RefreshButton";
import BytesFormatter from "../common/BytesFormatter";
import BulkLightboxAdd from "./BulkLightboxAdd";
import {StylesMap} from "../types";
import {baseStyles} from "../BaseStyles";
interface BrowseSummaryDisplayProps {
goToRootCb:()=>void;
collectionName?:string;
path?:string;
parentIsLoading:boolean;
refreshCb:()=>void;
totalHits:number;
totalSize:number;
}
const useStyles = makeStyles((theme)=>(Object.assign({
summaryIcon: {
marginRight: "0.1em",
verticalAlign: "bottom"
},
collectionNameText: {
fontWeight: "bold"
},
summaryBoxElement: {
marginTop: "auto",
marginBottom: "auto",
marginLeft: "1em"
},
warningIcon: {
color: theme.palette.warning.dark
}
} as StylesMap, baseStyles)));
/**
* This component abstracts the display layout for the BrowseSummary element, so it can be re-used with slightly
* different elements between the deleted items admin view and the archive browse view
* @param props
* @constructor
*/
const BrowseSummaryDisplay:React.FC<BrowseSummaryDisplayProps> = (props) =>{
const classes = useStyles();
return <div className="browse-path-summary">
<Grid container direction="column" alignContent="center" justify="center">
<Grid item className={clsx(classes.summaryBoxElement,classes.centered)}>
<Grid container direction="row" justify="center" alignContent="space-around" alignItems="center">
{props.path ?
<Grid item>
<IconButton onClick={props.goToRootCb}>
<HomeRounded/>
</IconButton>
</Grid> : null
}
{props.collectionName ? <Grid item>
<Typography className={classes.collectionNameText}>
<Storage className={classes.summaryIcon}/>
{props.collectionName}
</Typography>
</Grid> : null
}
</Grid>
{
props.path ? <Grid item className={classes.summaryBoxElement}>
<PathDisplayComponent path={props.path}/>
</Grid> : null
}
</Grid>
<Grid item>
<Grid container direction="row" spacing={1} alignItems="center" >
<Grid item>
<RefreshButton isRunning={props.parentIsLoading}
clickedCb={props.refreshCb}/>
</Grid>
<Grid item>
<Typography>Total of {props.totalHits} items occupying <BytesFormatter value={props.totalSize}/></Typography>
</Grid>
{
props.children
}
</Grid>
</Grid>
</Grid>
</div>
}
export default BrowseSummaryDisplay;