From 1f26015bad4cb1579df4baeba2ad0e28b6255170 Mon Sep 17 00:00:00 2001 From: "Kayashov.SM" Date: Sat, 27 Dec 2025 16:16:48 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BA=D0=BE=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B1=D0=B0=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front/src/app/pages/BarChangePage.js | 50 ++++++++++++++++++-------- front/src/components/BarCreateModal.js | 10 ++++-- front/src/lib/clients/BarClient.js | 11 ++++++ 3 files changed, 53 insertions(+), 18 deletions(-) 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