From fb63e6828347d3ccb29c950857bc91978f0b6b14 Mon Sep 17 00:00:00 2001 From: Kian Newman-Hazel Date: Wed, 16 Apr 2025 21:13:30 +0100 Subject: [PATCH 1/2] [Docs Site] Consider additional_groups in products.ts --- src/util/products.ts | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/util/products.ts b/src/util/products.ts index 2efa0f1f6a244f..6f071ad56b9871 100644 --- a/src/util/products.ts +++ b/src/util/products.ts @@ -3,12 +3,29 @@ import { getCollection } from "astro:content"; export const products = await getCollection("products"); export const productsByGroup = Object.entries( - Object.groupBy( - products.filter((product) => Boolean(product.data.product.group)), - (product) => product.data.product.group, - ), + products + .filter((product) => Boolean(product.data.product.group)) + .reduce((groups, product) => { + const primaryGroup = product.data.product.group; + const additionalGroups = product.data.product.additional_groups ?? []; + const allGroups = [primaryGroup, ...additionalGroups]; + + for (const group of allGroups) { + if (!groups[group]) { + groups[group] = []; + } + groups[group].push(product); + } + + return groups; + }, {} as Record), ); export const groups = [ - ...new Set(products.flatMap((product) => product.data.product.group ?? [])), + ...new Set( + products.flatMap((product) => [ + product.data.product.group, + ...(product.data.product.additional_groups ?? []), + ].filter(Boolean)), + ), ].sort(); From 8dfbbdb0569e2495db52e88d9637a1e1de102dd2 Mon Sep 17 00:00:00 2001 From: Kian Newman-Hazel Date: Wed, 16 Apr 2025 21:47:07 +0100 Subject: [PATCH 2/2] formatting --- src/util/products.ts | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/util/products.ts b/src/util/products.ts index 6f071ad56b9871..321ac9b4daed05 100644 --- a/src/util/products.ts +++ b/src/util/products.ts @@ -5,27 +5,32 @@ export const products = await getCollection("products"); export const productsByGroup = Object.entries( products .filter((product) => Boolean(product.data.product.group)) - .reduce((groups, product) => { - const primaryGroup = product.data.product.group; - const additionalGroups = product.data.product.additional_groups ?? []; - const allGroups = [primaryGroup, ...additionalGroups]; + .reduce( + (groups, product) => { + const primaryGroup = product.data.product.group; + const additionalGroups = product.data.product.additional_groups ?? []; + const allGroups = [primaryGroup, ...additionalGroups]; - for (const group of allGroups) { - if (!groups[group]) { - groups[group] = []; + for (const group of allGroups) { + if (!groups[group]) { + groups[group] = []; + } + groups[group].push(product); } - groups[group].push(product); - } - return groups; - }, {} as Record), + return groups; + }, + {} as Record, + ), ); export const groups = [ ...new Set( - products.flatMap((product) => [ - product.data.product.group, - ...(product.data.product.additional_groups ?? []), - ].filter(Boolean)), + products.flatMap((product) => + [ + product.data.product.group, + ...(product.data.product.additional_groups ?? []), + ].filter(Boolean), + ), ), ].sort();