import * as React from "react"; import { Text, Button, SpinButton, Dropdown, Option, Accordion, AccordionHeader, AccordionItem, AccordionPanel, Field, Label, Spinner, } from "@fluentui/react-components"; import { SheetMappingStatus, TARGET_COLUMNS, ConsolidateSettings } from "../models"; interface ColumnMapperProps { sheetMappings: SheetMappingStatus[]; onHeaderRowChange: (sheetName: string, newRowIndex: number) => void; onMappingChange: (sheetName: string, targetCol: string, sourceColIndex: number) => void; onBack: () => void; onConsolidate: () => void; isConsolidating: boolean; settings: ConsolidateSettings; onSettingsChange: (settings: ConsolidateSettings) => void; } const ColumnMapper: React.FC = ({ sheetMappings, onHeaderRowChange, onMappingChange, onBack, onConsolidate, isConsolidating, settings, onSettingsChange, }) => { return (
2. Spalten-Mapping prüfen Bitte überprüfe die gefundenen Kopfzeilen und passe fehlende Spalten manuell an. s.sheetName)}> {sheetMappings.map((sheet) => { const missingCount = sheet.mappings.filter((m) => m.sourceColumnIndex === -1).length; return (
{sheet.sheetName} {missingCount > 0 ? ( {missingCount} Lücken ) : ( OK )}
{missingCount === TARGET_COLUMNS.length && (
Achtung: Keine passenden Kopfzeilen gefunden.
Bitte weise die Spalten manuell zu. Wenn du dieses Blatt überspringen willst, lass einfach alles auf "Nicht gefunden".
)} { if (data.value !== undefined) { onHeaderRowChange(sheet.sheetName, data.value); } }} style={{ width: "80px" }} /> {TARGET_COLUMNS.map((tc) => { const colName = tc.id; const mappedInfo = sheet.mappings.find((m) => m.targetColumn === colName); const selectedVal = mappedInfo?.sourceColumnIndex !== -1 ? mappedInfo?.sourceColumnIndex.toString() : "-1"; return ( c.index.toString() === selectedVal)?.name || "Unbekannt" } selectedOptions={[selectedVal || "-1"]} onOptionSelect={(_, data) => { const newIndex = parseInt(data.optionValue || "-1", 10); onMappingChange(sheet.sheetName, colName, newIndex); }} style={{ minWidth: "150px" }} > {sheet.availableColumns.map((availCol) => ( ))} ); })}
); })}
Hervorhebungen (Farben)
onSettingsChange({ ...settings, colorNew: e.target.value })} style={{ width: "60px", padding: "0", cursor: "pointer", height: "30px", border: "none" }} /> onSettingsChange({ ...settings, colorChanged: e.target.value })} style={{ width: "60px", padding: "0", cursor: "pointer", height: "30px", border: "none" }} /> onSettingsChange({ ...settings, colorDeleted: e.target.value })} style={{ width: "60px", padding: "0", cursor: "pointer", height: "30px", border: "none" }} /> onSettingsChange({ ...settings, colorDuplicate: e.target.value })} style={{ width: "60px", padding: "0", cursor: "pointer", height: "30px", border: "none" }} />
); }; export default ColumnMapper;