This commit is contained in:
sebseb7
2025-11-24 11:23:18 +01:00
parent eb4866f37c
commit 27474cb9ec

View File

@@ -705,6 +705,21 @@
container.appendChild(ul);
}
function countSubcategoryArticles(children) {
let total = 0;
children.forEach(child => {
// Count articles in this child
const childCount = child.products ? child.products.length : child.articleCount;
total += childCount;
// Recursively count articles in nested subcategories
if (child.children && child.children.length > 0) {
total += countSubcategoryArticles(child.children);
}
});
return total;
}
function renderCategory(category) {
// category might be a filtered copy or original.
// If it's a copy, it has _original pointing to the real state node.
@@ -764,19 +779,30 @@
const count = document.createElement('div');
count.className = 'category-count';
// Use original counts or filtered counts?
// "remove all articles ... with no match"
// If filtered, we should probably show the count of MATCHING articles?
// User didn't specify, but it makes sense to show matching count if filtered.
// But articleCount comes from API.
// We can calculate it from products array if loaded.
const productCount = category.products ? category.products.length : category.articleCount;
// When filtering, show actual matching product count
// If this category is not a direct match (only matches due to subcategories),
// and products aren't loaded, show 0 instead of total articleCount
let productCount;
if (category.products !== null && category.products !== undefined) {
// Products are loaded, use the filtered count
productCount = category.products.length;
} else if (state.filter && !realNode._isDirectMatch) {
// Filtering is active and this is not a direct match, so show 0
productCount = 0;
} else {
// No filter or is a direct match, use API count
productCount = category.articleCount;
}
let countText = `${productCount} articles`;
// Always show subcategory count if children exist (User requirement)
// Use filtered children length
if (category.children && category.children.length > 0) {
const subcategoryArticleCount = countSubcategoryArticles(category.children);
countText += `, ${category.children.length} subcategories`;
if (subcategoryArticleCount > 0) {
countText += ` with ${subcategoryArticleCount} more articles`;
}
}
count.textContent = countText;
info.appendChild(count);