feat: implement category flags, drop global tables, fix sidebar sticky layout
All checks were successful
Staging Build / build (push) Successful in 2m48s

This commit is contained in:
DanielS
2026-07-10 15:27:55 +02:00
parent 305671acc6
commit 43e6a92663
5 changed files with 64 additions and 82 deletions

View File

@@ -7,6 +7,8 @@ export function validateWizardSelections(
): void {
for (const cat of dbCategories) {
const sel = selections[cat.id]
// --- is_required: Pflichtauswahl prüfen ---
const hasSelection = sel && (
(cat.allow_multiselect && sel.productIds && sel.productIds.length > 0) ||
(!cat.allow_multiselect && sel.productId)
@@ -17,6 +19,13 @@ export function validateWizardSelections(
}
if (sel) {
// --- allow_multiselect = false: keine doppelten IDs erlaubt ---
if (!cat.allow_multiselect && sel.productIds && sel.productIds.length > 1) {
throw new Error(
`Die Kategorie "${cat.name}" erlaubt keine Mehrfachauswahl. Bitte nur ein Produkt wählen.`
)
}
const selectedProds: Product[] = []
if (cat.allow_multiselect && sel.productIds) {
sel.productIds.forEach(pId => {
@@ -32,8 +41,8 @@ export function validateWizardSelections(
// Validate selected modules
for (const mId of sel.moduleIds) {
const mod = prod.modules?.find(m => m.id === mId)
if (!mod) continue // module might belong to another selected product in the same category, so skip error if it's not this one's
if (!mod) continue
// Requirements check
if (mod.requirements && mod.requirements.length > 0) {
const hasMetRequirement = mod.requirements.some(reqId => sel.moduleIds.includes(reqId))
@@ -53,7 +62,7 @@ export function validateWizardSelections(
}
}
// Product-level constraints validation
// --- Product-level constraints validation ---
const selectedProductIds: string[] = []
Object.values(selections).forEach(s => {
if (s.productIds && s.productIds.length > 0) {
@@ -92,3 +101,4 @@ export function validateWizardSelections(
}
}
}