feat: JSON import + mapping presets in SPA

- Accept .json files in import upload, send format to backend
- Backend endpoint PUT /import/sessions/{id}/profile/{profile_id}
- Load saved presets on mapping step, auto-apply and skip to preview
- Save current mapping as preset on confirm step
- Delete presets from mapping step
This commit is contained in:
2026-06-11 12:58:08 +02:00
parent 9a894c3a95
commit 5dc90724d3
7 changed files with 230 additions and 11 deletions

View File

@@ -144,7 +144,7 @@
"editProfile": "Edit Profile",
"editProfileDesc": "Username, bio",
"import": "Import",
"importDesc": "Import from CSV",
"importDesc": "Import from CSV or JSON",
"yearWrapUp": "Year Wrap-Up",
"yearWrapUpDesc": "Annual summaries",
"webhookTokens": "Webhook Tokens",
@@ -337,7 +337,7 @@
"scale1to10": "110 → 15 (×0.5)",
"scale1to100": "1100 → 15 (×0.05)",
"scaleLetterboxd": "04 Letterboxd → 15 (×1.25)",
"dropCsv": "Drop a CSV file or tap to browse",
"dropCsv": "Drop a CSV or JSON file, or tap to browse",
"uploading": "Uploading...",
"preview": "Preview",
"rowsCols": "{{rows}} rows · {{cols}} columns",
@@ -357,6 +357,14 @@
"importing": "Importing...",
"importRows": "Import {{count}} rows",
"importComplete": "Import complete!",
"viewDiary": "View your diary"
"viewDiary": "View your diary",
"presets": "Presets",
"loadPreset": "Load preset",
"savePreset": "Save as preset",
"presetName": "Preset name",
"presetNamePlaceholder": "e.g. Letterboxd",
"presetSaved": "Preset saved",
"presetDeleted": "Preset deleted",
"noPresets": "No saved presets"
}
}