From 546681e27a78a0d4b1bf00c3ab31a2d23dd82a73 Mon Sep 17 00:00:00 2001 From: SverreNystad Date: Mon, 25 Nov 2024 17:20:53 +0100 Subject: [PATCH] feat: add mock to frontend MarkedCheckpoint to ChecklistItemData --- .../mine-saker/dashbord/[caseNumber]/page.tsx | 215 +++++++++++------- 1 file changed, 133 insertions(+), 82 deletions(-) diff --git a/webapp/src/app/mottak/mine-saker/dashbord/[caseNumber]/page.tsx b/webapp/src/app/mottak/mine-saker/dashbord/[caseNumber]/page.tsx index bbbdf50..3c0d04f 100644 --- a/webapp/src/app/mottak/mine-saker/dashbord/[caseNumber]/page.tsx +++ b/webapp/src/app/mottak/mine-saker/dashbord/[caseNumber]/page.tsx @@ -12,33 +12,77 @@ import type { Detection } from "~/types/detection"; import { transformDetectionToChecklist } from "~/utils/helpers"; import FeedbackSender from "~/components/FeedbackSender"; -const fetchDetections = (): Detection[] => { +// Define MarkedCheckpoint interface +interface MarkedCheckpoint { + check_point_name: string; + status: "Correct" | "Uncertain" | "Incorrect"; + reason: string; +} +// Assuming you have these interfaces defined + +export interface SubItem { + id: string; + description: string; + isComplete: boolean; +} + +export interface ChecklistItemData { + id: string; + fileName: string; + points: number; + subItems: SubItem[]; +} + +// Define SummaryResponse interface +interface SummaryResponse { + summary: string[]; + marked_checklist: MarkedCheckpoint[]; +} + +// Unique ID generator +const generateUniqueId = () => Math.random().toString(36).substr(2, 9); + +// Function to transform MarkedCheckpoint to ChecklistItemData +const transformMarkedChecklistToChecklistItemData = ( + markedChecklist: MarkedCheckpoint[] +): ChecklistItemData[] => { + return markedChecklist.map((checkpoint) => ({ + id: generateUniqueId(), + fileName: checkpoint.check_point_name, + points: 1, + subItems: [ + { + id: generateUniqueId(), + description: checkpoint.reason, + isComplete: checkpoint.status === "Correct", + }, + ], + })); +}; + +const fetchDetections = (): Detection[] => { const detections: Detection[] = [ { - file_name: 'Plantegning.pdf', - drawing_type: ['plantegning'], - room_names: 'Mangler rombenevnelse', + file_name: "Plantegning.pdf", + drawing_type: ["plantegning"], + room_names: "Mangler rombenevnelse", }, { - file_name: 'Snitt.pdf', - drawing_type: ['snitt'], - scale: 'Mangler målestokk', + file_name: "Snitt.pdf", + drawing_type: ["snitt"], + scale: "Mangler målestokk", }, { - file_name: 'Fasade.pdf', - drawing_type: ['fasade'], - cardinal_direction: 'Mangler himmelretning', - scale: 'Mangler målestokk', + file_name: "Fasade.pdf", + drawing_type: ["fasade"], + cardinal_direction: "Mangler himmelretning", + scale: "Mangler målestokk", }, - { - file_name: 'Situasjonskart.pdf', - drawing_type: ['situasjonskart'], - } ]; return detections; -} +}; export default function CaseDashboard() { const { caseNumber } = useParams(); @@ -56,86 +100,96 @@ export default function CaseDashboard() { if (!date) { return "No date provided"; } - return date.toLocaleDateString('no-NO'); // Format date to 'DD.MM.YYYY' + return date.toLocaleDateString("no-NO"); // Format date to 'DD.MM.YYYY' }; + // Mock data for SummaryResponse + const summaryResponse: SummaryResponse = { + summary: [ + // Existing aiSummary data + "Søkeren søker om tillatelse til å utvide sin eksisterende terrasse med 20 kvadratmeter. Den nye terrassen vil gå fra 15 kvm til totalt 35 kvm.", + "Huset er verneverdig og ligger i et område med høy bevaringsverdi.", + "Terrassen vil ha en høyde på 1,2 meter fra bakken.", + "Den skal plasseres på eiendommens sørside, som vender mot en privat hage.", + "Det planlegges også integrering av en trapp for bedre tilgang til hagen.", + ], + marked_checklist: [ + { + check_point_name: "Sjekk av arealutnyttelse", + status: "Correct", + reason: "Arealutnyttelsen er innenfor tillatte grenser.", + }, + { + check_point_name: "Kontroll av nabovarsel", + status: "Incorrect", + reason: "Nabovarsel mangler signatur fra naboer.", + }, + { + check_point_name: "Vurdering av høydebegrensning", + status: "Uncertain", + reason: "Høyden på terrassen er ikke spesifisert klart.", + }, + ], + }; - /** Dummy data for AI summary */ - const aiSummary = [ - "Ola Nordmann søker om tillatelse til å utvide sin eksisterende terrasse med 20 kvadratmeter. Den nye terrassen vil gå fra 15 kvm til totalt 35 kvm.", - "Terrassen skal bygges i impregnert treverk med rekkverk av glass og aluminium.", - "Terrassen vil ha en høyde på 1,2 meter fra bakken.", - "Den skal plasseres på eiendommens sørside, som vender mot en privat hage.", - "Det planlegges også integrering av en trapp for bedre tilgang til hagen." - ]; + // Transform marked_checklist and combine with existing checklist + const markedChecklistData = transformMarkedChecklistToChecklistItemData( + summaryResponse.marked_checklist + ); + const combinedChecklist = [...checklist, ...markedChecklistData]; /* Dummy data for case documents component */ - const BASE_URL = "http://localhost:3000/mottak/mine-saker/dashbord/" + + String(caseNumber) + '/'; + const BASE_URL = + "http://localhost:3000/mottak/mine-saker/dashbord/" + + +String(caseNumber) + + "/"; const documents = [ - { name: 'Plantegning.pdf', url: BASE_URL + 'Plantegning.pdf' }, - { name: 'Snitt_øst.jpg', url: BASE_URL + 'Snitt_øst.jpg' }, - { name: 'Snitt_vest.jpg', url: BASE_URL + 'Snitt_vest.jpg' }, - { name: 'Snitt_nord.jpg', url: BASE_URL + 'Snitt_nord.jpg' }, - { name: 'Bevis_på_nabovarseler.pdf', url: BASE_URL + 'Bevis_på_nabovarseler.pdf' }, - { name: 'Søknadsdokument.pdf', url: BASE_URL + 'Søknadsdokument.pdf' }, + { name: "Plantegning.pdf", url: BASE_URL + "Plantegning.pdf" }, + { name: "Snitt_øst.jpg", url: BASE_URL + "Snitt_øst.jpg" }, + { name: "Snitt_vest.jpg", url: BASE_URL + "Snitt_vest.jpg" }, + { name: "Snitt_nord.jpg", url: BASE_URL + "Snitt_nord.jpg" }, + { name: "Bevis_på_nabovarseler.pdf", url: BASE_URL + "Bevis_på_nabovarseler.pdf" }, + { name: "Søknadsdokument.pdf", url: BASE_URL + "Søknadsdokument.pdf" }, ]; - // const agents = [ - // { - // title: 'CAD-Aid', - // status: 'failure', - // feedback: 'KRITISKE MANGLER', - // reportUrl: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' - // }, - // { - // title: 'ArkivGPT', - // status: 'success', - // feedback: 'Arkivdata funnet', - // reportUrl: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' - // }, - // { - // title: 'DOK-analyse', - // status: 'success', - // feedback: 'Dokumenter validert', - // reportUrl: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' - // }, - // { - // title: '3D-tiltaksvisning', - // status: 'success', - // feedback: 'Se visualisering', - // reportUrl: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' - // }, - // { - // title: 'Tiltakskart', - // status: 'failure', - // feedback: 'TILTAK MÅ SJEKKES', - // reportUrl: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' - // }, - // ] - return (
-

Oversikt over søknadsanalyse:

- +

+ Oversikt over søknadsanalyse: +

{caseNumber ? (
-

Saksnummer: {ApplicationData?.caseNumber}

-

Adresse: {ApplicationData?.address}

-

Eiendom: GNR: {ApplicationData?.farmUnit}, BNR: {ApplicationData?.propertyUnit}

-

Innsendingsdato: {formatDate(ApplicationData?.receiveDate)}

-

Frist: {ApplicationData?.deadline}

+

+ Saksnummer: {ApplicationData?.caseNumber} +

+

+ Adresse: {ApplicationData?.address} +

+

+ Eiendom: GNR: {ApplicationData?.farmUnit}, BNR:{" "} + {ApplicationData?.propertyUnit} +

+

+ Innsendingsdato:{" "} + {formatDate(ApplicationData?.receiveDate)} +

+

+ Frist: {ApplicationData?.deadline} +

- + {/* Pass combinedChecklist to Checklist component */} +
- + {/* Pass summaryResponse.summary to Summary component */} +
@@ -152,13 +206,12 @@ export default function CaseDashboard() {
-
- +
@@ -167,7 +220,7 @@ export default function CaseDashboard() {
@@ -175,7 +228,7 @@ export default function CaseDashboard() {
@@ -183,16 +236,14 @@ export default function CaseDashboard() {
- - ) : (

No case number provided

)}