From f2264eba167327c1327baea615cb3f3f84d1895e Mon Sep 17 00:00:00 2001 From: Josh Date: Tue, 22 Jul 2025 19:25:19 +0000 Subject: [PATCH] Added button for New College Plan --- src/components/CareerSelectDropdown.js | 4 +- src/components/CollegeProfileForm.js | 10 -- src/components/CollegeProfileList.js | 131 +++++++++++++++++++++---- 3 files changed, 117 insertions(+), 28 deletions(-) diff --git a/src/components/CareerSelectDropdown.js b/src/components/CareerSelectDropdown.js index 5efcafa..ac8ba7a 100644 --- a/src/components/CareerSelectDropdown.js +++ b/src/components/CareerSelectDropdown.js @@ -26,7 +26,9 @@ const CareerSelectDropdown = ({ existingCareerProfiles, selectedCareer, onChange return (
- + {loading ? (

Loading career paths...

) : ( diff --git a/src/components/CollegeProfileForm.js b/src/components/CollegeProfileForm.js index f0e840a..2894bc2 100644 --- a/src/components/CollegeProfileForm.js +++ b/src/components/CollegeProfileForm.js @@ -240,10 +240,6 @@ return (

{id === 'new' ? 'New' : 'Edit'} College Plan

- - {(form.college_enrollment_status === 'currently_enrolled' || - form.college_enrollment_status === 'prospective_student') ? ( - /* ───────────────────────────────────────────────────────── */
{/* 1 │ Location / modality check‑boxes */} @@ -492,12 +488,6 @@ return ( />
- ) : ( -

- User is neither currently enrolled nor a prospective student – nothing to - edit. -

- )} {/* 11 │ Action buttons */}
diff --git a/src/components/CollegeProfileList.js b/src/components/CollegeProfileList.js index aabc834..84c0d82 100644 --- a/src/components/CollegeProfileList.js +++ b/src/components/CollegeProfileList.js @@ -1,23 +1,100 @@ -import React, { useEffect, useState } from 'react'; -import { Link, useNavigate } from 'react-router-dom'; +// src/components/CollegeProfileList.js +import React, { useEffect, useState } from "react"; +import { Link, useNavigate, useParams } from "react-router-dom"; +import CareerSelectDropdown from "./CareerSelectDropdown.js"; +import authFetch from "../utils/authFetch.js"; export default function CollegeProfileList() { - const [rows, setRows] = useState([]); - const nav = useNavigate(); - const token = localStorage.getItem('token'); + const { careerId } = useParams(); // may be undefined + const navigate = useNavigate(); + const token = localStorage.getItem("token"); + /* ───────── existing lists ───────── */ + const [rows, setRows] = useState([]); + const [careerRows, setCareerRows] = useState([]); + + /* ───────── ui state ───────── */ + const [showPicker, setShowPicker] = useState(false); + const [loadingCareers, setLoadingCareers] = useState(true); + + /* ───────── load college plans ───────── */ useEffect(() => { - fetch('/api/premium/college-profile/all', { + fetch("/api/premium/college-profile/all", { headers: { Authorization: `Bearer ${token}` } }) - .then(r => r.json()) - .then(d => setRows(d.collegeProfiles || [])); + .then((r) => r.json()) + .then((d) => setRows(d.collegeProfiles || [])); }, [token]); - return ( -
-

College Profiles

+ /* ───────── load career profiles for the picker ───────── */ + useEffect(() => { + (async () => { + try { + const res = await authFetch("/api/premium/career-profile/all"); + const data = await res.json(); + setCareerRows(data.careerProfiles || []); + } catch (err) { + console.error("Career profiles load failed:", err); + } finally { + setLoadingCareers(false); + } + })(); + }, []); + /* ───────── delete helper ───────── */ + async function handleDelete(id) { + if (!window.confirm("Delete this college plan?")) return; + try { + await fetch(`/api/premium/college-profile/${id}`, { + method: "DELETE", + headers: { Authorization: `Bearer ${token}` } + }); + setRows((r) => r.filter((row) => row.id !== id)); + } catch (err) { + console.error("Delete failed:", err); + alert("Could not delete – see console."); + } + } + + return ( +
+ {/* ───────── header row ───────── */} +
+

College Plans

+ + {/* new‑plan button & inline picker */} + {!showPicker ? ( + + ) : ( +
+ { + if (!careerObj?.id) return; + navigate(`/profile/college/${careerObj.id}/new`); + }} + /> +
+ +
+
+ )} +
+ + {/* ───────── table of existing college plans ───────── */} @@ -28,27 +105,47 @@ export default function CollegeProfileList() { + - {rows.map(r => ( + {rows.map((r) => ( - - + ))} + {rows.length === 0 && ( - + + + )}
{r.career_title} {r.selected_school} {r.selected_program}{r.created_at?.slice(0,10)} + {r.created_at?.slice(0, 10)} edit +
- No college profiles yet -
+ No college profiles yet.  + +