From 61f2bad7f1a4dc8d3a02c2e4cb5765c5adcab621 Mon Sep 17 00:00:00 2001 From: trialnerr <54381853+trialnerr@users.noreply.github.com> Date: Thu, 9 Jan 2025 18:40:59 -0500 Subject: [PATCH 1/8] Edit Review opens editor for ALL reviews #105 Add margin to list items. Change margin top for btn wrapper --- src/components/CompanyReviews/companyReviews.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/CompanyReviews/companyReviews.css b/src/components/CompanyReviews/companyReviews.css index dcb4cde..e0d845f 100644 --- a/src/components/CompanyReviews/companyReviews.css +++ b/src/components/CompanyReviews/companyReviews.css @@ -26,9 +26,11 @@ font-size: 1.6rem; color: #aaa; transition: background-color 0.3s; + margin-bottom: 0.5rem; } .review-list li:hover { background-color: #333; + } /* Buttons */ .action-btn { @@ -54,6 +56,6 @@ .btn-wrapper { display: flex; gap: 2rem; - margin-top: 20px; + margin-top: 1rem; justify-content: center; } \ No newline at end of file From 09c7ad98433b3aadcf332408a2c976d6786b0e7a Mon Sep 17 00:00:00 2001 From: trialnerr <54381853+trialnerr@users.noreply.github.com> Date: Thu, 9 Jan 2025 18:43:50 -0500 Subject: [PATCH 2/8] Edit Review opens editor for ALL reviews #105 Add validation so that if numbers outside of range are added they are readjusted. Delete console logs --- .../CompanyReviews/CompanyReviews.jsx | 58 +++++-------------- 1 file changed, 16 insertions(+), 42 deletions(-) diff --git a/src/components/CompanyReviews/CompanyReviews.jsx b/src/components/CompanyReviews/CompanyReviews.jsx index 9717669..4b0e130 100644 --- a/src/components/CompanyReviews/CompanyReviews.jsx +++ b/src/components/CompanyReviews/CompanyReviews.jsx @@ -1,10 +1,8 @@ -import { useEffect, useState, useRef } from 'react' +import { useState, useRef } from 'react' import './companyReviews.css' -// import { Link } from 'react-router' +import validateRatings from '../../utils/validateRatings' -const CompanyReviews = () => { - //do a fetch request and populate the company reviews! - const [userReviews, setUserReviews] = useState([]) +const CompanyReviews = ({review, setReviews}) => { const [isEditing, setIsEditing] = useState(false) const positionRef = useRef() @@ -17,26 +15,8 @@ const CompanyReviews = () => { const salaryRef = useRef() const commentRef = useRef() - console.log(userReviews, 'userReviews in Company Reviews') - - useEffect(() => { - const getUserReviews = async () => { - try { - const response = await fetch('/api/review') - if (!response.ok) console.log(response.statusText) - const reviews = await response.json() - - console.log(reviews, 'userReviews') - setUserReviews(reviews.userReviews) - } catch (error) { - console.error(`Error getting a user's reviews, ${error}`) - } - } - getUserReviews() - }, []) async function handleDeleteReview(reviewId) { - console.log({ reviewId }) const response = await fetch(`/api/review/${reviewId}`, { method: 'DELETE', headers: { @@ -45,7 +25,7 @@ const CompanyReviews = () => { }) if (response.ok) { // set state to filtered list of reviews without that of deleted ID - setUserReviews((currentReviews) => + setReviews((currentReviews) => currentReviews.filter((review) => review._id !== reviewId), ) } else { @@ -53,16 +33,13 @@ const CompanyReviews = () => { } } - async function handleEditReview(reviewId) { - console.log({ reviewId }) + async function handleEditReview() { setIsEditing(true) } async function handleSave(reviewId) { setIsEditing(false) - console.log(positionRef.current.value) - console.log(accountabilityRef.current.value) - console.log(commentRef.current.value) + const response = await fetch(`/api/review/${reviewId}`, { method: 'PUT', headers: { @@ -70,13 +47,13 @@ const CompanyReviews = () => { }, body: JSON.stringify({ newRatings: { - accountability: accountabilityRef.current.value, - representation: representationRef.current.value, - workLifeBalance: workLifeBalanceRef.current.value, - careerGrowth: careerGrowthRef.current.value, - diversityScale: diversityScaleRef.current.value, - companyCulture: companyCultureRef.current.value, - salary: salaryRef.current.value, + accountability: validateRatings(accountabilityRef.current.value), + representation: validateRatings(representationRef.current.value), + workLifeBalance: validateRatings(workLifeBalanceRef.current.value), + careerGrowth: validateRatings(careerGrowthRef.current.value), + diversityScale: validateRatings(diversityScaleRef.current.value), + companyCulture: validateRatings(companyCultureRef.current.value), + salary: validateRatings(salaryRef.current.value), }, comment: commentRef.current.value, position: positionRef.current.value, @@ -87,7 +64,7 @@ const CompanyReviews = () => { const updatedResponse = await fetch('/api/review') if (updatedResponse.ok) { const updatedReviews = await updatedResponse.json() - setUserReviews(updatedReviews.userReviews) + setReviews(updatedReviews.userReviews) } else { console.error( 'Failed to fetch updated reviews:', @@ -107,11 +84,9 @@ const CompanyReviews = () => { } return ( -
-

Reviews You have Left (Only Visible to You)

+
- ))}
) From 4ef1b089f7c8aa8e818dfbd54b6e759b94156d78 Mon Sep 17 00:00:00 2001 From: trialnerr <54381853+trialnerr@users.noreply.github.com> Date: Thu, 9 Jan 2025 18:44:31 -0500 Subject: [PATCH 3/8] Add styling to center the heading --- src/pages/Profile/profile.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pages/Profile/profile.css b/src/pages/Profile/profile.css index 9e51fd1..20d920f 100644 --- a/src/pages/Profile/profile.css +++ b/src/pages/Profile/profile.css @@ -14,3 +14,7 @@ border-radius: 4px; border: 1px solid #444; } + +.profile_center{ + text-align: center; +} From 3402265d27979df6deaf9da29798998be24dda7e Mon Sep 17 00:00:00 2001 From: trialnerr <54381853+trialnerr@users.noreply.github.com> Date: Thu, 9 Jan 2025 18:45:42 -0500 Subject: [PATCH 4/8] #105 Move state up to the parent and render CompanyReviews children inside of Profile to prevent editing state being shared by all children. --- src/pages/Profile/Profile.jsx | 42 ++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/pages/Profile/Profile.jsx b/src/pages/Profile/Profile.jsx index cf2d073..73c242c 100644 --- a/src/pages/Profile/Profile.jsx +++ b/src/pages/Profile/Profile.jsx @@ -8,31 +8,53 @@ function Profile() { const { isLoaded, user } = useUser() const [userName, setUserName] = useState() const [userImage, setUserImage] = useState() - console.log(userName, userImage); + const [userReviews, setUserReviews] = useState([]) useEffect(() => { if (!isLoaded || !user) { - return + return } else { setUserImage(user.imageUrl) setUserName(user.username) } }, [isLoaded, user]) + //do a fetch request and populate the company reviews! + useEffect(() => { + const getUserReviews = async () => { + try { + const response = await fetch('/api/review') + if (!response.ok) console.log(response.statusText) + const reviews = await response.json() + + console.log(reviews, 'userReviews') + setUserReviews(reviews.userReviews) + } catch (error) { + console.error(`Error getting a user's reviews, ${error}`) + } + } + getUserReviews() + }, []) + if (!isLoaded || !user) { - return
....Loading
//make this look pretty like a loading bar or something + return
....Loading
//make this look pretty like a loading bar or something } - //load a user's reviews (done) - //delete button for a review (done) - //load the profile pic (done) - //load the userName (done) - //add an edit button for a review (TO DO!) - //add a list of favorite companies + return (
+ +

+ Reviews You have Left (Only Visible to You) +

- + {userReviews.map((review, index) => ( + + ))}
) From 0c71ec50d5a7cf960e955ad3d6eb5befe2279c1f Mon Sep 17 00:00:00 2001 From: trialnerr <54381853+trialnerr@users.noreply.github.com> Date: Thu, 9 Jan 2025 18:46:06 -0500 Subject: [PATCH 5/8] #105 Add a validateRatings util function --- src/utils/validateRatings.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/utils/validateRatings.js diff --git a/src/utils/validateRatings.js b/src/utils/validateRatings.js new file mode 100644 index 0000000..222849a --- /dev/null +++ b/src/utils/validateRatings.js @@ -0,0 +1,6 @@ +//a function to bound the rating between 1 and 5 +const validateRatings = (rating) => { + return Math.max(1, Math.min(rating, 5)) +} + +export default validateRatings \ No newline at end of file From 239fc376b403befee068b308bf2ea7264583d08d Mon Sep 17 00:00:00 2001 From: trialnerr <54381853+trialnerr@users.noreply.github.com> Date: Thu, 9 Jan 2025 19:34:36 -0500 Subject: [PATCH 6/8] Update salaries to salary to match schema --- server/controllers/reviews.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/controllers/reviews.js b/server/controllers/reviews.js index 4adf1d3..28d5715 100644 --- a/server/controllers/reviews.js +++ b/server/controllers/reviews.js @@ -143,7 +143,7 @@ const reviewController = { 'questions.careerGrowth': newRatings.careerGrowth, 'questions.diversityScale': newRatings.diversityScale, 'questions.companyCulture': newRatings.companyCulture, - 'questions.salary': newRatings.salaries, + 'questions.salary': newRatings.salary, comment, }, }, From 4420f86f9d16496b11593197353587f8e3078313 Mon Sep 17 00:00:00 2001 From: trialnerr <54381853+trialnerr@users.noreply.github.com> Date: Thu, 9 Jan 2025 19:34:48 -0500 Subject: [PATCH 7/8] Remove console log --- src/components/CompanyReviews/CompanyReviews.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/CompanyReviews/CompanyReviews.jsx b/src/components/CompanyReviews/CompanyReviews.jsx index 4b0e130..cc3fe38 100644 --- a/src/components/CompanyReviews/CompanyReviews.jsx +++ b/src/components/CompanyReviews/CompanyReviews.jsx @@ -39,7 +39,7 @@ const CompanyReviews = ({review, setReviews}) => { async function handleSave(reviewId) { setIsEditing(false) - + console.log(validateRatings(salaryRef.current.value)) const response = await fetch(`/api/review/${reviewId}`, { method: 'PUT', headers: { From 58452999e03f567a3fcefef5611073a17248a217 Mon Sep 17 00:00:00 2001 From: trialnerr <54381853+trialnerr@users.noreply.github.com> Date: Thu, 9 Jan 2025 19:34:57 -0500 Subject: [PATCH 8/8] Remove console logs --- src/pages/Profile/Profile.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/Profile/Profile.jsx b/src/pages/Profile/Profile.jsx index 73c242c..2dad25f 100644 --- a/src/pages/Profile/Profile.jsx +++ b/src/pages/Profile/Profile.jsx @@ -27,7 +27,6 @@ function Profile() { if (!response.ok) console.log(response.statusText) const reviews = await response.json() - console.log(reviews, 'userReviews') setUserReviews(reviews.userReviews) } catch (error) { console.error(`Error getting a user's reviews, ${error}`)