diff --git a/apps/web/src/app/api/worksheets/preview/route.ts b/apps/web/src/app/api/worksheets/preview/route.ts index 309b4992..b4c41ace 100644 --- a/apps/web/src/app/api/worksheets/preview/route.ts +++ b/apps/web/src/app/api/worksheets/preview/route.ts @@ -17,7 +17,14 @@ export async function POST(request: Request) { return NextResponse.json({ success: false, error: 'Missing config' }, { status: 400 }) } - // Add date and seed if missing + // Calculate derived state fields + const problemsPerPage = config.problemsPerPage ?? 20 + const pages = config.pages ?? 1 + const cols = config.cols ?? 5 + const rows = Math.ceil((problemsPerPage * pages) / cols) + const total = problemsPerPage * pages + + // Add date, seed, and derived fields if missing const fullConfig: WorksheetFormState = { ...config, date: @@ -28,6 +35,8 @@ export async function POST(request: Request) { year: 'numeric', }), seed: config.seed || Date.now() % 2147483647, + rows, + total, } // Generate preview diff --git a/apps/web/src/app/create/worksheets/generatePreview.ts b/apps/web/src/app/create/worksheets/generatePreview.ts index c6b79963..d059d458 100644 --- a/apps/web/src/app/create/worksheets/generatePreview.ts +++ b/apps/web/src/app/create/worksheets/generatePreview.ts @@ -115,7 +115,13 @@ export function generateWorksheetPreview(config: WorksheetFormState): PreviewRes } // Generate Typst sources (one per page) + console.log('[generatePreview] Generated problems:', problems.length, 'for config:', { + pages: validatedConfig.pages, + problemsPerPage: validatedConfig.problemsPerPage, + total: validatedConfig.total, + }) const typstSources = generateTypstSource(validatedConfig, problems) + console.log('[generatePreview] Generated Typst sources:', typstSources.length, 'pages') // Compile each page source to SVG (using stdout for single-page output) const pages: string[] = []