-
fcrisafulli-dev authoredfcrisafulli-dev authored
collection_list.js 3.88 KiB
import React, { useState, useEffect } from 'react'
import {dbCreateCollection, dbGetCollection} from './database_util'
//General MUI imports
import Box from '@mui/material/Box';
import Button from '@mui/material/Button';
import CircularProgress from '@mui/material/CircularProgress';
import Backdrop from '@mui/material/Backdrop';
import TextField from '@mui/material/TextField';
//Dialog Imports
import Dialog from '@mui/material/Dialog';
import DialogTitle from '@mui/material/DialogTitle';
import DialogContent from '@mui/material/DialogContent';
import DialogActions from '@mui/material/DialogActions';
//icon
import LayersIcon from '@mui/icons-material/Layers';
import AddIcon from '@mui/icons-material/Add';
//List Imports
import List from '@mui/material/List';
import ListItemButton from '@mui/material/ListItemButton';
import ListItemIcon from '@mui/material/ListItemIcon';
import ListItemText from '@mui/material/ListItemText';
import Divider from '@mui/material/Divider';
import ListItem from '@mui/material/ListItem';
const CollectionList = (props) => {
const [open, setOpen] = React.useState(false);
const [newCollectionName, setNewCollectionName] = React.useState("false");
const handleClose = () => {
setOpen(false);
};
const handleOpen = () => {
setNewCollectionName("");
setOpen(true);
};
const handleSubmit = async (e) => {
e.preventDefault();
let id = await dbCreateCollection(newCollectionName);
let detailCollection = await dbGetCollection(id);
console.log("handleSubmit",newCollectionName, id, detailCollection);
props.onSelectCollection(detailCollection)
handleClose();
};
const handleSelect = async (id) => {
let detailCollection = await dbGetCollection(id);
props.onSelectCollection(detailCollection);
}
return (
<Box sx={{
"boxShadow":3
}}>
<List>
<ListItem disablePadding key={999}>
<ListItemButton onClick={handleOpen}>
<ListItemIcon>
<AddIcon/>
</ListItemIcon>
<ListItemText primary={"Create New Collection"}/>
</ListItemButton>
</ListItem>
<Divider />
{
props.collections.map(
(c) => (
<ListItem disablePadding key={c["collection_id"]}>
<ListItemButton onClick={() => handleSelect(c["collection_id"])}>
<ListItemIcon>
<LayersIcon />
</ListItemIcon>
<ListItemText primary={c["collection_name"]} secondary={c["collection_id"]}/>
</ListItemButton>
</ListItem>
)
)
}
</List>
<Dialog
open={open}
onClose={handleClose}
PaperProps={{
component:"form",
onSubmit: handleSubmit
}}
>
<DialogTitle>Create New Collection</DialogTitle>
<DialogContent>
<br/>
<TextField label="Collection Name" variant="outlined" required value={newCollectionName} onChange={(e)=> {setNewCollectionName(e.target.value)}}/>
<br/>
</DialogContent>
<DialogActions>
<Button type="submit">Create</Button>
<Button onClick={handleClose}>Cancel</Button>
</DialogActions>
</Dialog>
</Box>
);
}
export default CollectionList;