Commit eddf516e authored by Shanelle Valencia's avatar Shanelle Valencia

[AFP-24] Integrate search feature in order index table [@svalencia]

parent d429673a
...@@ -4,7 +4,7 @@ import {useGoogleAuth} from 'hooks' ...@@ -4,7 +4,7 @@ import {useGoogleAuth} from 'hooks'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faUser } from '@fortawesome/free-solid-svg-icons' import { faUser } from '@fortawesome/free-solid-svg-icons'
import { Box, Heading, Flex, Spacer, Button } from "@chakra-ui/react" import { Box, Heading, Flex, Spacer, Button } from "@chakra-ui/react"
import Logo from '../img/logo.png'
const Nav = () => { const Nav = () => {
const { isSignedIn, signOut, signIn } = useGoogleAuth(); const { isSignedIn, signOut, signIn } = useGoogleAuth();
...@@ -15,12 +15,11 @@ const Nav = () => { ...@@ -15,12 +15,11 @@ const Nav = () => {
const userIcon = <FontAwesomeIcon icon={faUser} /> const userIcon = <FontAwesomeIcon icon={faUser} />
const logo = require("../img/logo.png");
return ( return (
<Flex> <Flex>
<Box> <Box>
<Heading>logo</Heading> <Link to="/"><img src={Logo}/></Link>
</Box> </Box>
<Spacer /> <Spacer />
<Box> <Box>
......
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react'
import { Link } from 'react-router-dom' // import { Link } from 'react-router-dom'
import { OrderDetails } from 'components' // import { OrderDetails } from 'components'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' // import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faSearch } from '@fortawesome/free-solid-svg-icons' // import { faSearch } from '@fortawesome/free-solid-svg-icons'
import { // import {
Table, // Table,
Thead, // Thead,
Tbody, // Tbody,
Tfoot, // Tfoot,
Tr, // Tr,
Th, // Th,
Td, // Td,
TableCaption, // TableCaption,
Input, // Input,
Wrap, // Wrap,
WrapItem // WrapItem
} from "@chakra-ui/react" // } from "@chakra-ui/react"
const SearchOrder = (props: any) => { const SearchOrder = (props: any) => {
const { orders } = props; // const { orders } = props;
const [searchInput, setSearchInput] = useState(""); // const [searchInput, setSearchInput] = useState("");
const [searchResult, setSearchResult] = useState<string[]>([]); // const [searchResult, setSearchResult] = useState<string[]>([]);
console.log("ORDERS", orders) // console.log("ORDERS", orders)
const searchIcon = <FontAwesomeIcon icon={faSearch} /> // const searchIcon = <FontAwesomeIcon icon={faSearch} />
const handleSearchInput = (event: any) => { // const handleSearchInput = (event: any) => {
setSearchInput(event.target.value); // setSearchInput(event.target.value);
} // }
useEffect(() => { // useEffect(() => {
const filtered = orders.filter((order: any) => // const filtered = orders.filter((order: any) =>
order.id.includes(searchInput) //|| order.date.includes(searchInput) // order.id.includes(searchInput) //|| order.date.includes(searchInput)
); // );
// debugger // // debugger
setSearchResult(filtered); // setSearchResult(filtered);
}, [searchInput]); // }, [searchInput]);
const searchResultArr = searchResult.map((item: any, idx) => { // const searchResultArr = searchResult.map((item: any, idx) => {
return <Tr key={idx}><OrderDetails // return <Tr key={idx}><OrderDetails
date={item.orderCreatedAt} // date={item.orderCreatedAt}
orderNumber={item.id} // orderNumber={item.id}
status={item.orderStatus}/> // status={item.orderStatus}/>
</Tr> // </Tr>
}) // })
return ( // return (
<div> // <div>
<Wrap> // <Wrap>
{/* <WrapItem> // {/* <WrapItem>
<span>Search</span> // <span>Search</span>
</WrapItem> */} // </WrapItem> */}
<WrapItem> // <WrapItem>
{/* <input // {/* <input
type="text" // type="text"
placeholder="Search" // placeholder="Search"
value={searchInput} // value={searchInput}
onChange={handleSearchInput} // onChange={handleSearchInput}
/> */} // /> */}
<Input // <Input
focusBorderColor="gray.400" // focusBorderColor="gray.400"
type="text" // type="text"
placeholder="Search <%=searchIcon%>" // placeholder="Search <%=searchIcon%>"
value={searchInput} // value={searchInput}
onChange={handleSearchInput} // onChange={handleSearchInput}
/> // />
</WrapItem> // </WrapItem>
</Wrap> // </Wrap>
<Table variant="striped" colorScheme="messenger" size="md"> // <Table variant="striped" colorScheme="messenger" size="md">
<Thead> // <Thead>
<Tr> // <Tr>
<Th>Order number</Th> // <Th>Order number</Th>
<Th>Created</Th> // <Th>Created</Th>
<Th>Order Status</Th> // <Th>Order Status</Th>
</Tr> // </Tr>
</Thead> // </Thead>
<Tbody> // <Tbody>
{searchResultArr} // {searchResultArr}
</Tbody> // </Tbody>
</Table> // </Table>
</div> // </div>
); // );
} }
export default SearchOrder export default SearchOrder
......
...@@ -12,13 +12,47 @@ import { ...@@ -12,13 +12,47 @@ import {
Th, Th,
Td, Td,
TableCaption, TableCaption,
Input
} from "@chakra-ui/react" } from "@chakra-ui/react"
const OrderIndexPage = () => { const OrderIndexPage = () => {
const { orders } = useAllOrders(); const { orders } = useAllOrders();
const [searchInput, setSearchInput] = useState("")
const [allOrders, setAllOrders] = useState<any>([])
useEffect(() => {
setAllOrders(orders)
}, [orders])
const orderDetailsArr = orders.map((order: Order, idx: any) => { const handleChange = (e: any) => {
console.log("e.key", e.key)
if (e.key === "Enter") {
handleClick()
}
const value = e.target.value
setSearchInput(value)
}
const handleClick = () => {
console.log(searchInput)
console.log(allOrders)
const searchLength = searchInput.length
const newArray = []
for (const ele of allOrders) {
// const snippet = ele.id.slice(0, searchLength).toString()
if (ele.id.includes(searchInput)) {
newArray.push(ele)
}
}
console.log("newarray", newArray)
if (searchLength !== 0) {
setAllOrders(newArray)
} else {
setAllOrders(orders)
}
}
const orderDetailsArr = allOrders.map((order: Order, idx: any) => {
return <Tr key={idx}><OrderDetails return <Tr key={idx}><OrderDetails
date={order.orderCreatedAt} date={order.orderCreatedAt}
orderNumber={order.id} orderNumber={order.id}
...@@ -28,7 +62,16 @@ const OrderIndexPage = () => { ...@@ -28,7 +62,16 @@ const OrderIndexPage = () => {
return ( return (
<div className="table-div"> <div className="table-div">
<SearchOrder orders={orders}/> <Input
type="text"
placeholder="Search by Order Number"
value={searchInput}
onChange={handleChange}
onKeyDown={handleChange}
>
</Input>
{/* <button onClick={handleClick}>Submit</button> */}
<br/>
<div className="index-table"> <div className="index-table">
<Table variant="striped" colorScheme="messenger" size="md"> <Table variant="striped" colorScheme="messenger" size="md">
<Thead> <Thead>
...@@ -39,7 +82,7 @@ const OrderIndexPage = () => { ...@@ -39,7 +82,7 @@ const OrderIndexPage = () => {
</Tr> </Tr>
</Thead> </Thead>
<Tbody> <Tbody>
{orderDetailsArr} { orderDetailsArr }
</Tbody> </Tbody>
</Table> </Table>
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment