diff --git a/front/src/app/pages/BarChangePage.js b/front/src/app/pages/BarChangePage.js index 190f655..1536679 100644 --- a/front/src/app/pages/BarChangePage.js +++ b/front/src/app/pages/BarChangePage.js @@ -12,23 +12,34 @@ import Toolbar from "@mui/material/Toolbar"; import AddCircleIcon from '@mui/icons-material/AddCircle'; import {BarCreateModal} from "../../components/BarCreateModal"; import PowerIcon from '@mui/icons-material/Power'; +import ContentCopyIcon from '@mui/icons-material/ContentCopy'; import {barClient} from "../../lib/clients/BarClient"; export function BarChangePage() { const [bars, setBars] = useState([]) const [open, setOpen] = useState(false) - const {createError, createSuccess, createWarning} = useAlert(); + const [oldId, setOldId] = useState(null); + const {createError, createSuccess, createWarning, notImplement} = useAlert(); - const createHandler = (name) => barClient.createBar(name, bars, createSuccess, createError, setBars, setOpen) + const createHandler = (id, name) => { + if (id) { + barClient.copyBar(id, name, setBars, bars, createError, createSuccess, setOpen) + } else { + barClient.createBar(name, bars, createSuccess, createError, setBars, setOpen) + } + } useEffect(() => barClient.getBarList(setBars, createError), []); return (<> - + Списки ингредиентов (бары) - setOpen(true)}> + { + setOldId(null); + setOpen(true); + }}> @@ -36,18 +47,27 @@ export function BarChangePage() { return {b.name} - {b.active && - - } - {!b.active && - barClient.deleteBar(b, bars, createError, createSuccess, setBars)}> - + + { + setOldId(b.id) + setOpen(true); + }}> + - barClient.changeBar(b.id, bars, createWarning, createSuccess, createError, setBars)}> - - - } + {b.active && + + } + {!b.active && <> + barClient.deleteBar(b, bars, createError, createSuccess, setBars)}> + + + barClient.changeBar(b.id, bars, createWarning, createSuccess, createError, setBars)}> + + + } + })} diff --git a/front/src/components/BarCreateModal.js b/front/src/components/BarCreateModal.js index 3dd70f7..2746fe2 100644 --- a/front/src/components/BarCreateModal.js +++ b/front/src/components/BarCreateModal.js @@ -8,7 +8,7 @@ import DialogActions from "@mui/material/DialogActions"; import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; -export function BarCreateModal({open, setOpen, create}) { +export function BarCreateModal({open, setOpen, create, id}) { const [value, setValue] = useState(""); return ( + Название списка} variant='outlined' value={!value ? "" : value} onChange={(e) => setValue(e.target.value)} /> - + ) diff --git a/front/src/lib/clients/BarClient.js b/front/src/lib/clients/BarClient.js index c13a669..859bdfe 100644 --- a/front/src/lib/clients/BarClient.js +++ b/front/src/lib/clients/BarClient.js @@ -58,6 +58,17 @@ class BarClient { setOpen(false) }).catch(() => createError("Ошибка создания списка")) } + + copyBar(oldId, newName, setBars, bars, createError, createSuccess, setOpen) { + api().post(requests.bar.crud + "copy/" + oldId + "/" + newName) + .then((r) => { + const state = bars; + state.push(r.data) + setBars(state); + createSuccess("Бар скопирован") + setOpen(false) + }).catch(() => createError("Ошибка при копировании бара")) + } } export const barClient = new BarClient(); \ No newline at end of file