From cc8232c2777a7eb15d99073289f1a40291f901fb Mon Sep 17 00:00:00 2001 From: DewanaGustavus <76590469+DewanaGustavus@users.noreply.github.com> Date: Wed, 15 Nov 2023 23:57:10 +0700 Subject: [PATCH] feat: picked order detail page --- src/App.tsx | 2 + src/interfaces/PickedOrderDetailInterface.ts | 9 ++ src/pages/AvailableOrderDetail.tsx | 1 - src/pages/PickedOrderDetail.tsx | 155 ++++++++++++++++++- 4 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 src/interfaces/PickedOrderDetailInterface.ts diff --git a/src/App.tsx b/src/App.tsx index a057fb9..f784d87 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -9,6 +9,7 @@ import Balance from './pages/Balance' import AvailableOrder from './pages/AvailableOrder' import AvailableOrderDetail from './pages/AvailableOrderDetail' import PickedOrder from './pages/PickedOrder' +import PickedOrderDetail from './pages/PickedOrderDetail' function App() { @@ -22,6 +23,7 @@ function App() { <Route path='/AvailableOrder' element={<AvailableOrder/>}/> <Route path='/AvailableOrderDetail' element={<AvailableOrderDetail/>}/> <Route path='/PickedOrder' element={<PickedOrder/>}/> + <Route path='/PickedOrderDetail' element={<PickedOrderDetail/>}/> <Route path='/Logout' element={<Logout/>}/> <Route path='*' element={<NotFound/>}/> </Routes> diff --git a/src/interfaces/PickedOrderDetailInterface.ts b/src/interfaces/PickedOrderDetailInterface.ts new file mode 100644 index 0000000..fd6fd98 --- /dev/null +++ b/src/interfaces/PickedOrderDetailInterface.ts @@ -0,0 +1,9 @@ +import OrderDetail from "./OrderDetail" + +export default interface PickedOrderDetailInterface { + address : string + customerName : string + salary : number + description : string + orderDetails : OrderDetail[]; +} diff --git a/src/pages/AvailableOrderDetail.tsx b/src/pages/AvailableOrderDetail.tsx index ce1d5f2..59d9f3e 100644 --- a/src/pages/AvailableOrderDetail.tsx +++ b/src/pages/AvailableOrderDetail.tsx @@ -112,7 +112,6 @@ const dummyData : AvailableOrderDetailInterface = { > Ambil Order </Button> - {/* TODO : table */} </Stack> </Stack> </Box> diff --git a/src/pages/PickedOrderDetail.tsx b/src/pages/PickedOrderDetail.tsx index 6e698ac..b74b5c9 100644 --- a/src/pages/PickedOrderDetail.tsx +++ b/src/pages/PickedOrderDetail.tsx @@ -1 +1,154 @@ -// TODO : +import { + Box, + Button, + FormControl, + FormLabel, + Heading, + Input, + Stack, + StackDivider, + Table, + TableContainer, + Tbody, + Td, + Text, + Th, + Thead, + Tr, +} from '@chakra-ui/react' +import { useState } from 'react' +import PickedOrderDetailInterface from '../interfaces/PickedOrderDetailInterface'; + + // TODO : fetch data from SOAP +const dummyData : PickedOrderDetailInterface = { + address : "jl.ngawi", + customerName : "rusdi", + salary : 69, + description : "aku akan datang", + orderDetails : [ + { + productName : "pisau cukur", + quantity : 69 + }, + { + productName : "ivan gunawan", + quantity : 420 + }, + { + productName : "pisau cukur 2", + quantity : 692 + }, + { + productName : "ivan gunawan 2", + quantity : 4202 + }, + ] +} + +export default function PickedOrderDetail() { + const [order, setOrder] = useState<PickedOrderDetailInterface>(dummyData); + const [newDescription, setNewDescription] = useState(""); + // TODO : implement pick order functionality + + return ( + <Box + minH={"95vh"} + py={10} + px={50} + bg={"red.800"}> + <Stack + align={'center'} + bg={"white"} + py={10} + > + <Heading p={5}> + {order.address} + </Heading> + + <Stack divider={<StackDivider/>} spacing={2}> + <Box> + <Text fontSize={"lg"} fontWeight={"bold"}> + Nama Pemesan + </Text> + <Text> + {order.customerName} + </Text> + </Box> + <Box> + <Text fontSize={"lg"} fontWeight={"bold"}> + Ongkos Kirim + </Text> + <Text> + {order.salary} + </Text> + </Box> + <Box> + <Text fontSize={"lg"} fontWeight={"bold"} align={"center"}> + Detail Pesanan + </Text> + </Box> + <TableContainer> + <Table variant='simple'> + <Thead> + <Tr> + <Th>Nama Produk</Th> + <Th>Jumlah</Th> + </Tr> + </Thead> + <Tbody> + {order.orderDetails.map((detail) => ( + <Tr> + <Td>{detail.productName}</Td> + <Td>{detail.quantity}</Td> + </Tr> + ))} + </Tbody> + </Table> + </TableContainer> + + <Stack spacing={4}> + <FormControl id="new-description"> + <FormLabel>Update Keterangan</FormLabel> + <Input name="new-description" type="text" + value={newDescription} + onChange={(e) => setNewDescription(e.target.value)} + borderColor={"black"} + /> + </FormControl> + <Button + bg={'blue.400'} + color={'white'} + _hover={{ + bg: 'blue.500', + }} + type="submit"> + Ubah Keterangan + </Button> + <Button + bg={'blue.400'} + color={'white'} + _hover={{ + bg: 'blue.500', + }} + > + Transit Pesanan + </Button> + <Button + display={{ base: 'none', md: 'inline-flex' }} + fontSize={'sm'} + fontWeight={600} + bg={"pink.300"} + color={'black'} + _hover={{ + bg: 'blue.300', + }} + > + Selesaikan Pengantaran + </Button> + </Stack> + </Stack> + </Stack> + </Box> + ); +} + \ No newline at end of file -- GitLab