From 66687b514318dc17bdd2c58e623de0982026c4e6 Mon Sep 17 00:00:00 2001 From: myluki2000 Date: Thu, 26 Sep 2024 12:53:12 +0200 Subject: [PATCH] Move search results to separate component --- app/search/page.tsx | 22 ++------------ .../search/SearchResultGroup.tsx | 6 ++-- .../search/SearchResultItem.tsx | 2 +- components/search/SearchResultsBox.tsx | 29 +++++++++++++++++++ 4 files changed, 35 insertions(+), 24 deletions(-) rename {app => components}/search/SearchResultGroup.tsx (96%) rename app/search/SearchResult.tsx => components/search/SearchResultItem.tsx (94%) create mode 100644 components/search/SearchResultsBox.tsx diff --git a/app/search/page.tsx b/app/search/page.tsx index cb22813..de14a97 100644 --- a/app/search/page.tsx +++ b/app/search/page.tsx @@ -4,10 +4,9 @@ import { pageSemanticSearchQuery, pageSemanticSearchQuery$data } from "@/__gener import { Autocomplete, Box, Button, Collapse, IconButton, InputAdornment, Paper, TextField, Typography } from "@mui/material"; import { useRouter, useSearchParams } from "next/navigation"; import { graphql, useLazyLoadQuery } from "react-relay"; -import SearchResultGroup from "./SearchResultGroup"; import {ManageSearch, ExpandMore, ExpandLess, Search} from '@mui/icons-material'; import { useState } from "react"; -import lodash from "lodash"; +import SearchResultsBox from "@/components/search/SearchResultsBox"; export default function SearchPage() { const router = useRouter(); @@ -89,13 +88,6 @@ export default function SearchPage() { } ); - // Group the search results - const semanticSearchResultGroups = lodash.chain(semanticSearch ?? []) - .groupBy((result) => result.mediaRecordSegment.mediaRecord?.id ?? "unknown") - .forEach((group) => group.sort((a, b) => a.score - b.score)) - .sortBy((group) => group[0].score) - .value(); - // open advanced search by default if an advanced search parameter was provided const [isAdvancedSearchOpen, setIsAdvancedSearchOpen] = useState(searchParams.get("courses") !== null || searchParams.get("count") !== null); function toggleAdvancedSearch() { @@ -176,17 +168,7 @@ export default function SearchPage() { onClick={toggleAdvancedSearch}>{isAdvancedSearchOpen ? "Close Advanced Search" : "Advanced Search"} - {((query !== null) && - Object.values(semanticSearchResultGroups).map((resultGroup) => { - if(resultGroup !== undefined) - return ( - - ); - }) - )} + {(query !== null && )} ); } \ No newline at end of file diff --git a/app/search/SearchResultGroup.tsx b/components/search/SearchResultGroup.tsx similarity index 96% rename from app/search/SearchResultGroup.tsx rename to components/search/SearchResultGroup.tsx index f577b81..48728a2 100644 --- a/app/search/SearchResultGroup.tsx +++ b/components/search/SearchResultGroup.tsx @@ -1,7 +1,7 @@ "use client"; import { Box, Breadcrumbs, Button, Card, Divider, IconButton, Link, Paper, Tooltip } from "@mui/material"; -import SearchResult from "./SearchResult"; +import SearchResultItem from "./SearchResultItem"; import { ExpandMore, ExpandLess } from "@mui/icons-material"; import { useState } from "react"; import { MediaRecordIcon } from "@/components/MediaRecordIcon"; @@ -37,7 +37,7 @@ export default function SearchResultGroup({ searchResults, collapsedResultCount {searchResults.slice(0, collapsedResultCount).map((result, index: number) => { return ( {index > 0 && } - + ) })} @@ -55,7 +55,7 @@ export default function SearchResultGroup({ searchResults, collapsedResultCount && searchResults.slice(collapsedResultCount, searchResults.length).map((result, index: number) => { return ( {index > 0 && } - + ) })} diff --git a/app/search/SearchResult.tsx b/components/search/SearchResultItem.tsx similarity index 94% rename from app/search/SearchResult.tsx rename to components/search/SearchResultItem.tsx index 209af78..4995366 100644 --- a/app/search/SearchResult.tsx +++ b/components/search/SearchResultItem.tsx @@ -36,7 +36,7 @@ const NoMaxWidthTooltip = styled(({ className, ...props }: TooltipProps) => ( }, }); -export default function SearchResult({ searchResult }: { searchResult: NonNullable[number] }) { +export default function SearchResultItem({ searchResult }: { searchResult: NonNullable[number] }) { return result.mediaRecordSegment.mediaRecord?.id ?? "unknown") + .forEach((group) => group.sort((a, b) => a.score - b.score)) + .sortBy((group) => group[0].score) + .value(); + + return {(Object.values(semanticSearchResultGroups).map((resultGroup) => { + if(resultGroup !== undefined) + return ( + + ); + }) + )} + +} \ No newline at end of file