Compare commits

...

2 Commits

3 changed files with 22 additions and 10 deletions

View File

@ -14,14 +14,24 @@ export async function GET(request: NextRequest) {
console.log(search) console.log(search)
const cleanedSearch = search.replace(/[^a-zA-Z\s]/g, "").toLowerCase() const cleanedSearch = search.replace(/[^a-zA-Z\s]/g, "").toLowerCase()
const searchWords = cleanedSearch.split(/\s+/) const searchWords = cleanedSearch.split(/\s+/)
const filteredData = cardData.filter((card) => const filteredData = cardData.filter((card) => {
searchWords.some((word) => let captionArray = card.caption?.toLowerCase().split(/[^a-z]/)
card.caption if (!captionArray) {
?.toLowerCase() return false
.split(/[^a-z]/) }
.includes(word) const words = searchWords.filter((word) => captionArray.includes(word))
) if (words.length) {
) card.rank = 999999
for (const word of words) {
const index = captionArray.indexOf(word)
if (index && index < card.rank) {
card.rank = index
}
}
return true
}
return false
})
filteredData.sort((a, b) => a.rank! - b.rank!)
return Response.json(filteredData) return Response.json(filteredData)
} }

View File

@ -60,7 +60,7 @@ export default function Home() {
)} )}
<form <form
onSubmit={handleSubmit} onSubmit={handleSubmit}
style={{ width: "100%", maxWidth: "700px" }} style={{ width: "100%", maxWidth: "700px", paddingBottom: "16px" }}
> >
<Input <Input
placeholder="Type something..." placeholder="Type something..."
@ -89,6 +89,7 @@ export default function Home() {
loadMore={loadMore} loadMore={loadMore}
hasMore={cardsDisplayed.length < cards.length} hasMore={cardsDisplayed.length < cards.length}
loader={<CircularProgress />} loader={<CircularProgress />}
style={{ width: "100%" }}
> >
<Grid container spacing={2} sx={{ flexGrow: 1 }} key="cardGrid"> <Grid container spacing={2} sx={{ flexGrow: 1 }} key="cardGrid">
{cardsDisplayed.map((card) => ( {cardsDisplayed.map((card) => (

View File

@ -5,5 +5,6 @@ export type CardType = {
oracleId: string oracleId: string
caption: string caption: string
url?: string url?: string
rank?: number
mediumImageUrl: string mediumImageUrl: string
} }