import React from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { FaTimes, FaTrash } from 'react-icons/fa'; import styles from './ParcelInfoPanel.module.css'; export interface ParcelInfoPanelProps { isOpen: boolean; onClose: () => void; parcels: any[]; onRemoveParcel?: (parcelId: string) => void; adjacentParcels?: any[]; } const ParcelInfoPanel: React.FC = ({ isOpen, onClose, parcels, onRemoveParcel, adjacentParcels = [] }) => { if (!parcels || parcels.length === 0) return null; return ( {isOpen && ( <> {/* Backdrop */} {/* Panel */}

Parzellen-Informationen ({parcels.length})

{/* Selected Parcels List */}
{parcels.map((parcelData, index) => (

Parzelle {index + 1}: {parcelData.parcel.number || parcelData.parcel.id || 'Unbekannt'}

{onRemoveParcel && ( )}
{parcelData.parcel.id && (
ID: {parcelData.parcel.id}
)} {parcelData.parcel.number && (
Nummer: {parcelData.parcel.number}
)} {parcelData.parcel.name && (
Name: {parcelData.parcel.name}
)} {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.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}
)} {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 {(() => { // Extract zone types from zone array 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)}
                                
)}
)} {parcelData.parcel.centroid && (
Zentrum (LV95): {parcelData.parcel.centroid.x.toFixed(2)}, {parcelData.parcel.centroid.y.toFixed(2)}
)} {parcelData.parcel.geoportal_url && (
Geoportal: Link öffnen
)}
{/* Map View Info for this parcel */} {parcelData.map_view && (

Kartenansicht

{parcelData.map_view.center && (
Zentrum: {parcelData.map_view.center.x.toFixed(2)}, {parcelData.map_view.center.y.toFixed(2)}
)} {parcelData.map_view.zoom_bounds && ( <>
Bounds Min: {parcelData.map_view.zoom_bounds.min_x.toFixed(2)}, {parcelData.map_view.zoom_bounds.min_y.toFixed(2)}
Bounds Max: {parcelData.map_view.zoom_bounds.max_x.toFixed(2)}, {parcelData.map_view.zoom_bounds.max_y.toFixed(2)}
)}
)}
))}
{/* Adjacent Parcels */} {adjacentParcels.length > 0 && (

Angrenzende Parzellen ({adjacentParcels.length})

{adjacentParcels.map((adjacent, index) => (
{adjacent.number || adjacent.id} {adjacent.egrid && ( {adjacent.egrid} )}
))}
)}
)}
); }; export default ParcelInfoPanel;