From 12dfb67d0ed15137d08a810edd4be525e285b4e3 Mon Sep 17 00:00:00 2001 From: soulchicken Date: Sun, 4 Aug 2024 15:11:30 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A0=88=EC=8A=A4=ED=86=A0=EB=9E=91=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20API=20=ED=8F=BC=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../restaurantSummary/RestaurantSummary.tsx | 19 +------------------ .../restaurantSummary/StarRating.tsx | 6 +++++- src/types/restaurants.d.ts | 8 +++++--- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/src/components/bottomSheet/restaurantSummary/RestaurantSummary.tsx b/src/components/bottomSheet/restaurantSummary/RestaurantSummary.tsx index 4ac27f3..24c440f 100644 --- a/src/components/bottomSheet/restaurantSummary/RestaurantSummary.tsx +++ b/src/components/bottomSheet/restaurantSummary/RestaurantSummary.tsx @@ -47,23 +47,6 @@ const Category = styled.p` const RestaurantSummary: React.FC = ({ restaurant, }) => { - const calculateAverageRating = (): number => { - const { rating_naver, rating_kakao, rating_google } = restaurant; - const ratings = [ - parseFloat(rating_naver || '0'), - parseFloat(rating_kakao || '0'), - parseFloat(rating_google || '0'), - ]; - // 유효한 평점 수 계산 - const validRatings = ratings.filter((rating) => rating > 0); - // 유효한 평점이 없으면 'No ratings available' 반환 - if (validRatings.length === 0) return 0; - // 평균 계산 - const average = - validRatings.reduce((acc, curr) => acc + curr, 0) / validRatings.length; - return Number(average.toFixed(2)); - }; - return ( @@ -71,7 +54,7 @@ const RestaurantSummary: React.FC = ({ {restaurant.name} {/* TODO: address가 아니라 카테고리로 변경 */} {restaurant.address} - + diff --git a/src/components/bottomSheet/restaurantSummary/StarRating.tsx b/src/components/bottomSheet/restaurantSummary/StarRating.tsx index a103b2c..88e105e 100644 --- a/src/components/bottomSheet/restaurantSummary/StarRating.tsx +++ b/src/components/bottomSheet/restaurantSummary/StarRating.tsx @@ -4,7 +4,7 @@ import HalfStar from '~/assets/ratingStar/HalfStar'; import VoidStar from '~/assets/ratingStar/VoidStar'; type StarRatingProps = { - rating: number; // 5.0 만점 기준의 평점 + rating: number | null; // 5.0 만점 기준의 평점 }; const StarWrapper = styled.div` @@ -13,6 +13,10 @@ const StarWrapper = styled.div` `; const StarRating: React.FC = ({ rating }) => { + if (rating === null) { + rating = 0; + } + const fullStars = Math.floor(rating); // 정수 부분의 개수 (FullStar 개수) const halfStar = rating % 1 >= 0.5; // 0.5점 이상일 경우 HalfStar 사용 const voidStars = 5 - fullStars - (halfStar ? 1 : 0); // 나머지 VoidStar 개수 diff --git a/src/types/restaurants.d.ts b/src/types/restaurants.d.ts index d96273c..42c84d8 100644 --- a/src/types/restaurants.d.ts +++ b/src/types/restaurants.d.ts @@ -1,9 +1,11 @@ export interface Restaurant { id: number; name: string; - rating_naver: string | null; - rating_kakao: string | null; - rating_google: string | null; + food_type: string | null; + rating_average: number | null; + rating_naver: number | null; + rating_kakao: number | null; + rating_google: number | null; address: string; latitude: number; longitude: number;