diff --git a/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx b/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx index f597035..0000b44 100644 --- a/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx +++ b/src/Components/LoggedIn/Content/Tariffs/DataGridElement/index.tsx @@ -1,9 +1,17 @@ import * as React from "react"; -import { Box, Button } from "@mui/material"; +import { Box, Button, Typography } from "@mui/material"; import { DataGrid, GridColDef, GridSelectionModel, GridToolbar } from "@mui/x-data-grid"; import { useDemoData } from "@mui/x-data-grid-generator"; import useStore, { StoreState } from "../../../../../store"; import { ArrayProps } from "../types"; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemAvatar from '@mui/material/ListItemAvatar'; +import Avatar from '@mui/material/Avatar'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import ListItemText from '@mui/material/ListItemText'; +import IconButton from '@mui/material/IconButton'; +import DeleteIcon from '@mui/icons-material/Delete'; import theme from "../../../../../theme"; @@ -70,6 +78,9 @@ const rows = [ //localStorage.setItem("tariffs", JSON.stringify(rows)); const DataGridElement: React.FC = ({ openModal }) => { + let price = 0; + let prices = 0; + const { data } = useDemoData({ dataSet: "Commodity", rowLength: 10, @@ -95,7 +106,9 @@ const DataGridElement: React.FC = ({ openModal }) => { } } ); - let { selectedRowsData, selectedRowsDataSet } = useStore((state) => state); + localStorage.setItem("tariffs", JSON.stringify(tariffsArray)); + + const { selectedRowsData, selectedRowsDataSet } = useStore((state) => state); const onRowsSelectionHandler = ( ids:GridSelectionModel ) => { const result:Array = []; ids.forEach((id) => tariffsArray.forEach( (row) => { @@ -105,6 +118,16 @@ const DataGridElement: React.FC = ({ openModal }) => { selectedRowsDataSet( result ); }; + const { cartRowsData, cartRowsDataSet } = useStore((state) => state); + const handleToBasket = () => { + cartRowsDataSet( selectedRowsData ); + } + + const handleRemoveBasket = ( id:number ) => { + const cartFiltered = cartRowsData.filter( (row) => row.id != id ); + cartRowsDataSet( cartFiltered ); + } + return ( @@ -153,14 +176,123 @@ const DataGridElement: React.FC = ({ openModal }) => { height: "42px", fontWeight: "normal", fontSize: "17px", - marginTop: "25px", - marginBottom: "25px", + marginTop: "45px", + marginBottom: "15px", "&:hover": { backgroundColor: theme.palette.grayMedium.main } }}> Пакетизировать + + + + + + + Корзина + + + + + + + + + + + + + + + + + { cartRowsData.map( (item) => { + if( item.type == "package" ) { + price = 0; + + if( item.tariffs ) { + item.tariffs.forEach( (tariff) => { + price += tariff.price; + } ); + } + } else { + price = item.price; + } + + prices += price; + + return( + + + + + + + + + handleRemoveBasket( item.id ) }> + + + + ) + } ) } + + + ИТОГО:   { prices } ₽ + + + + diff --git a/src/Components/LoggedIn/Content/Tariffs/index.tsx b/src/Components/LoggedIn/Content/Tariffs/index.tsx index b608b00..35c46b0 100644 --- a/src/Components/LoggedIn/Content/Tariffs/index.tsx +++ b/src/Components/LoggedIn/Content/Tariffs/index.tsx @@ -7,7 +7,7 @@ import DataGridElement from "./DataGridElement"; import ModalMini from "./ModalMini"; import ModalPackage from "./ModalPackage"; import { ArrayProps, Tariff } from "./types"; -import useStore from "../../../../store"; +import useStore, { StoreState } from "../../../../store"; import theme from "../../../../theme"; diff --git a/src/store.ts b/src/store.ts index 5d5902c..3e4ff16 100644 --- a/src/store.ts +++ b/src/store.ts @@ -7,7 +7,10 @@ const useStore = create((set) => ({ tariffsArraySet: (array) => set({ tariffsArray: array }), selectedRowsData: [], - selectedRowsDataSet: (array) => set({ selectedRowsData: array }) + selectedRowsDataSet: (array) => set({ selectedRowsData: array }), + + cartRowsData: [], + cartRowsDataSet: (array) => set({ cartRowsData: array }) })) export interface StoreState { @@ -15,7 +18,10 @@ export interface StoreState { tariffsArraySet: (array:Array) => void, selectedRowsData: Array, - selectedRowsDataSet: (array:Array) => void + selectedRowsDataSet: (array:Array) => void, + + cartRowsData: Array, + cartRowsDataSet: (array:Array) => void }