in src/components/View/ControlsToolbar.js [109:248]
function ControlsToolbar(props) {
const classes = useToolbarStyle();
const [bucketHierarchy, setHierarchy] = useState([]);
const [viewLayout, setViewLayout] = useState('table');
const hierarchyLen = bucketHierarchy.length;
const bucketName = useSelector(state => state.mapsConfig.bucket);
const selectedPrefix = useSelector(state => state.mapsConfig.prefix);
const userGroups = useSelector(state => state.userConfig.userGroups);
const {
prefixChangeHandler,
viewLayoutChangeHandler,
selectedMediaAssets,
unselectAssetHandler,
alertHandler,
folderHandler,
searchHandler
} = props;
const [open, setOpen] = useState(false);
const [folderOpen, setFolderOpen] = useState(false);
const [folderSelected, isFolderSelected] = useState(false);
const handleHierarchyChange = (event, prefix) => {
event.preventDefault();
const idx = bucketHierarchy.findIndex((val) => {
return val.key === prefix;
});
if (idx > -1) {
bucketHierarchy.splice(idx, hierarchyLen+1);
setHierarchy(bucketHierarchy);
} else {
setHierarchy([]);
}
prefixChangeHandler(event, prefix);
}
useEffect(() => {
let tempHierarchy = [];
const subPrefix = selectedPrefix.split('/').slice(0, -1);
let idx = 0;
for (idx=0; idx<subPrefix.length; idx++) {
var n = selectedPrefix.indexOf(subPrefix[idx]);
var prefixObj = {
"displayName": subPrefix[idx],
"key": selectedPrefix.substr(0, n+subPrefix[idx].length+1)
};
tempHierarchy.push(prefixObj);
}
setHierarchy(tempHierarchy);
}, [selectedPrefix]);
// HANDLERS //
const handleViewLayoutChange = (event, newViewLayout) => {
setViewLayout(newViewLayout);
viewLayoutChangeHandler(newViewLayout);
};
const handleCheckoutClick = () => {
console.log('Handle file check out');
const numSelected = selectedMediaAssets.length;
if ( numSelected <= 0) {
alertHandler('error', 'Error', ['No assets selected to download.']);
} else {
for (let i=0; i<numSelected; i++) {
console.log(selectedMediaAssets[i]);
assetAPI.CheckOutObjectRequest(bucketName, selectedMediaAssets[i].key, false, alertHandler);
}
}
unselectAssetHandler();
};
const handleClose = () => {
setOpen(false);
unselectAssetHandler();
};
const handleFolderClose = () => {
setFolderOpen(false);
};
const handleCheckinClick = (event) => {
event.preventDefault();
console.log('Handle file check in');
setOpen(true);
};
const handleDeleteClick = () => {
console.log('Handle delete click');
const numSelected = selectedMediaAssets.length;
console.log(numSelected);
if ( numSelected <= 0) {
alertHandler('error', 'Error', ['No assets selected to delete.']);
} else {
for (let i=0; i<numSelected; i++) {
console.log(selectedMediaAssets[i]);
assetAPI.DeleteObjectRequest(bucketName, selectedMediaAssets[i].key, alertHandler);
}
}
unselectAssetHandler();
};
const handleNewFileClick = (event) => {
event.preventDefault();
console.log('Handle new file click');
setOpen(true);
};
const handleNewFolderClick = (event) => {
event.preventDefault();
console.log('Handle new folder click');
setFolderOpen(true);
};
const handleSearch = (event) => {
searchHandler(event.target.value);
};
return (
<>
<AppBar className={classes.appBar} position='static'>
<Toolbar className={classes.toolBar}>
<section className={classes.leftToolbarControls}>
<ToggleButtonGroup
value={viewLayout}
exclusive
onChange={handleViewLayoutChange}
aria-label="text alignment"
style={{backgroundColor: "#ffffff"}}
>
<ToggleButton value="card" aria-label="left aligned">
<ViewModuleIcon />
</ToggleButton>
<ToggleButton value="table" aria-label="centered">
<ViewListIcon />
</ToggleButton>
</ToggleButtonGroup>
<Breadcrumbs className={classes.breadcrumbs} maxItems={3} aria-label="breadcrumb">
<Chip className={classes.breadcrumbLink} href='/' label={bucketName} onClick={event => handleHierarchyChange(event, '')} style={{visibility: bucketName !== '' ? 'visible' : 'hidden'}} />