import { Avatar, Box, Card, Drawer, Grid2 as Grid, IconButton, ListItemIcon, ListItemText, Menu, MenuItem, Slider, Theme, Tooltip, Typography } from "@mui/material"; import { Done, Edit, MoreVert } from "@mui/icons-material"; import DisplayDrawer from "common/DisplayDrawer"; import { Task } from "models"; import { useEffect, useState } from "react"; import NotesIcon from "@mui/icons-material/Notes"; import DeleteIcon from "@mui/icons-material/Delete"; import Chat from "chat/Chat"; import { pond } from "protobuf-ts/pond"; import { useMobile, usePermissionAPI, useUserAPI } from "hooks"; import { getThemeType } from "theme"; import { makeStyles } from "@mui/styles"; import ObjectTeamsIcon from "@mui/icons-material/SupervisedUserCircle"; import TaskActions from "./taskActions"; import { useGlobalState } from "providers"; interface Props { task: Task; open: boolean; closeCallback: (refresh: boolean) => void; deleteTask: (task: Task) => void; completeTask: (task: Task) => void; keys: string[] types: string[] } // interface TabPanelProps { // children?: React.ReactNode; // index: any; // value: any; // } const useStyles = makeStyles((theme: Theme) => ({ avatar: { color: getThemeType() === "light" ? theme.palette.common.black : theme.palette.common.white, backgroundColor: "transparent", width: theme.spacing(5), height: theme.spacing(5), border: "1px solid", borderColor: theme.palette.divider }, sliderRoot: {}, sliderThumb: { height: 15, width: 15, marginTop: 0, marginLeft: 0, backgroundColor: "yellow" }, sliderTrack: { height: 3, backgroundColor: "white" }, sliderRail: { height: 3, backgroundColor: "white" }, sliderValLabel: { left: -20, top: 40, background: "transparent", "& *": { color: "#fff" } }, sliderMark: { visibility: "hidden" }, sliderMarked: { marginTop: 25, marginBottom: 0 }, sliderMarkLabel: { top: -25, left: -10 } }) ); export default function TaskDrawer(props: Props) { const monthList = [ "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec" ]; const { task, open, closeCallback, completeTask, deleteTask } = props; const [month, setMonth] = useState(0); const [day, setDay] = useState(0); const [permissions, setPermissions] = useState([]) const [{user}] = useGlobalState(); // const [menuAnchorEl, setMenuAnchorEl] = useState(null); const [openNote, setOpenNote] = useState(false); const isMobile = useMobile(); const classes = useStyles(); const userAPI = useUserAPI(); const permissionAPI = usePermissionAPI(); const [worker, setWorker] = useState(); useEffect(() => { permissionAPI.getPermissions(user.id(), props.keys, props.types).then(resp => { setPermissions(pond.EvaluatePermissionsResponse.fromObject(resp.data).permissions) }) if (task.start()) { let date = new Date(task.start()); setMonth(date.getUTCMonth()); setDay(date.getUTCDate()); } userAPI.getProfile(task.worker()).then(resp => { setWorker(resp); }); }, [user, task, userAPI, permissionAPI]); const bodyButtons = () => { return ( setOpenNote(true)}> 3 {/** go to bin/field */} completeTask(task)}> {/* setMenuAnchorEl(event.currentTarget)}> */} completeTask(t)} permissions={permissions} task={task} removeTask={deleteTask} refreshCallback={() => { closeCallback(true) }} keys={props.keys} types={props.types} /> ); }; const noteDrawer = () => { return ( setOpenNote(false)}> Notes ); }; const taskCard = () => { return ( {monthList[month]} {day} {task.title()} {task.description()} ); }; const taskTime = () => { let start = task ? new Date(task.start() + "T" + task.startTime()).valueOf() : new Date().valueOf(); let end = task ? new Date(task.end() + "T" + task.endTime()).valueOf() : new Date().valueOf(); return ( {task.start()} {task.startTime()} {task.end()} {task.endTime()} ); }; const assignees = () => { return ( Assigned To: {/* TODO: change this to get the user and display the user name and avatar */} {worker && ( {worker.name} )} ); }; const drawerBody = () => { return ( {bodyButtons()} {taskCard()} {taskTime()} {assignees()} {/* {taskActions()} */} {noteDrawer()} ); }; return ( {}} displayPrev={() => {}} drawerBody={drawerBody()} onClose={() => { closeCallback(false)} } open={open} /> ); }