diff --git a/src/components/Search.tsx b/src/components/Search.tsx index 5e86134..6d94c8a 100644 --- a/src/components/Search.tsx +++ b/src/components/Search.tsx @@ -26,7 +26,11 @@ import "react-dropdown/style.css"; import "./Search.css"; import { SavedSearchBtn } from "./SavedSearches"; // import useSearch from "../../utils/hooks/useSearch"; +import DITData from "../../backend/scraper/drop_in.json"; +import PTData from "../../backend/scraper/peer_tutoring.json"; import SIData from "../../backend/scraper/si.json"; +import ClubsData from "../../backend/scraper/tartanconnect.json"; +import CareerData from "../../backend/scraper/handshake.json"; // https://plainenglish.io/blog/how-to-implement-a-search-bar-in-react-js @@ -43,20 +47,21 @@ const Search: React.FC = ({ page }) => { // search results // const [data, setData] = useState(null) // date picker - const [startDate, setStartDate] = useState(dayjs()); - const [endDate, setEndDate] = useState(dayjs()); + const [startDate, setStartDate] = useState(dayjs()); + const [endDate, setEndDate] = useState(dayjs().add(7, 'day')); const showDatePicker = true; - // useEffect(()=> { - // const [data, setData] = useState([]); + useEffect(()=> { + // const [data, setData] = useState([]); - // const fuse = new Fuse(SIData, { - // keys: ["course_id", "course_name"], - // }); + // const fuse = new Fuse(SIData, { + // keys: ["course_id", "course_name"], + // }); - // setData([fuse.search(searchInput)]); - // },[searchInput]) + // setData([fuse.search(searchInput)]); + getCategoryData(page); + },[categoryName]) // search @@ -77,6 +82,68 @@ const Search: React.FC = ({ page }) => { ); }; + const inDateRange = (date: string) => { + const startDateObj = startDate.toDate(); + const endDateObj = endDate.toDate(); + const eventDate = new Date(date); + return eventDate >= startDateObj && eventDate <= endDateObj; + } + + const getCategoryData = (currPage:string) => { + // console.log("running category data"); + switch(currPage) { + case "academics": + const optionsAcademics = { keys: ['resource_type', 'course_id', 'course_name'] } + let combinedData = [...DITData, ...SIData, ...PTData]; + const fuseAcademics = new Fuse(combinedData, optionsAcademics); + // const fuse = new Fuse(SIData, options); + if (categoryName.length == 0 || categoryName.length==4) { + return fuseAcademics.search(searchInput); + } else { + if (!categoryName.includes("Supplemental Instructions")) { + fuseAcademics.remove((doc) => { + return doc.resource_type === 'SI'; + }) + } + if (!categoryName.includes("Drop-in Tutoring")) { + fuseAcademics.remove((doc) => { + return doc.resource_type === 'DIT'; + }) + } + if (!categoryName.includes("Peer Tutoring")) { + fuseAcademics.remove((doc) => { + return doc.resource_type === 'PT' + }) + } + return fuseAcademics.search(searchInput); + } + break; + case "clubs": + const optionsClubs = { keys: ['resource_type', 'event_name', 'event_host', 'categories'] } + const fuseClubs = new Fuse(ClubsData, optionsClubs); + return fuseClubs.search(searchInput); + break; + case "career": + const optionsCareer = { keys: ['resource_type', 'event_name', 'event_host', 'categories'] } + const fuseCareer = new Fuse(CareerData, optionsCareer); + return fuseCareer.search(searchInput); + break; + } + } + + const getWeekday = (weekday: number) => { + const today = new Date(); + const dayOfWeekToday = today.getDay(); // 0 (Sunday) to 6 (Saturday) + const offSet = dayOfWeekToday - weekday; + if (offSet === 0 || offSet === 7) { + return today.toDateString(); + } else { + const targetDay = new Date(today); + targetDay.setDate(today.getDate() - offSet); + return targetDay.toDateString(); + } + } + const getNumCategories = () => { if (page==="academics") { return categoryListAcademics.length; @@ -146,14 +213,13 @@ const Search: React.FC = ({ page }) => { ); - - const startDateFn = (date: Dayjs | null) => { + const startDateFn = (date: Dayjs) => { setStartDate(date); console.log(`start: ${date}`); }; - const endDateFn = (date: Dayjs | null) => { + const endDateFn = (date: Dayjs) => { setEndDate(date); console.log(`end: ${date}`); }; @@ -242,20 +308,42 @@ const Search: React.FC = ({ page }) => {
- {searchInput && SIData.map( (event) => { - return ( - - )})} + {searchInput && page==="academics" && getCategoryData(page)?.map( (result) => { + for (let i = 0; i + ) + } + } + })} + {searchInput && (page==="clubs" || page==="career") && getCategoryData(page)?.map( (result) => { + for (let i = 0; i + ) + } + } + })}
diff --git a/src/components/SearchCard.tsx b/src/components/SearchCard.tsx index 65f2028..3fd0e85 100644 --- a/src/components/SearchCard.tsx +++ b/src/components/SearchCard.tsx @@ -26,18 +26,23 @@ const SearchCard: React.FC = ({ // eventSubcategory, }) => { const [buttonClicked, setButtonClicked] = useState(false); + const [cardClicked, setCardClicked] = useState(false); const handleAddToCalendar = () => { setButtonClicked((prevClicked) => !prevClicked); // Logic for calling GCal }; + const handleCardClicked = () => { + setCardClicked(!cardClicked); + } + // {eventName} return ( -
-
-

{eventName}

-

By {orgName}

-
+
+
+

{eventName}

+

By {orgName}

+
{endDate !== startDate ? (

@@ -49,12 +54,12 @@ const SearchCard: React.FC = ({

)}
-
+

{location}

-
+