From 698ec7402c99c0dff35ee7245dfc073be5a2913b Mon Sep 17 00:00:00 2001 From: Gowrisankar Palanickal <156338043+shankarp05@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:22:16 -0500 Subject: [PATCH 01/12] starting code for opportunities list --- src/App.tsx | 5 ++ .../components/opportunitiesDetails.tsx | 54 +++++++++++++++++++ src/opportunities/pages/opportunities.tsx | 14 +++++ 3 files changed, 73 insertions(+) create mode 100644 src/opportunities/components/opportunitiesDetails.tsx create mode 100644 src/opportunities/pages/opportunities.tsx diff --git a/src/App.tsx b/src/App.tsx index af5e2747..f13862a4 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,9 @@ import React from "react"; import { Routes, Route } from "react-router-dom"; import "./style/App.css"; + +import Opportunities from "./opportunities/pages/opportunities.tsx"; + import Home from "./shared/pages/Home.tsx"; import PageNotFound from "./shared/pages/404.tsx"; import MainNavigation from "./shared/components/Navigation/MainNavigation.tsx"; @@ -34,6 +37,8 @@ function App() { } /> } /> } /> + + } /> } /> } /> diff --git a/src/opportunities/components/opportunitiesDetails.tsx b/src/opportunities/components/opportunitiesDetails.tsx new file mode 100644 index 00000000..58622093 --- /dev/null +++ b/src/opportunities/components/opportunitiesDetails.tsx @@ -0,0 +1,54 @@ +import React from "react"; + +interface Opportunity { + name: string; + description: string; + recommended_experience: string; + pay: number; + semester: string; + year: number; + application_due: Date; + location: string; +} + +const sampleOpportunities: Opportunity[] = [ + { + name: "Research Assistant - Machine Learning Lab", + description: "Work on cutting-edge ML projects", + recommended_experience: "Python, Machine Learning basics", + pay: 15.00, + semester: "Fall", + year: 2024, + application_due: new Date("2024-08-01"), + location: "DCC" + } +]; + +const OpportunitiesList = () => { + return ( +
+

Research Opportunities

+ +
+ {sampleOpportunities.map((opportunity, index) => ( +
+

{opportunity.name}

+

{opportunity.description}

+ +
+

Location: {opportunity.location}

+

Pay: ${opportunity.pay}/hr

+

Term: {opportunity.semester} {opportunity.year}

+
+ + +
+ ))} +
+
+ ); +}; + +export default OpportunitiesList; \ No newline at end of file diff --git a/src/opportunities/pages/opportunities.tsx b/src/opportunities/pages/opportunities.tsx new file mode 100644 index 00000000..59765493 --- /dev/null +++ b/src/opportunities/pages/opportunities.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import OpportunitiesList from "../components/opportunitiesDetails.tsx"; +import SEO from "../../shared/components/SEO.tsx"; +import { useAuth } from "../../context/AuthContext.tsx"; + + +export default function Opportunities() { + + return ( +
+ +
+ ); +}; From 330a57f40e44dc7d62390987935edaf104c4bf11 Mon Sep 17 00:00:00 2001 From: Devan Patel Date: Tue, 28 Jan 2025 17:27:48 -0500 Subject: [PATCH 02/12] Updated display of different opportunties Tried to make opportunities display in a tabular fashion --- .../components/opportunitiesDetails.tsx | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/src/opportunities/components/opportunitiesDetails.tsx b/src/opportunities/components/opportunitiesDetails.tsx index 58622093..131b3889 100644 --- a/src/opportunities/components/opportunitiesDetails.tsx +++ b/src/opportunities/components/opportunitiesDetails.tsx @@ -27,25 +27,38 @@ const sampleOpportunities: Opportunity[] = [ const OpportunitiesList = () => { return (
-

Research Opportunities

-
- {sampleOpportunities.map((opportunity, index) => ( -
-

{opportunity.name}

-

{opportunity.description}

- -
-

Location: {opportunity.location}

-

Pay: ${opportunity.pay}/hr

-

Term: {opportunity.semester} {opportunity.year}

-
- - -
- ))} +
+ + + {/* + + + + + + + */} + + + {sampleOpportunities.map((opportunity, index) => ( + + + + + + + + + ))} + +
PositionDescriptionLocationPayTermAction
{opportunity.name}{opportunity.description}{opportunity.location}${opportunity.pay}/hr + {opportunity.semester} {opportunity.year} + + +
); From 02d27f6a1ca05bc4f077c8feb01f1529332f29f2 Mon Sep 17 00:00:00 2001 From: Gowrisankar Palanickal <156338043+shankarp05@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:34:13 -0500 Subject: [PATCH 03/12] added sample data and professor field to opportunities --- .../components/opportunitiesDetails.tsx | 68 +++++++++++++++++-- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/src/opportunities/components/opportunitiesDetails.tsx b/src/opportunities/components/opportunitiesDetails.tsx index 131b3889..5bf5622b 100644 --- a/src/opportunities/components/opportunitiesDetails.tsx +++ b/src/opportunities/components/opportunitiesDetails.tsx @@ -9,6 +9,7 @@ interface Opportunity { year: number; application_due: Date; location: string; + professor: string; // Added the professor field } const sampleOpportunities: Opportunity[] = [ @@ -20,25 +21,81 @@ const sampleOpportunities: Opportunity[] = [ semester: "Fall", year: 2024, application_due: new Date("2024-08-01"), - location: "DCC" + location: "DCC", + professor: "Dr. Emily Chen" + }, + { + name: "Data Visualization Intern - Data Science Center", + description: "Create compelling visualizations for real-world datasets.", + recommended_experience: "D3.js, Tableau, or Matplotlib", + pay: 12.50, + semester: "Spring", + year: 2025, + application_due: new Date("2025-01-15"), + location: "EMPAC", + professor: "Dr. Alan Green" + }, + { + name: "Undergraduate Researcher - Renewable Energy Lab", + description: "Analyze energy efficiency of solar panel setups.", + recommended_experience: "R, Excel, or energy systems knowledge", + pay: 14.00, + semester: "Summer", + year: 2025, + application_due: new Date("2025-04-30"), + location: "Jonsson Engineering Center", + professor: "Dr. Maria Santos" + }, + { + name: "AI in Healthcare Research Assistant", + description: "Develop and test AI models for diagnostic tools.", + recommended_experience: "Python, TensorFlow, basic healthcare knowledge", + pay: 16.00, + semester: "Fall", + year: 2024, + application_due: new Date("2024-07-20"), + location: "Biotech Center", + professor: "Dr. Raj Patel" + }, + { + name: "Human-Computer Interaction (HCI) Researcher", + description: "Study user interfaces to improve accessibility.", + recommended_experience: "HTML, CSS, JavaScript, Usability Testing", + pay: 13.00, + semester: "Spring", + year: 2025, + application_due: new Date("2025-01-10"), + location: "Carnegie Building", + professor: "Dr. Susan Miller" + }, + { + name: "Climate Modeling Research Intern", + description: "Simulate climate patterns using advanced modeling techniques.", + recommended_experience: "Python, MATLAB, or climate science coursework", + pay: 14.50, + semester: "Summer", + year: 2025, + application_due: new Date("2025-03-15"), + location: "Troy Building", + professor: "Dr. John Reynolds" } ]; const OpportunitiesList = () => { return (
-
- {/* + + - */} + {sampleOpportunities.map((opportunity, index) => ( @@ -47,6 +104,7 @@ const OpportunitiesList = () => { + @@ -64,4 +122,4 @@ const OpportunitiesList = () => { ); }; -export default OpportunitiesList; \ No newline at end of file +export default OpportunitiesList; From cc8587e3cb5354f3927e7204650a2843ba4b5b5d Mon Sep 17 00:00:00 2001 From: Devan Patel Date: Tue, 4 Feb 2025 16:41:42 -0500 Subject: [PATCH 04/12] Use opportunity interface in jobs.tsx file Made it able to use the Opportunity interface in the jobs page --- src/opportunities/components/opportunitiesDetails.tsx | 2 +- src/opportunities/pages/{Jobs.js => Jobs.tsx} | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) rename src/opportunities/pages/{Jobs.js => Jobs.tsx} (92%) diff --git a/src/opportunities/components/opportunitiesDetails.tsx b/src/opportunities/components/opportunitiesDetails.tsx index 5bf5622b..181a054a 100644 --- a/src/opportunities/components/opportunitiesDetails.tsx +++ b/src/opportunities/components/opportunitiesDetails.tsx @@ -1,6 +1,6 @@ import React from "react"; -interface Opportunity { +export interface Opportunity { name: string; description: string; recommended_experience: string; diff --git a/src/opportunities/pages/Jobs.js b/src/opportunities/pages/Jobs.tsx similarity index 92% rename from src/opportunities/pages/Jobs.js rename to src/opportunities/pages/Jobs.tsx index c7a6dfb1..dfe20915 100644 --- a/src/opportunities/pages/Jobs.js +++ b/src/opportunities/pages/Jobs.tsx @@ -5,6 +5,8 @@ import SavedJobs from "../components/SavedJobs"; import PageNavigation from "../../shared/components/Navigation/PageNavigation"; import usePageNavigation from "../../shared/hooks/page-navigation-hook"; +import Opportunity from "../components/opportunitiesDetails"; + const Jobs = () => { var [pages, switchPage] = usePageNavigation(["Search", "Saved"], "Search"); From 0f027164b5c516b501b80be32ced6f33a22b5fd6 Mon Sep 17 00:00:00 2001 From: Gowrisankar Palanickal <156338043+shankarp05@users.noreply.github.com> Date: Tue, 4 Feb 2025 16:47:26 -0500 Subject: [PATCH 05/12] adding sample data to jobs page and fixing import statement --- src/opportunities/pages/Jobs.tsx | 71 +++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/src/opportunities/pages/Jobs.tsx b/src/opportunities/pages/Jobs.tsx index dfe20915..476d0650 100644 --- a/src/opportunities/pages/Jobs.tsx +++ b/src/opportunities/pages/Jobs.tsx @@ -5,7 +5,76 @@ import SavedJobs from "../components/SavedJobs"; import PageNavigation from "../../shared/components/Navigation/PageNavigation"; import usePageNavigation from "../../shared/hooks/page-navigation-hook"; -import Opportunity from "../components/opportunitiesDetails"; +import {Opportunity} from "../components/opportunitiesDetails"; + +const sampleOpportunities: Opportunity[] = [ + { + name: "Research Assistant - Machine Learning Lab", + description: "Work on cutting-edge ML projects", + recommended_experience: "Python, Machine Learning basics", + pay: 15.00, + semester: "Fall", + year: 2024, + application_due: new Date("2024-08-01"), + location: "DCC", + professor: "Dr. Emily Chen" + }, + { + name: "Data Visualization Intern - Data Science Center", + description: "Create compelling visualizations for real-world datasets.", + recommended_experience: "D3.js, Tableau, or Matplotlib", + pay: 12.50, + semester: "Spring", + year: 2025, + application_due: new Date("2025-01-15"), + location: "EMPAC", + professor: "Dr. Alan Green" + }, + { + name: "Undergraduate Researcher - Renewable Energy Lab", + description: "Analyze energy efficiency of solar panel setups.", + recommended_experience: "R, Excel, or energy systems knowledge", + pay: 14.00, + semester: "Summer", + year: 2025, + application_due: new Date("2025-04-30"), + location: "Jonsson Engineering Center", + professor: "Dr. Maria Santos" + }, + { + name: "AI in Healthcare Research Assistant", + description: "Develop and test AI models for diagnostic tools.", + recommended_experience: "Python, TensorFlow, basic healthcare knowledge", + pay: 16.00, + semester: "Fall", + year: 2024, + application_due: new Date("2024-07-20"), + location: "Biotech Center", + professor: "Dr. Raj Patel" + }, + { + name: "Human-Computer Interaction (HCI) Researcher", + description: "Study user interfaces to improve accessibility.", + recommended_experience: "HTML, CSS, JavaScript, Usability Testing", + pay: 13.00, + semester: "Spring", + year: 2025, + application_due: new Date("2025-01-10"), + location: "Carnegie Building", + professor: "Dr. Susan Miller" + }, + { + name: "Climate Modeling Research Intern", + description: "Simulate climate patterns using advanced modeling techniques.", + recommended_experience: "Python, MATLAB, or climate science coursework", + pay: 14.50, + semester: "Summer", + year: 2025, + application_due: new Date("2025-03-15"), + location: "Troy Building", + professor: "Dr. John Reynolds" + } +]; const Jobs = () => { var [pages, switchPage] = usePageNavigation(["Search", "Saved"], "Search"); From 8866b98c0c06bb5d6e860f843b796c418e808815 Mon Sep 17 00:00:00 2001 From: Devan Patel Date: Tue, 4 Feb 2025 16:50:46 -0500 Subject: [PATCH 06/12] Updated jobs.js code to make it work with typescript Changes function to conform with typescript --- src/opportunities/pages/Jobs.tsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/opportunities/pages/Jobs.tsx b/src/opportunities/pages/Jobs.tsx index 476d0650..f907c457 100644 --- a/src/opportunities/pages/Jobs.tsx +++ b/src/opportunities/pages/Jobs.tsx @@ -76,8 +76,17 @@ const sampleOpportunities: Opportunity[] = [ } ]; -const Jobs = () => { - var [pages, switchPage] = usePageNavigation(["Search", "Saved"], "Search"); +interface PageNavigationType { + activePage: string; + pages: string[]; +} + +const Jobs: React.FC = () => { + + const [pages, switchPage] = usePageNavigation(["Search", "Saved"], "Search") as [ + PageNavigationType, + (page: string) => void + ]; return (
From 9e688d0d72f2ce3b72adf1cb4c0df3a3e1d14f24 Mon Sep 17 00:00:00 2001 From: Gowrisankar Palanickal <156338043+shankarp05@users.noreply.github.com> Date: Tue, 4 Feb 2025 16:59:38 -0500 Subject: [PATCH 07/12] fixing jobs route in app.tsx and adding opportunity list component to jobs page --- src/App.tsx | 2 +- src/opportunities/pages/Jobs.tsx | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/App.tsx b/src/App.tsx index f13862a4..33cc1ff5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,7 +7,7 @@ import Opportunities from "./opportunities/pages/opportunities.tsx"; import Home from "./shared/pages/Home.tsx"; import PageNotFound from "./shared/pages/404.tsx"; import MainNavigation from "./shared/components/Navigation/MainNavigation.tsx"; -import Jobs from "./opportunities/pages/Jobs.js"; +import Jobs from "./opportunities/pages/Jobs.tsx"; import Departments from "./staff/pages/Departments.tsx"; import StaffPage from "./staff/pages/Staff.tsx"; import Department from "./staff/pages/Department.tsx"; diff --git a/src/opportunities/pages/Jobs.tsx b/src/opportunities/pages/Jobs.tsx index f907c457..b7aef317 100644 --- a/src/opportunities/pages/Jobs.tsx +++ b/src/opportunities/pages/Jobs.tsx @@ -6,6 +6,7 @@ import PageNavigation from "../../shared/components/Navigation/PageNavigation"; import usePageNavigation from "../../shared/hooks/page-navigation-hook"; import {Opportunity} from "../components/opportunitiesDetails"; +import OpportunitiesList from "../components/opportunitiesDetails.tsx"; const sampleOpportunities: Opportunity[] = [ { @@ -95,9 +96,13 @@ const Jobs: React.FC = () => { {pages.activePage === "Search" && } +
+ + + ); }; From 98bb041ab310461bcf04d362b492b44840f237d3 Mon Sep 17 00:00:00 2001 From: Gowrisankar Palanickal <156338043+shankarp05@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:27:02 -0400 Subject: [PATCH 08/12] Update Jobs.tsx --- src/opportunities/pages/Jobs.tsx | 68 -------------------------------- 1 file changed, 68 deletions(-) diff --git a/src/opportunities/pages/Jobs.tsx b/src/opportunities/pages/Jobs.tsx index b7aef317..049b4e21 100644 --- a/src/opportunities/pages/Jobs.tsx +++ b/src/opportunities/pages/Jobs.tsx @@ -8,74 +8,6 @@ import usePageNavigation from "../../shared/hooks/page-navigation-hook"; import {Opportunity} from "../components/opportunitiesDetails"; import OpportunitiesList from "../components/opportunitiesDetails.tsx"; -const sampleOpportunities: Opportunity[] = [ - { - name: "Research Assistant - Machine Learning Lab", - description: "Work on cutting-edge ML projects", - recommended_experience: "Python, Machine Learning basics", - pay: 15.00, - semester: "Fall", - year: 2024, - application_due: new Date("2024-08-01"), - location: "DCC", - professor: "Dr. Emily Chen" - }, - { - name: "Data Visualization Intern - Data Science Center", - description: "Create compelling visualizations for real-world datasets.", - recommended_experience: "D3.js, Tableau, or Matplotlib", - pay: 12.50, - semester: "Spring", - year: 2025, - application_due: new Date("2025-01-15"), - location: "EMPAC", - professor: "Dr. Alan Green" - }, - { - name: "Undergraduate Researcher - Renewable Energy Lab", - description: "Analyze energy efficiency of solar panel setups.", - recommended_experience: "R, Excel, or energy systems knowledge", - pay: 14.00, - semester: "Summer", - year: 2025, - application_due: new Date("2025-04-30"), - location: "Jonsson Engineering Center", - professor: "Dr. Maria Santos" - }, - { - name: "AI in Healthcare Research Assistant", - description: "Develop and test AI models for diagnostic tools.", - recommended_experience: "Python, TensorFlow, basic healthcare knowledge", - pay: 16.00, - semester: "Fall", - year: 2024, - application_due: new Date("2024-07-20"), - location: "Biotech Center", - professor: "Dr. Raj Patel" - }, - { - name: "Human-Computer Interaction (HCI) Researcher", - description: "Study user interfaces to improve accessibility.", - recommended_experience: "HTML, CSS, JavaScript, Usability Testing", - pay: 13.00, - semester: "Spring", - year: 2025, - application_due: new Date("2025-01-10"), - location: "Carnegie Building", - professor: "Dr. Susan Miller" - }, - { - name: "Climate Modeling Research Intern", - description: "Simulate climate patterns using advanced modeling techniques.", - recommended_experience: "Python, MATLAB, or climate science coursework", - pay: 14.50, - semester: "Summer", - year: 2025, - application_due: new Date("2025-03-15"), - location: "Troy Building", - professor: "Dr. John Reynolds" - } -]; interface PageNavigationType { activePage: string; From cee966e80eaed37f8a498473e80d3a3e0e20c2d9 Mon Sep 17 00:00:00 2001 From: Gowrisankar Palanickal <156338043+shankarp05@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:41:36 -0400 Subject: [PATCH 09/12] adding comments to jobs and opportunities pages --- src/opportunities/pages/Jobs.tsx | 2 ++ src/opportunities/pages/opportunities.tsx | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/opportunities/pages/Jobs.tsx b/src/opportunities/pages/Jobs.tsx index 049b4e21..2bcf8d7e 100644 --- a/src/opportunities/pages/Jobs.tsx +++ b/src/opportunities/pages/Jobs.tsx @@ -16,11 +16,13 @@ interface PageNavigationType { const Jobs: React.FC = () => { + // navigation bar const [pages, switchPage] = usePageNavigation(["Search", "Saved"], "Search") as [ PageNavigationType, (page: string) => void ]; + // displaying opportunities list component return (
diff --git a/src/opportunities/pages/opportunities.tsx b/src/opportunities/pages/opportunities.tsx index 59765493..6e607b5c 100644 --- a/src/opportunities/pages/opportunities.tsx +++ b/src/opportunities/pages/opportunities.tsx @@ -6,6 +6,8 @@ import { useAuth } from "../../context/AuthContext.tsx"; export default function Opportunities() { + + // returning opportunities component on (currently not in use) opportunities page return (
From bab4e1fbc916d8da3af6aaef5c447de34451373b Mon Sep 17 00:00:00 2001 From: Devan Patel Date: Fri, 14 Mar 2025 16:42:39 -0400 Subject: [PATCH 10/12] Update opportunitiesDetails.tsx Added comments to OpportunitiesDetails file --- .../components/opportunitiesDetails.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/opportunities/components/opportunitiesDetails.tsx b/src/opportunities/components/opportunitiesDetails.tsx index 181a054a..c2ca633a 100644 --- a/src/opportunities/components/opportunitiesDetails.tsx +++ b/src/opportunities/components/opportunitiesDetails.tsx @@ -1,5 +1,8 @@ import React from "react"; + +//Created a new interface to make displaying an opportunity easier, contains 9 fields + export interface Opportunity { name: string; description: string; @@ -9,9 +12,13 @@ export interface Opportunity { year: number; application_due: Date; location: string; - professor: string; // Added the professor field + professor: string + // Add any other relevant information about an opportunity } + +// List of sample opportunities of type Opportunity + const sampleOpportunities: Opportunity[] = [ { name: "Research Assistant - Machine Learning Lab", @@ -81,12 +88,16 @@ const sampleOpportunities: Opportunity[] = [ } ]; + +// This component returns a 'list' of all the opportunities + const OpportunitiesList = () => { return (
Position Description Location PayProfessor Term Action
{opportunity.description} {opportunity.location} ${opportunity.pay}/hr{opportunity.professor} {opportunity.semester} {opportunity.year}
+ {/* Column Headers */} @@ -98,6 +109,7 @@ const OpportunitiesList = () => { + {/* Info about the opportunities */} {sampleOpportunities.map((opportunity, index) => ( From a3962d84c7ba1e756383ce23134304cffa3e8e8d Mon Sep 17 00:00:00 2001 From: Gowrisankar Palanickal <156338043+shankarp05@users.noreply.github.com> Date: Tue, 18 Mar 2025 16:18:57 -0400 Subject: [PATCH 11/12] fixing up lint issues removed unused components --- src/opportunities/pages/opportunities.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/opportunities/pages/opportunities.tsx b/src/opportunities/pages/opportunities.tsx index 6e607b5c..cd5c9b10 100644 --- a/src/opportunities/pages/opportunities.tsx +++ b/src/opportunities/pages/opportunities.tsx @@ -1,7 +1,5 @@ import React from "react"; import OpportunitiesList from "../components/opportunitiesDetails.tsx"; -import SEO from "../../shared/components/SEO.tsx"; -import { useAuth } from "../../context/AuthContext.tsx"; export default function Opportunities() { From fac94ac93ab92345452ee56d0b78273549fca805 Mon Sep 17 00:00:00 2001 From: Devan Patel Date: Tue, 18 Mar 2025 16:19:08 -0400 Subject: [PATCH 12/12] Update Jobs.tsx Removed unused imports to fix lint issues --- src/opportunities/pages/Jobs.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/opportunities/pages/Jobs.tsx b/src/opportunities/pages/Jobs.tsx index 2bcf8d7e..fa582b18 100644 --- a/src/opportunities/pages/Jobs.tsx +++ b/src/opportunities/pages/Jobs.tsx @@ -1,14 +1,13 @@ -import React, { useState } from "react"; -import JobsNavigation from "../components/JobsNavigation"; +import React from "react"; + import Posts from "../components/Posts"; -import SavedJobs from "../components/SavedJobs"; + import PageNavigation from "../../shared/components/Navigation/PageNavigation"; + import usePageNavigation from "../../shared/hooks/page-navigation-hook"; -import {Opportunity} from "../components/opportunitiesDetails"; import OpportunitiesList from "../components/opportunitiesDetails.tsx"; - interface PageNavigationType { activePage: string; pages: string[];
Position Description
{opportunity.name}