fix(PBI-96/T-1104): toon echte folder-totaal op docs-index i.p.v. preview-cap
Some checks are pending
CI / Lint, Typecheck, Test & Build (pull_request) Waiting to run
CI / Detect deploy-relevant changes (pull_request) Blocked by required conditions
CI / Deploy Preview (PR) (pull_request) Blocked by required conditions
CI / Deploy Production (main) (pull_request) Blocked by required conditions
CI / Deploy Manual (workflow_dispatch) (pull_request) Waiting to run

Page bouwde docsByFolder met max 3 docs per folder (voor preview-lijst),
en de card gebruikte docs.length als telling — dus folders met >3 docs
toonden altijd '3 docs'. Zichtbaar geworden door PBI-100 seed (vóór seed
had geen folder >3 docs).

Fix: page bouwt totalByFolder in dezelfde loop (geen extra query), geeft
door via ProductDocsIndex → ProductDocsFolderCard.totalCount.
This commit is contained in:
Janpeter Visser 2026-05-16 16:35:49 +02:00
parent a3bf6dbd4e
commit b2e26805b3
3 changed files with 12 additions and 2 deletions

View file

@ -49,7 +49,9 @@ export default async function ProductDocsIndexPage({ params }: Props) {
})
const docsByFolder: Partial<Record<ProductDocFolder, ProductDocCardItem[]>> = {}
const totalByFolder: Partial<Record<ProductDocFolder, number>> = {}
for (const doc of recentDocs) {
totalByFolder[doc.folder] = (totalByFolder[doc.folder] ?? 0) + 1
const bucket = docsByFolder[doc.folder] ?? []
if (bucket.length < 3) {
bucket.push({
@ -68,6 +70,7 @@ export default async function ProductDocsIndexPage({ params }: Props) {
productId={id}
enabledFolders={enabledFolders}
docsByFolder={docsByFolder}
totalByFolder={totalByFolder}
/>
)
}

View file

@ -21,10 +21,13 @@ interface Props {
productId: string
folder: ProductDocFolder
label: { title: string; description: string }
/** Preview-lijst, gecapped op 3 door de page-component. */
docs: ProductDocCardItem[]
/** Echt totaal-aantal docs in deze folder (kan >3 zijn). */
totalCount: number
}
export function ProductDocsFolderCard({ productId, folder, label, docs }: Props) {
export function ProductDocsFolderCard({ productId, folder, label, docs, totalCount }: Props) {
const folderApi = productDocFolderToApi(folder)
const folderUrl = `/products/${productId}/docs/${folderApi}`
@ -50,7 +53,7 @@ export function ProductDocsFolderCard({ productId, folder, label, docs }: Props)
</p>
</div>
<span className="text-xs text-muted-foreground tabular-nums shrink-0">
{docs.length} {docs.length === 1 ? 'doc' : 'docs'}
{totalCount} {totalCount === 1 ? 'doc' : 'docs'}
</span>
</div>

View file

@ -15,6 +15,8 @@ interface Props {
enabledFolders: ProductDocFolder[]
/** Per-folder lijst met (max 3) meest recent bijgewerkte docs. */
docsByFolder: Partial<Record<ProductDocFolder, ProductDocCardItem[]>>
/** Per-folder echt totaal-aantal docs (kan >3 zijn; voor card-telling). */
totalByFolder: Partial<Record<ProductDocFolder, number>>
}
// Vaste display-order (matcht Scrum4Me's eigen docs-tree).
@ -47,6 +49,7 @@ export function ProductDocsIndex({
productId,
enabledFolders,
docsByFolder,
totalByFolder,
}: Props) {
const orderedEnabled = FOLDER_ORDER.filter((f) => enabledFolders.includes(f))
@ -106,6 +109,7 @@ export function ProductDocsIndex({
folder={folder}
label={FOLDER_LABELS[folder]}
docs={docsByFolder[folder] ?? []}
totalCount={totalByFolder[folder] ?? 0}
/>
))}
</div>