import {Box, Card, CardContent, Chip, Grid, IconButton, LinearProgress, Tooltip, Typography} from "@mui/material"; import EmailIcon from '@mui/icons-material/Email'; import LocalPhoneIcon from '@mui/icons-material/LocalPhone'; import ReceiptIcon from '@mui/icons-material/Receipt'; import DoneAllIcon from '@mui/icons-material/DoneAll'; import Divider from '@mui/material/Divider'; import {useState} from "react"; import {useUpdateReportTodo} from "../../hooks/useReportTodo.jsx"; const icons = { SENT_EMAIL: , MAKE_PHONE_CALL: , INVOICE_SEND: , COMPLETE: }; const MyButton = function (prop) { const { name, isActive, clickTodos } = prop; return ( clickTodos(name)} color={isActive(name) ? "success" : "default"} > {icons[name]} ); } function LinearProgressWithLabel(props) { return ( {`${Math.round(props.value)}%`} ); } function Item(prop) { const { row, rowid } = prop; const [active,setActive] = useState(); const updateTodo = useUpdateReportTodo(6, rowid); const isActive = (item) => { if (typeof active === "undefined" && row.reportsTodos.length > 0) { for (let repoElement of row.reportsTodos) { if (repoElement['nameString'] === item){ if (!repoElement.deleted) { setActive((prev) => ({ ...prev, [item]: true })) } return !repoElement.deleted; } } } return typeof active !== "undefined" && typeof active[item] !== "undefined" && active[item]; } const takeTodoRow = (item) => { let ret = null; if (row.reportsTodos.length > 0) { for (let repoElement of row.reportsTodos) { if (repoElement['nameString'] === item){ ret = repoElement; break; } } } return ret; } const clickTodos = async (item) => { const val = !isActive(item) ? item : !item; const todoObj = takeTodoRow(item); const todoId = (todoObj === null) ? 0 : todoObj.id; await updateTodo.mutateAsync({ reportId: row.id, todoName: item, todoId: todoId }); setActive((prev) => ({ ...prev, [item]: val, })); }; const countProgress = () => { let count = 0; Object.entries(icons).map(([name]) => { if (isActive(name)){ count++; } }) return count / 4 * 100; } return ( {row.client.strName} {Object.entries(icons).map(([name]) => ( ))} ); } export default Item;