+ {parcelData.parcel.id && (
+
+ ID:
+ {parcelData.parcel.id}
+
+ )}
+ {parcelData.parcel.egrid && (
+
+ EGRID:
+ {parcelData.parcel.egrid}
+
+ )}
+ {parcelData.parcel.identnd && (
+
+ IdentND:
+ {parcelData.parcel.identnd}
+
+ )}
+ {parcelData.parcel.address && (
+
+ Adresse:
+ {parcelData.parcel.address}
+
+ )}
+ {parcelData.parcel.canton && (
+
+ Kanton:
+ {parcelData.parcel.canton}
+
+ )}
+ {parcelData.parcel.municipality_name && (
+
+ Gemeinde:
+ {parcelData.parcel.municipality_name}
+
+ )}
+ {parcelData.parcel.municipality_code && (
+
+ Gemeinde-Code:
+ {parcelData.parcel.municipality_code}
+
+ )}
+ {parcelData.parcel.area_m2 !== undefined && (
+
+ Fläche:
- {parcelData.parcel.centroid.x.toFixed(2)}, {parcelData.parcel.centroid.y.toFixed(2)}
+ {parcelData.parcel.area_m2.toFixed(2)} m²
+ {parcelData.parcel.area_m2 >= 10000 && (
+
+ {' '}({(parcelData.parcel.area_m2 / 10000).toFixed(2)} ha)
+
+ )}
+
+
+ )}
+ {parcelData.parcel.realestate_type && (
+
+ Grundstückstyp:
+ {parcelData.parcel.realestate_type}
+
+ )}
+ {parcelData.parcel.bauzone && (
+
+ Bauzone:
+ {parcelData.parcel.bauzone}
+
+ )}
+ {instanceId && parcelData.parcel.municipality_name && parcelData.parcel.bauzone && (docsLoading[parcelData.parcel.id] || (parcelDocs[parcelData.parcel.id] || []).length > 0) && (
+
+
Bauzonenverordnung
+ {docsLoading[parcelData.parcel.id] && (
+
Dokumente werden geladen...
+ )}
+ {docsError[parcelData.parcel.id] && (
+
{docsError[parcelData.parcel.id]}
+ )}
+ {(parcelDocs[parcelData.parcel.id] || []).length > 0 && (
+
+ {(parcelDocs[parcelData.parcel.id] || []).map((doc) => (
+
+
+ {doc.label}
+
+
+ ))}
+
+ )}
+ {(parcelDocs[parcelData.parcel.id] || []).length > 0 && (
+
+ )}
+ {extractError[parcelData.parcel.id] && (
+
{extractError[parcelData.parcel.id]}
+ )}
+ {extractResults[parcelData.parcel.id] && (
+
+ {(() => {
+ const m = extractResults[parcelData.parcel.id]?.machbarkeitsstudie;
+ const fakten = m?.fakten ?? [];
+ const vorschlaege = m?.vorschlaege ?? [];
+ const zusatzinfo = m?.zusatzinformationen ?? [];
+ return (
+ <>
+ {fakten.length > 0 && (
+
+
Fakten aus BZO
+
+ {fakten.map((row: { item: string; value: string; source?: string }, i: number) => (
+ -
+ {row.item}: {row.value}
+ {row.source && (
+
+ {' '}({row.source})
+
+ )}
+
+ ))}
+
+
+ )}
+ {vorschlaege.length > 0 && (
+
+
Vorschläge
+
+ {vorschlaege.map((row: { item: string; value: string; is_section?: boolean } | string, i: number) => {
+ if (typeof row === 'string') return - {row}
;
+ const r = row as { item: string; value: string; is_section?: boolean };
+ if (r.is_section) {
+ return - {r.item}
;
+ }
+ return (
+ -
+ {r.value ? `${r.item}: ${r.value}` : r.item}
+
+ );
+ })}
+
+
+ )}
+ {zusatzinfo.length > 0 && (
+
+
Weiterführende Bestimmungen
+
+ {zusatzinfo.map((art: { article_label: string; article_title: string; text: string; source?: string }, i: number) => (
+
+
+ {art.article_label} {art.article_title}
+ {art.source && ({art.source})}
+
+ {art.text}
+
+ ))}
+
+
+ )}
+ >
+ );
+ })()}
+ {(extractResults[parcelData.parcel.id]?.errors?.length ?? 0) > 0 && (
+
+ {(extractResults[parcelData.parcel.id]?.errors || []).join('; ')}
+
+ )}
+
+ )}
+
+ )}
+ {parcelData.parcel.zone && Array.isArray(parcelData.parcel.zone) && parcelData.parcel.zone.length > 0 && (
+
+
Zone:
+
+ {parcelData.parcel.zone.length} Zone{parcelData.parcel.zone.length !== 1 ? 'n' : ''} gefunden
+ {(() => {
+ const zoneTypes = parcelData.parcel.zone
+ .map((z: any) => {
+ const attrs = z.attributes || {};
+ return attrs.typ || attrs.zone_typ || attrs.bauzone || attrs.zone || attrs.label || null;
+ })
+ .filter((t: string | null) => t !== null);
+ if (zoneTypes.length > 0) {
+ return (
+
+ {' '}({zoneTypes.join(', ')})
+
+ );
+ }
+ return null;
+ })()}
+ {import.meta.env.DEV && (
+
+ Details anzeigen
+
+ {JSON.stringify(parcelData.parcel.zone, null, 2)}
+
+
+ )}
)}
@@ -204,67 +701,24 @@ const ParcelInfoPanel: React.FC
= ({
)}