From 768e176fddeb61ac8afd925e69bb2af3d9b108ae Mon Sep 17 00:00:00 2001 From: Cameron Otsuka Date: Mon, 16 Mar 2026 16:46:13 -0700 Subject: [PATCH] fix and simplify rating distribution chart --- src/components/ratingdistribution.astro | 66 +++++++++++++ .../ratingdistribution/component.astro | 98 ------------------- src/pages/reviews/index.astro | 2 +- 3 files changed, 67 insertions(+), 99 deletions(-) create mode 100644 src/components/ratingdistribution.astro delete mode 100644 src/components/ratingdistribution/component.astro diff --git a/src/components/ratingdistribution.astro b/src/components/ratingdistribution.astro new file mode 100644 index 0000000..8ce1ecb --- /dev/null +++ b/src/components/ratingdistribution.astro @@ -0,0 +1,66 @@ +--- +import { getCollection } from 'astro:content'; + +const reviews = await getCollection('reviews'); +const ratings = [1, 2, 3, 4, 5] as const; +const counts = [0, 0, 0, 0, 0]; + +for (const { data } of reviews) { + counts[data.rating - 1]++; +} + +const maxCount = Math.max(...counts, 1); + +const chartData = ratings.map((rating, index) => ({ + name: rating, + count: counts[index], + percent: (counts[index] / maxCount) * 100, +})); +--- + + + + diff --git a/src/components/ratingdistribution/component.astro b/src/components/ratingdistribution/component.astro deleted file mode 100644 index 4379d06..0000000 --- a/src/components/ratingdistribution/component.astro +++ /dev/null @@ -1,98 +0,0 @@ ---- -import { getCollection } from 'astro:content'; - -const reviews = await getCollection('reviews'); - -const ratingCounts: Record = { - 1: 0, - 2: 0, - 3: 0, - 4: 0, - 5: 0, -}; - -reviews.forEach((review) => { - ratingCounts[review.data.rating]++; -}); - -const maxCount = Math.max(...Object.values(ratingCounts), 1); - -const chartData = Object.entries(ratingCounts).map(([rating, count]) => ({ - name: rating, - count, -})); ---- - - - - diff --git a/src/pages/reviews/index.astro b/src/pages/reviews/index.astro index ca19c52..875a7dc 100644 --- a/src/pages/reviews/index.astro +++ b/src/pages/reviews/index.astro @@ -1,7 +1,7 @@ --- import { getCollection } from 'astro:content'; import Base from '@layouts/base.astro'; -import RatingDistribution from '@components/ratingdistribution/component.astro'; +import RatingDistribution from '@components/ratingdistribution.astro'; import Rating from '@components/ui/rating.astro'; import sortByDate from '@utils/sortByDate'; import generateContentUrl from '@utils/generateContentUrl'; -- 2.53.0