'use client' import React from 'react' import { ARCH_SERVICES, LAYERS, type ArchService } from '../architecture-data' import { type LayerFilter } from '../_layout' export default function ServiceTable({ layerFilter, expandedServices, onToggleExpanded, onMarkInGraph, }: { layerFilter: LayerFilter expandedServices: Set onToggleExpanded: (id: string) => void onMarkInGraph: (service: ArchService) => void }) { const filtered = ARCH_SERVICES.filter( s => layerFilter === 'alle' || s.layer === layerFilter ) return (

Alle Services ({ layerFilter === 'alle' ? ARCH_SERVICES.length : `${ARCH_SERVICES.filter(s => s.layer === layerFilter).length} / ${ARCH_SERVICES.length}` })

{filtered.map(service => { const layer = LAYERS[service.layer] const isExpanded = expandedServices.has(service.id) return (
{/* Row Header */} {/* Expanded Detail */} {isExpanded && }
) })}
) } function ExpandedRow({ service, onMarkInGraph, }: { service: ArchService onMarkInGraph: (service: ArchService) => void }) { return (
{/* Beschreibung */}

{service.description}

{service.descriptionLong}

{/* Info Grid */}
Tech
{service.tech}
Port
{service.port ? `:${service.port}` : 'Intern'}
Container
{service.container}
{service.url && (
URL
{service.url}
)}
{/* Sections */}
{service.dbTables.length > 0 && (

DB-Tabellen ({service.dbTables.length})

{service.dbTables.map(table => (
{table}
))}
)} {service.ragCollections.length > 0 && (

RAG-Collections ({service.ragCollections.length})

{service.ragCollections.map(rag => (
{rag}
))}
)} {service.apiEndpoints.length > 0 && (

API-Endpunkte ({service.apiEndpoints.length})

{service.apiEndpoints.map(ep => (
{ep}
))}
)} {service.dependsOn.length > 0 && (

Abhaengigkeiten ({service.dependsOn.length})

{service.dependsOn.map(depId => { const dep = ARCH_SERVICES.find(s => s.id === depId) const depLayer = dep ? LAYERS[dep.layer] : null return (
{depLayer && ( )} {dep?.name || depId}
) })}
)}
{/* Open in Graph + URL */}
{service.url && ( Service oeffnen )}
) }