From b11ef66e1c234d29475a40d336a70ddd1e6d274a Mon Sep 17 00:00:00 2001
From: Dohyeong Kim <cheeh0103@ajou.ac.kr>
Date: Sat, 7 Dec 2024 00:05:16 +0900
Subject: [PATCH] edit sporttype

---
 webapp/frontend/src/components/ListItem.js  | 47 ++++++++++++++++-----
 webapp/frontend/src/components/Listing.js   | 43 +++++++++++++++----
 webapp/frontend/src/components/Region.js    |  4 +-
 webapp/frontend/src/components/Search.js    | 12 +++---
 webapp/frontend/src/contexts/CrewContext.js |  1 -
 5 files changed, 78 insertions(+), 29 deletions(-)

diff --git a/webapp/frontend/src/components/ListItem.js b/webapp/frontend/src/components/ListItem.js
index 497d9ca..d465a1a 100644
--- a/webapp/frontend/src/components/ListItem.js
+++ b/webapp/frontend/src/components/ListItem.js
@@ -18,6 +18,31 @@ function ListItem( {crew, event, updateApplicants} ){
   const [crewRegionNames, setCrewRegionNames] = useState({}); //상위지역, 하위지역 이름 저장
   const [eventRegionNames, setEventRegionNames] = useState({});
 
+  const sportTypes = [
+    {
+      sportTypeId: 1,
+      sportName: "러닝",
+      metadata: {
+        distance: ["3~4km", "5~6km", "7~8km", "9km 이상"],
+        pace: ["4:00~4:30", "4:30~5:00", "5:00~5:30", "5:30~6:00", "6:00~6:30", "6:30 이상"]
+      }
+    },
+    {
+      sportTypeId: 2,
+      sportName: "헬스",
+      metadata: {
+        experience: ["초보자 (0~1년)", "중급자 (2~3년)", "상급자 (3년 이상)"]
+      }
+    },
+    {
+      sportTypeId: 3,
+      sportName: "클라이밍",
+      metadata: {
+        difficulty: ["상관 없음", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8+"]
+      }
+    }
+  ];
+
 
   const handleCrewRegisterModal = () => {
     setCrewRegisterModal(true);
@@ -175,10 +200,10 @@ function ListItem( {crew, event, updateApplicants} ){
       <div className="listingItem">
         <p className='title'>{crew.name}</p>
         <p className='location'>
-          <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/location.png'} alt="listinglocatin" />{crew.region}
+          <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/location.png'} alt="listinglocatin" />{crewRegionNames.regionName} {crewRegionNames.parentRegionName}
         </p>
         <p className='type'>
-          <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/sporttype.png'} alt="listingsporttype" />{crew.type}
+          <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/sporttype.png'} alt="listingsporttype" />{sportTypes[crew.sportTypeId - 1]}
         </p>
         <p className='people'>
           <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/people.png'} alt="listingsportpeople" />{crew.capacity}
@@ -197,11 +222,11 @@ function ListItem( {crew, event, updateApplicants} ){
               </div>
 
               <div className="crewType">
-                종목 <span>{crew.type}</span>
+                종목 <span>{sportTypes[crew.sportTypeId - 1]}</span>
               </div>
 
               <div className="crewFee">
-                가입 비용 <span>{crew.fee}</span>                
+                가입 비용 <span>{crew.fee_krw}</span>                
               </div>
 
               <div className="crewCapacity">
@@ -209,11 +234,11 @@ function ListItem( {crew, event, updateApplicants} ){
               </div>
   
               <div className="crewBio">
-                크루 소개 <span>{crew.bio}</span>
+                크루 소개 <span>{crew.description}</span>
               </div>
             </div>
 
-            <button className="createRegisterButton" onClick={handleCrewRegister}>가입하기</button>
+            <button className="createRegisterButton" onClick={()=>handleCrewRegister(crew.id)}>가입하기</button>
 
           </div>
         </div>
@@ -224,10 +249,10 @@ function ListItem( {crew, event, updateApplicants} ){
       <div className="listingItem">
         <p className='title'>{event.name}</p>
         <p className='location'>
-          <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/location.png'} alt="listinglocatin" />{event.region}
+          <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/location.png'} alt="listinglocatin" />{eventRegionNames.regionName} {eventRegionNames.parentRegionName}
         </p>
         <p className='type'>
-          <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/sporttype.png'} alt="listingsporttype" />{event.type}
+          <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/sporttype.png'} alt="listingsporttype" />{sportTypes[event.sportTypeId - 1]}
         </p>
         <p className='people'>
           <img  className='listingItemImage' src={process.env.PUBLIC_URL + '/people.png'} alt="listingsportpeople" />{event.capacity}
@@ -246,11 +271,11 @@ function ListItem( {crew, event, updateApplicants} ){
               </div>
 
               <div className="eventType">
-                종목 <span>{event.type}</span>
+                종목 <span>{sportTypes[crew.sportTypeId - 1]}</span>
               </div>
 
               <div className="eventDate">
-                운동 일시 <span>{event.date}</span>
+                운동 일시 <span>{event.eventDate}</span>
               </div>
 
               <div className="eventCapacity">
@@ -258,7 +283,7 @@ function ListItem( {crew, event, updateApplicants} ){
               </div>
   
               <div className="eventCondition">
-                조건 <span>{event.condition}</span>
+                조건 <span>{event.feeCondition}</span>
               </div>
             </div>
 
diff --git a/webapp/frontend/src/components/Listing.js b/webapp/frontend/src/components/Listing.js
index c16e38b..d89bbb9 100644
--- a/webapp/frontend/src/components/Listing.js
+++ b/webapp/frontend/src/components/Listing.js
@@ -28,6 +28,31 @@ function Listing(){
 
   const [regionID, setRegionID] = useState('');
 
+  const sportTypes = [
+    {
+      sportTypeId: 1,
+      sportName: "러닝",
+      metadata: {
+        distance: ["3~4km", "5~6km", "7~8km", "9km 이상"],
+        pace: ["4:00~4:30", "4:30~5:00", "5:00~5:30", "5:30~6:00", "6:00~6:30", "6:30 이상"]
+      }
+    },
+    {
+      sportTypeId: 2,
+      sportName: "헬스",
+      metadata: {
+        experience: ["초보자 (0~1년)", "중급자 (2~3년)", "상급자 (3년 이상)"]
+      }
+    },
+    {
+      sportTypeId: 3,
+      sportName: "클라이밍",
+      metadata: {
+        difficulty: ["상관 없음", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8+"]
+      }
+    }
+  ];
+
   useEffect(() => {
     const fetchCrews = async () => {
       try {
@@ -191,12 +216,12 @@ function Listing(){
                       <label htmlFor="crewType">종목</label>
                       <select name="type" id="crewType" value={crewFormData.type} onChange={handleCrewChange}>
                         <option className='crewTypeOption' value="">선택 ▼</option>
-                        <option value="running">러닝</option>
-                        <option value="climbing">클라이밍</option>
-                        <option value="fitness">헬스</option>
+                        <option value="1">러닝</option>
+                        <option value="3">클라이밍</option>
+                        <option value="2">헬스</option>
                       </select>
                     </div>
-                    
+
                     <div className="crewFeeInput">
                       <label htmlFor="crewFee">가입비용</label>
                       <input type="number" id='crewFee' name='fee' placeholder='입력하기' value={crewFormData.fee} onChange={handleCrewChange} />
@@ -242,11 +267,11 @@ function Listing(){
 
                     <div className="eventTypeInput">
                       <label htmlFor="eventType">종목</label>
-                      <select name="type" id="eventType" value={eventFormData.type} onChange={handleEventChange}>
-                        <option className='eventTypeOption' value="">선택 ▼</option>
-                        <option value="러닝">러닝</option>
-                        <option value="클라이밍">클라이밍</option>
-                        <option value="헬스">헬스</option>
+                      <select name="type" id="crewType" value={crewFormData.typeId} onChange={handleCrewChange}>
+                        <option className='crewTypeOption' value="">선택 ▼</option>
+                        <option value="1">러닝</option>
+                        <option value="3">클라이밍</option>
+                        <option value="2">헬스</option>
                       </select>
                     </div>
 
diff --git a/webapp/frontend/src/components/Region.js b/webapp/frontend/src/components/Region.js
index 410d8c2..4839e18 100644
--- a/webapp/frontend/src/components/Region.js
+++ b/webapp/frontend/src/components/Region.js
@@ -55,8 +55,8 @@ function Region( {onRegionSelect} ) {
   };
 
   useEffect(()=>{
-    onRegionSelect(selectedRegionSubID);
-  },[selectedRegionSubID])
+    onRegionSelect(selectedRegionID);
+  },[selectedRegionID])
   
   const handleRegionChange = (e) => {
     setSelectedRegionID(e.target.value);
diff --git a/webapp/frontend/src/components/Search.js b/webapp/frontend/src/components/Search.js
index 2ee18fa..431f923 100644
--- a/webapp/frontend/src/components/Search.js
+++ b/webapp/frontend/src/components/Search.js
@@ -47,9 +47,9 @@ function Search() {
         <span className='crewSearchMessage'>크루 검색하기</span>
         <select name="crewSportType" id="crewSportType">
           <option value="">종목 ▼</option>
-          <option value="running">러닝</option>
-          <option value="climbing">클라이밍</option>
-          <option value="fitness">헬스</option>
+          <option value="1">러닝</option>
+          <option value="3">클라이밍</option>
+          <option value="2">헬스</option>
         </select>
 
         <Region onRegionSelect={handleRegionChange}/>
@@ -61,9 +61,9 @@ function Search() {
         <span className='meetingSearchMessage'>모임 검색하기</span>
         <select name="meetingSportType" id="meetingSportType">
           <option value="">종목 ▼</option>
-          <option value="running">러닝</option>
-          <option value="climbing">클라이밍</option>
-          <option value="fitness">헬스</option>
+          <option value="1">러닝</option>
+          <option value="3">클라이밍</option>
+          <option value="2">헬스</option>
         </select>
 
         <Region onRegionSelect={handleRegionChange}/>
diff --git a/webapp/frontend/src/contexts/CrewContext.js b/webapp/frontend/src/contexts/CrewContext.js
index 7e69cfe..0f0fd3d 100644
--- a/webapp/frontend/src/contexts/CrewContext.js
+++ b/webapp/frontend/src/contexts/CrewContext.js
@@ -41,7 +41,6 @@ export const CrewProvider = ({ children }) => {
 
 
   const onCreateCrew = (newCrew) => {
-    setCrews(prevCrews => [...prevCrews, newCrew]);
     fetch(`${apiUrl}/api/crews`, {
       method: 'POST',
       headers: {
-- 
GitLab