aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--docs/manual/csv-import.md35
-rw-r--r--src/client/components/ImportNotesModal.tsx18
2 files changed, 25 insertions, 28 deletions
diff --git a/docs/manual/csv-import.md b/docs/manual/csv-import.md
index 6759e54..321a9c6 100644
--- a/docs/manual/csv-import.md
+++ b/docs/manual/csv-import.md
@@ -16,10 +16,9 @@ Kioku allows you to bulk import notes from CSV files.
The first row is the header. Use the following format:
```
-deck,note_type,Field1,Field2,...
+note_type,Field1,Field2,...
```
-- **deck**: Deck name (for reference only; import destination is selected in the UI)
- **note_type**: Note type name (required)
- **Field names**: Field names defined in the note type
@@ -28,27 +27,27 @@ deck,note_type,Field1,Field2,...
Rows 2 and onwards contain the notes to import.
```csv
-deck,note_type,Front,Back
-MyDeck,Basic,hello,world
-MyDeck,Basic,goodbye,farewell
+note_type,Front,Back
+Basic,hello,world
+Basic,goodbye,farewell
```
### Example: Basic Note Type
```csv
-deck,note_type,Front,Back
-Vocabulary,Basic,apple,a round fruit
-Vocabulary,Basic,banana,a yellow fruit
-Vocabulary,Basic,orange,a citrus fruit
+note_type,Front,Back
+Basic,apple,a round fruit
+Basic,banana,a yellow fruit
+Basic,orange,a citrus fruit
```
### Example: Basic (and reversed card) Note Type
```csv
-deck,note_type,Front,Back
-Capitals,Basic (and reversed card),Tokyo,Japan
-Capitals,Basic (and reversed card),Paris,France
-Capitals,Basic (and reversed card),London,United Kingdom
+note_type,Front,Back
+Basic (and reversed card),Tokyo,Japan
+Basic (and reversed card),Paris,France
+Basic (and reversed card),London,United Kingdom
```
## CSV Specification
@@ -66,17 +65,17 @@ Kioku's CSV parser is RFC 4180 compliant.
Use double quotes (`"`) to include commas or newlines within a field:
```csv
-deck,note_type,Front,Back
-MyDeck,Basic,"Hello, World!",example with comma
-MyDeck,Basic,"Line 1
+note_type,Front,Back
+Basic,"Hello, World!",example with comma
+Basic,"Line 1
Line 2",example with newline
```
To include a double quote within a field, escape it by doubling:
```csv
-deck,note_type,Front,Back
-MyDeck,Basic,"He said ""Hello""",example with quotes
+note_type,Front,Back
+Basic,"He said ""Hello""",example with quotes
```
## Important Notes
diff --git a/src/client/components/ImportNotesModal.tsx b/src/client/components/ImportNotesModal.tsx
index a7a88c5..2eb0922 100644
--- a/src/client/components/ImportNotesModal.tsx
+++ b/src/client/components/ImportNotesModal.tsx
@@ -142,22 +142,20 @@ export function ImportNotesModal({
const { headers, rows } = parseResult.data;
- // Validate headers: must have deck, note_type, and at least one field
- if (headers.length < 3) {
- setError(
- "CSV must have at least 3 columns: deck, note_type, and field(s)",
- );
+ // Validate headers: must have note_type and at least one field
+ if (headers.length < 2) {
+ setError("CSV must have at least 2 columns: note_type and field(s)");
setPhase("upload");
return;
}
- if (headers[0] !== "deck" || headers[1] !== "note_type") {
- setError("First two columns must be 'deck' and 'note_type'");
+ if (headers[0] !== "note_type") {
+ setError("First column must be 'note_type'");
setPhase("upload");
return;
}
- const fieldNames = headers.slice(2);
+ const fieldNames = headers.slice(1);
const validated: ValidatedRow[] = [];
const errors: ValidationError[] = [];
@@ -316,9 +314,9 @@ export function ImportNotesModal({
<div className="bg-ivory rounded-lg px-4 py-3 text-sm text-muted">
<p className="font-medium text-slate mb-1">Expected format:</p>
<code className="text-xs">
- deck,note_type,Front,Back
+ note_type,Front,Back
<br />
- MyDeck,Basic,hello,world
+ Basic,hello,world
</code>
</div>
</div>