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)
+
- {userReviews.map((review, index) => (
- -
+
-
{!isEditing ? (
- {`Company Name: ${review.companyName}`}
@@ -301,7 +276,6 @@ const CompanyReviews = () => {
)}
- ))}
)
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}`)