From 6fd90ef7d4b31df5e1484658299a2d1c93b2ec20 Mon Sep 17 00:00:00 2001 From: Narayanan Madaswamy Date: Sun, 12 Jul 2026 21:28:50 +0530 Subject: [PATCH] Fixed multiple page issue --- docengine/app/services/document_service.py | 6 ++- .../app/templates/templates.component.html | 43 +++++++++++-------- .../src/app/templates/templates.component.ts | 28 ++++++++++-- 3 files changed, 53 insertions(+), 24 deletions(-) diff --git a/docengine/app/services/document_service.py b/docengine/app/services/document_service.py index 4f2e36d..60f1998 100644 --- a/docengine/app/services/document_service.py +++ b/docengine/app/services/document_service.py @@ -54,10 +54,12 @@ class DocumentProcessingService: # Step 2: Analyze layout layout_results = self.layout_service.analyze_document_layout(document) - document.document_metadata = document.document_metadata or {} - document.document_metadata["layout"] = layout_results + metadata = document.document_metadata or {} + metadata["layout"] = layout_results + document.document_metadata = metadata # Step 3: Generate template + self.db.refresh(document) template = self.template_service.generate_template(document) # Step 4: Update document status diff --git a/frontend/src/app/templates/templates.component.html b/frontend/src/app/templates/templates.component.html index da5b998..c9f96b4 100644 --- a/frontend/src/app/templates/templates.component.html +++ b/frontend/src/app/templates/templates.component.html @@ -13,29 +13,34 @@ -
- +

Upload a document to view its extracted layout structure.

-
-
-
{{ node.block_type }}
-
{{ node.text_value }}
+
+ + +
+ +
+
{{ node.block_type }}
+
{{ node.text_value }}
+
@@ -73,7 +78,7 @@ [id]="'field-' + field.pk_template_field_id" cdkDropList [cdkDropListData]="mappings[field.pk_template_field_id]" - [cdkDropListConnectedTo]="['document-layout-list']" + [cdkDropListConnectedTo]="getCanvasDropLists()" (cdkDropListDropped)="drop($event, field.pk_template_field_id)">
diff --git a/frontend/src/app/templates/templates.component.ts b/frontend/src/app/templates/templates.component.ts index 2aa054e..919dd15 100644 --- a/frontend/src/app/templates/templates.component.ts +++ b/frontend/src/app/templates/templates.component.ts @@ -36,6 +36,7 @@ export class TemplatesComponent implements OnInit { // Document State documentId: string | null = null; layoutNodes: DocumentLayout[] = []; + pages: { page_number: number, nodes: DocumentLayout[], width: number, height: number }[] = []; pageWidth: number = 800; pageHeight: number = 1100; @@ -90,9 +91,26 @@ export class TemplatesComponent implements OnInit { return; } this.layoutNodes = layouts; - if (layouts.length > 0) { - this.pageWidth = layouts[0].page_width; - this.pageHeight = layouts[0].page_height; + + const pageMap = new Map(); + + layouts.forEach(node => { + if (!pageMap.has(node.page_no)) { + pageMap.set(node.page_no, { + page_number: node.page_no, + nodes: [], + width: node.page_width, + height: node.page_height + }); + } + pageMap.get(node.page_no)!.nodes.push(node); + }); + + this.pages = Array.from(pageMap.values()).sort((a, b) => a.page_number - b.page_number); + + if (this.pages.length > 0) { + this.pageWidth = this.pages[0].width; + this.pageHeight = this.pages[0].height; } // Trigger auto-recognition this.autoRecognize(); @@ -165,4 +183,8 @@ export class TemplatesComponent implements OnInit { // Return all field ID strings as drop lists return this.templateFields.map(f => 'field-' + f.pk_template_field_id); } + + getCanvasDropLists() { + return this.pages.map((_, i) => 'document-layout-list-' + i); + } }