Skip to content
Snippets Groups Projects
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;