Anki/rslib/src
RumovZ 410b8d8dee Plaintext import/export (#1850)
* Add crate csv

* Add start of csv importing on backend

* Add Menomosyne serializer

* Add csv and json importing on backend

* Add plaintext importing on frontend

* Add csv metadata extraction on backend

* Add csv importing with GUI

* Fix missing dfa file in build

Added compile_data_attr, then re-ran cargo/update.py.

* Don't use doubly buffered reader in csv

* Escape HTML entities if CSV is not HTML

Also use name 'is_html' consistently.

* Use decimal number as foreign ease (like '2.5')

* ForeignCard.ivl → ForeignCard.interval

* Only allow fixed set of CSV delimiters

* Map timestamp of ForeignCard to native due time

* Don't trim CSV records

* Document use of empty strings for defaults

* Avoid creating CardGenContexts for every note

This requires CardGenContext to be generic, so it works both with an
owned and borrowed notetype.

* Show all accepted file types  in import file picker

* Add import_json_file()

* factor → ease_factor

* delimter_from_value → delimiter_from_value

* Map columns to fields, not the other way around

* Fallback to current config for csv metadata

* Add start of new import csv screen

* Temporary fix for compilation issue on Linux/Mac

* Disable jest bazel action for import-csv

Jest fails with an error code if no tests are available, but this would
not be noticable on Windows as Jest is not run there.

* Fix field mapping issue

* Revert "Temporary fix for compilation issue on Linux/Mac"

This reverts commit 21f8a26140.

* Add HtmlSwitch and move Switch to components

* Fix spacing and make selectors consistent

* Fix shortcut tooltip

* Place import button at the top with path

* Fix meta column indices

* Remove NotetypeForString

* Fix queue and type of foreign cards

* Support different dupe resolution strategies

* Allow dupe resolution selection when importing CSV

* Test import of unnormalized text

Close  #1863.

* Fix logging of foreign notes

* Implement CSV exports

* Use db_scalar() in notes_table_len()

* Rework CSV metadata

- Notetypes and decks are either defined by a global id or by a column.
- If a notetype id is provided, its field map must also be specified.
- If a notetype column is provided, fields are now mapped by index
instead of name at import time. So the first non-meta column is used for
the first field of every note, regardless of notetype. This makes
importing easier and should improve compatiblity with files without a
notetype column.
- Ensure first field can be mapped to a column.
- Meta columns must be defined as `#[meta name]:[column index]` instead
of in the `#columns` tag.
- Column labels contain the raw names defined by the file and must be
prettified by the frontend.

* Adjust frontend to new backend column mapping

* Add force flags for is_html and delimiter

* Detect if CSV is HTML by field content

* Update dupe resolution labels

* Simplify selectors

* Fix coalescence of oneofs in TS

* Disable meta columns from selection

Plus a lot of refactoring.

* Make import button stick to the bottom

* Write delimiter and html flag into csv

* Refetch field map after notetype change

* Fix log labels for csv import

* Log notes whose deck/notetype was missing

* Fix hiding of empty log queues

* Implement adding tags to all notes of a csv

* Fix dupe resolution not being set in log

* Implement adding tags to updated notes of a csv

* Check first note field is not empty

* Temporary fix for build on Linux/Mac

* Fix inverted html check (dae)

* Remove unused ftl string

* Delimiter → Separator

* Remove commented-out line

* Don't accept .json files

* Tweak tag ftl strings

* Remove redundant blur call

* Strip sound and add spaces in csv export

* Export HTML by default

* Fix unset deck in Mnemosyne import

Also accept both numbers and strings for notetypes and decks in JSON.

* Make DupeResolution::Update the default

* Fix missing dot in extension

* Make column indices 1-based

* Remove StickContainer from TagEditor

Fixes line breaking, border and z index on ImportCsvPage.

* Assign different key combos to tag editors

* Log all updated duplicates

Add a log field for the true number of found notes.

* Show identical notes as skipped

* Split tag-editor into separate ts module (dae)

* Add progress for CSV export

* Add progress for text import

* Tidy-ups after tag-editor split (dae)

- import-csv no longer depends on editor
- remove some commented lines
2022-06-01 20:26:16 +10:00
..
backend Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
card Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
card_rendering Fix some clippy lints + imports 2022-03-17 21:03:39 +10:00
collection Fix implicit transaction not being cleared on transact() failure 2022-05-05 13:39:41 +10:00
config Backup improvements (#1728) 2022-03-21 19:40:42 +10:00
deckconfig Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
decks Fix review queue if limit is reached (#1855) 2022-05-10 12:11:35 +10:00
error Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
import_export Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
media Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
notes Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
notetype Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
revlog Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
scheduler Rework display of available cards in custom study 2022-05-20 17:52:02 +10:00
search Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
stats Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
storage Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
sync Don't fsync media files on import 2022-03-19 23:31:11 +10:00
tags Fix some clippy lints + imports 2022-03-17 21:03:39 +10:00
undo update undo skipping; exclude deck/tag expand/collapse 2021-06-25 09:16:15 +10:00
adding.rs expose undoable config changes to frontend; refresh sidebar 2021-05-21 17:50:41 +10:00
backend_proto.rs Colpkg fixes (#1722) 2022-03-17 15:11:23 +10:00
browser_table.rs Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
cloze.rs Add check for out-of-place/missing clozes 2021-06-12 10:02:21 +02:00
dbcheck.rs Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
findreplace.rs Remove redundant error mapping (#1593) 2022-01-16 13:46:27 +10:00
i18n.rs drop the legacy enum from rslib, and pass separate module/message idx 2021-03-27 11:56:31 +10:00
io.rs Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
latex.rs tidy up Rust imports 2021-04-18 18:38:54 +10:00
lib.rs Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
links.rs Card type error (#1749) 2022-03-28 22:17:50 +10:00
log.rs Backups (#1685) 2022-03-07 15:11:31 +10:00
markdown.rs render deck description with markdown; strip images 2021-02-06 15:02:40 +10:00
ops.rs Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
preferences.rs Backup improvements (#1728) 2022-03-21 19:40:42 +10:00
prelude.rs Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
serde.rs tidy up Rust imports 2021-04-18 18:38:54 +10:00
template.rs New TTS/AV tag handling (#1559) 2021-12-17 19:04:42 +10:00
template_filters.rs New TTS/AV tag handling (#1559) 2021-12-17 19:04:42 +10:00
tests.rs Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
text.rs Plaintext import/export (#1850) 2022-06-01 20:26:16 +10:00
timestamp.rs Fix for crash with invalid dates on Windows (#1837) 2022-05-07 10:30:23 +10:00
types.rs update scheduling ops 2021-04-06 16:38:42 +10:00
version.rs tidy up Rust imports 2021-04-18 18:38:54 +10:00