feat(#359): W4a Phase 2 — zentraler Import/Export-Dialog (Frontend)
- ImportExportDialog.tsx (neu): Modal lg/xl nach bestehendem ui/Modal-Muster
- Export-Tab: Formatauswahl (csv/xlsx/json), Download, Fehler-Handling
- Import-Tab: 4 Schritte (Datei -> Mapping -> Dry-Run -> Ausführung+Report),
Mapping-Vorschau mit Modul-Heuristik, Background-Job-Polling ab 1000 Zeilen
- i18n: 24 importexport.*-Keys in de.json + en.json (keine hardcoded Strings)
- Integration: ContactsList Toolbar-Button (contacts:read-Gate, Upload-Icon,
entityType=contacts vorgewählt) über bestehendes pluginToolbarStore-Muster
Gates: Vitest 12/12 (routePermissions + importExportDialog), tsc exit 0,
Production-Build exit 0 (vor Commit). 6 Failures in contacts/shell Suiten
als Vorbestand bewiesen (Stash-Test: identisch auf clean HEAD f27f047).
fixes #359 (Phase 2)
This commit is contained in:
@@ -1440,5 +1440,31 @@
|
||||
"targetRoom": "Ziel-Raum",
|
||||
"targetRoomDescription": "Name des Raums in der Kommunikation, an den Status-Meldungen gesendet werden.",
|
||||
"defaultRoomName": "Live KI"
|
||||
},
|
||||
"importexport": {
|
||||
"dialogTitle": "Import / Export",
|
||||
"export": "Export",
|
||||
"import": "Import",
|
||||
"download": "Herunterladen",
|
||||
"exportHint": "Daten des Moduls {{entity}} exportieren — Format wählen:",
|
||||
"chooseFile": "Datei wählen (CSV, JSON oder XLSX)",
|
||||
"step1": "Datei",
|
||||
"step2": "Zuordnung",
|
||||
"step3": "Prüfung",
|
||||
"step4": "Ergebnis",
|
||||
"mappingHint": "{{total}} Zeilen erkannt — Dateispalten den Zielfeldern zuordnen:",
|
||||
"fileColumn": "Dateispalte",
|
||||
"targetField": "Zielfeld",
|
||||
"skip": "überspringen",
|
||||
"validate": "Prüfen",
|
||||
"valid": "gültig",
|
||||
"invalid": "ungültig",
|
||||
"row": "Zeile",
|
||||
"executeImport": "Import ausführen",
|
||||
"total": "gesamt",
|
||||
"imported": "importiert",
|
||||
"failed": "fehlgeschlagen",
|
||||
"importDone": "Import abgeschlossen",
|
||||
"backgroundRunning": "Import läuft im Hintergrund …"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1440,5 +1440,31 @@
|
||||
"targetRoom": "Target room",
|
||||
"targetRoomDescription": "Name of the room in Communication that status messages are sent to.",
|
||||
"defaultRoomName": "Live AI"
|
||||
},
|
||||
"importexport": {
|
||||
"dialogTitle": "Import / Export",
|
||||
"export": "Export",
|
||||
"import": "Import",
|
||||
"download": "Download",
|
||||
"exportHint": "Export data of module {{entity}} — choose format:",
|
||||
"chooseFile": "Choose file (CSV, JSON or XLSX)",
|
||||
"step1": "File",
|
||||
"step2": "Mapping",
|
||||
"step3": "Check",
|
||||
"step4": "Result",
|
||||
"mappingHint": "{{total}} rows detected — map file columns to target fields:",
|
||||
"fileColumn": "File column",
|
||||
"targetField": "Target field",
|
||||
"skip": "skip",
|
||||
"validate": "Check",
|
||||
"valid": "valid",
|
||||
"invalid": "invalid",
|
||||
"row": "Row",
|
||||
"executeImport": "Run import",
|
||||
"total": "total",
|
||||
"imported": "imported",
|
||||
"failed": "failed",
|
||||
"importDone": "Import finished",
|
||||
"backgroundRunning": "Import running in background …"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user