Damien Elmes
2902b64e82
move note/card removal for notetype out of storage layer
2021-04-29 19:44:09 +10:00
Damien Elmes
57eab0e33d
make config prefix removal undoable
2021-04-29 19:16:02 +10:00
Damien Elmes
610f0b5254
use aux var when retrieving last deck for notetype
...
The adding case was already covered by defaults_for_adding(), but we
the code was using the old variable when adding new cards to an existing
note.
2021-04-29 19:15:27 +10:00
Damien Elmes
b160c2d85c
move pub functions to top of notetype/mod.rs
2021-04-29 15:32:59 +10:00
Damien Elmes
86cf8949ea
move pub functions to top of notes/mod.rs
2021-04-29 14:08:15 +10:00
Damien Elmes
07b5c35e90
confirm deletion is requiring a full sync
2021-04-28 22:21:16 +10:00
Damien Elmes
b22e851137
add some unit tests to deck config updating
2021-04-28 22:00:39 +10:00
Damien Elmes
a95cbb8515
DeckConfId -> DeckConfigId
2021-04-28 21:09:26 +10:00
Damien Elmes
1df86b28e8
sort deck on config update; fix id not being updated after deletion
2021-04-28 21:08:09 +10:00
Damien Elmes
92e4de16cf
report pinned package issues upstream
2021-04-27 23:11:22 +10:00
Damien Elmes
cf2613e869
update Rust deps
...
- tokio 1.0
- updated reqwest, thanks to Rumo
- other minor dep updates
the reqwest build file has been split into two, as it was awkward
to manually update the combined file, and the platform gate is now
on the target in rslib/
2021-04-27 22:18:12 +10:00
Damien Elmes
f6a1a35113
update translations
2021-04-25 22:06:05 +10:00
Damien Elmes
30f5269304
hook new deck config screen up behind an env var
2021-04-22 10:59:16 +10:00
Damien Elmes
fd81700679
deckconf -> deckconfig
2021-04-20 21:54:24 +10:00
Damien Elmes
b448afdc57
change detection needs to ignore collection mtime bump
2021-04-20 19:52:47 +10:00
Damien Elmes
42d5d8071d
check if deck changed before saving
2021-04-20 19:50:31 +10:00
Damien Elmes
4d1cedc8b2
implement deck config updating
2021-04-20 14:57:44 +10:00
Damien Elmes
4d4603c078
remove some imports duplicated by prelude
2021-04-19 18:22:43 +10:00
Damien Elmes
2cc23ce2bc
Merge pull request #1138 from RumovZ/introduced
...
Add search keyword for "first review in x days"
2021-04-19 18:22:15 +10:00
RumovZ
cac507b979
Use arg name instead of repeating it in format!()
2021-04-19 08:58:33 +02:00
RumovZ
194d251004
Use timestamp adding for writing cutoff
2021-04-19 08:44:13 +02:00
RumovZ
11cd1d9a26
Add sql condition for speedup in write_introduced
2021-04-19 08:43:32 +02:00
RumovZ
3cecc7157b
Add sidebar filter "first review today"
2021-04-18 13:27:10 +02:00
RumovZ
e274ff26ab
Add sqlwriter test for introduced
2021-04-18 12:32:02 +02:00
RumovZ
699437df0f
Add cutoff_in_secs_from_days() helper method
2021-04-18 12:25:44 +02:00
RumovZ
5ec2e11de3
Add search keyword introduced
...
Filters for cards that had their first review within the last x days.
2021-04-18 12:14:18 +02:00
Damien Elmes
64ebc32b3d
tidy up Rust imports
...
rustfmt can do this automatically, but only when run with a nightly
toolchain, so it needs to be manually done for now - see rslib/rusfmt.toml
2021-04-18 18:38:54 +10:00
Damien Elmes
262b50445c
start on making deck config and schema/mod changes undoable
...
+ move timestamps into a struct in a separate file for convenience
2021-04-18 17:33:12 +10:00
Damien Elmes
76eb119870
add schema change prompt to removal, tweak return struct
2021-04-18 17:33:12 +10:00
RumovZ
fece39ca74
Maybe normalize name when preparing deck update
2021-04-18 09:16:43 +02:00
RumovZ
5e3e194289
Remove redundant imports
2021-04-18 08:43:46 +02:00
Damien Elmes
e71f7714ad
as_str() -> as_native_str()
2021-04-18 09:33:39 +10:00
Damien Elmes
1acc679e8f
hide NativeName inner value, and require explicit accessors
2021-04-18 09:29:35 +10:00
Damien Elmes
f924539574
create_missing_parents() can take a native name directly
2021-04-18 09:20:23 +10:00
RumovZ
20bd207f00
Give deck.name the newtype NativeDeckName
...
The deck name must be constructed by calling associated functions of
NativeDeckName, unless the name is guaranteed to be valid machine
name (like "Default").
NativeDeckName exposes methods to mutate the deck name and return
the human name.
The storage routines take &strs, but those should be slices of
NativeDeckNames to ensure machine form and normalization.
2021-04-17 22:47:04 +02:00
Damien Elmes
ac46d40db3
Merge pull request #1132 from RumovZ/refactor-decks
...
Refactor decks/mod.rs
2021-04-17 18:21:56 +10:00
Damien Elmes
8cf8c901fe
fix parent limit handling
...
We can't calculate it on the backend, as adjusting a config may alter
the parent limit.
Also fix hidden deck name and missing separator.
2021-04-17 12:53:59 +10:00
RumovZ
c03acf832b
Split Col impls in decks in pub and private blocks
2021-04-16 08:30:16 +02:00
RumovZ
5931631d76
Remove some imports in decks which are in prelude
2021-04-15 20:07:16 +02:00
RumovZ
3138fccaca
Create decks/stats.rs
2021-04-15 20:06:16 +02:00
RumovZ
d2337e4cd3
Move some methods into decks/counts.rs
2021-04-15 19:53:11 +02:00
RumovZ
9dac8e2b5f
Tidy up blocks and imports in decks/mod.rs
2021-04-15 19:43:35 +02:00
RumovZ
a1617760d4
Create decks/remove.rs
2021-04-15 19:35:54 +02:00
RumovZ
7225b7e4dc
Create decks/add.rs
2021-04-15 19:29:52 +02:00
RumovZ
3f36db4f81
Create decks/reparent.rs
2021-04-15 19:17:43 +02:00
RumovZ
9c3671cf3f
Create decks/name.rs
2021-04-15 18:46:01 +02:00
Damien Elmes
2953a821e5
don't let manual rescheduling affect card stats average
...
https://forums.ankiweb.net/t/set-due-date-has-a-weird-effect-on-cards-table/9289/2
2021-04-15 18:51:39 +10:00
Damien Elmes
7f738c11a2
deck config prototype work in progress
...
Still in the early stages, and not hooked up yet.
2021-04-14 22:33:10 +10:00
Damien Elmes
14ce1cccbb
Merge pull request #1126 from RumovZ/normalising-tweaks
...
Drop ANDs and optional double quotes when writing searches
2021-04-14 19:15:52 +10:00
Damien Elmes
c49d6ce49f
run black/isort on Python scripts
2021-04-14 18:22:02 +10:00
RumovZ
2554e80ce8
Drop ANDs and optional quotes when normalising
2021-04-14 09:53:45 +02:00
Damien Elmes
28fdbd67ae
add missing copyright headers to *.rs
2021-04-13 18:59:16 +10:00
Damien Elmes
dac990e4c2
fix misnamed timer property in deck config
...
The old JSON stored it as an int, but it's used as a boolean
2021-04-13 14:04:33 +10:00
RumovZ
fadec3dc5b
Merge branch 'master' into backend-columns
2021-04-11 11:18:15 +02:00
RumovZ
801f52df40
Remove from_config variant in pb SortOrder
...
Instead, fetch the config order on the frontend and pass a builtin
variant into the backend.
That makes the following unnecessary:
* Resolving the config sort in search/mod.rs
* Deserializing the Column enum
* Config accessors for the sort columns
2021-04-10 11:13:42 +02:00
RumovZ
5982a777aa
Rename SearchItems to ReturnItemtype
2021-04-10 10:14:41 +02:00
RumovZ
331df75b72
Remove internal clones of pb BrowserRow structs
2021-04-10 09:49:29 +02:00
RumovZ
48b70873cb
Rename column label fields
2021-04-10 09:14:20 +02:00
RumovZ
b723159b3b
Remove unused Serialize
2021-04-10 09:13:48 +02:00
RumovZ
d7f7deafd4
Store active browser columns in col state
2021-04-09 22:53:02 +02:00
RumovZ
769b5ac833
Remove superfluous muts
2021-04-09 22:51:18 +02:00
RumovZ
f04ea5a2c7
Move Column logic into main rslib
2021-04-09 19:09:48 +02:00
RumovZ
055a5e8a04
Remove pb SortKind enum and use pb Columns instead
2021-04-09 18:50:30 +02:00
RumovZ
bdd257e140
Merge SortKind enum into Column enum
2021-04-09 18:03:29 +02:00
RumovZ
c74078ea9e
Unify state columns
...
* Remove duplicate backend columns
* Remove duplicate column routines
* Move columns on frontend from state to model
* Generate available columns from Colum enum
* Add second column label for notes mode
2021-04-08 23:48:24 +02:00
RumovZ
dd56dc6650
Rename columns for future mode-independent use
2021-04-08 23:43:48 +02:00
RumovZ
7a0cb08ac2
Merge browser row str methods
2021-04-08 20:45:47 +02:00
RumovZ
4692a48ef3
Add card mod column for notes mode
2021-04-08 20:14:10 +02:00
RumovZ
2350cd6e91
Add deck column for notes mode
2021-04-08 19:46:06 +02:00
RumovZ
c6ebb9b441
Merge row contexts
2021-04-08 13:51:46 +02:00
RumovZ
8a131da9a2
Add enum for column sorting
2021-04-08 11:40:24 +02:00
RumovZ
d8a0aa922c
Add enum for column alignment
2021-04-08 11:28:29 +02:00
RumovZ
6c3c479906
Move BrowserColumn into BrowserColumns message
2021-04-08 10:16:06 +02:00
RumovZ
ee0ad6f5d6
Fix deck column serialization string
2021-04-06 23:03:30 +02:00
RumovZ
11bdeb9ca4
Add column logic on backend
2021-04-06 19:46:12 +02:00
RumovZ
929b7dc15b
Make Column a strum
2021-04-06 16:54:09 +02:00
Damien Elmes
6e954e82a5
current deck change is now undoable
...
- make sure we set flag in changes when config var changed
- move current deck get/set into backend
- set_config() now returns a bool indicating whether a change was
made, so other operations can be gated off it
- active decks generation is deferred until sched.reset()
2021-04-06 21:52:06 +10:00
Damien Elmes
5676ad5101
update find&replace, and remove perform_op()
2021-04-06 17:07:38 +10:00
Damien Elmes
84fe309583
update scheduling ops
...
- migrate to CollectionOp()
- return actual change count when suspending/burying
- add helper to convert vec to vec of newtype
2021-04-06 16:38:42 +10:00
Damien Elmes
2de8cc1a94
update note ops
...
remove_note() now returns the count of removed cards, allowing us
to unify the tooltip between browser and review screen
I've left the old translation in - we'll need to write a script at
one point that gathers all references to translations in the code,
and shows ones that are unused.
2021-04-06 14:56:36 +10:00
Damien Elmes
3f62f54f14
more perform_op() tweaks
...
- pass the handler directly
- reviewer special-cases for flags and notes are now applied at
call site
- drop the kind attribute on OpChanges which is not needed
2021-04-06 10:14:11 +10:00
Damien Elmes
097121424b
cache scheduling info
...
Saves us having to recalculate it for each browser row
2021-04-05 17:09:53 +10:00
Damien Elmes
ebf7cc61d4
switch next_day_at to a newtype
2021-04-05 16:17:26 +10:00
Damien Elmes
8d6b9d15a5
avoid fetching decks for each row
...
Like notetypes, there is a col.get_deck() routine which caches
fetches, so that successive fetches are cheap. This makes it simpler
to just fetch the deck at the start.
We were also attempting to fetch a deck with id 0 for each row; I've
changed this so that we only fetch it if the id is non-zero.
I18n uses an Arc internally, so it is cheap to clone. This allow us
to drop the lifetime specifiers on the context structures.
2021-04-05 15:13:32 +10:00
Damien Elmes
a18bb2af12
add booleans for various screens to OpChanges
...
The backend knows exactly which op has executed, and it saves us having
to re-implement this logic on each client.
Fixes the browser table refreshing when toggling decks.
2021-04-05 14:28:56 +10:00
Damien Elmes
3adf03f9cb
add a unit test for multiple mutations
2021-04-05 11:52:23 +10:00
Damien Elmes
996d9f9bbc
undo support for tag collapse; expand->collapse for consistency w/ decks
2021-04-05 11:47:12 +10:00
Damien Elmes
2168dfe63d
add routine to set deck collapse state
...
Updating a deck via protobuf is now exposed on the backend, but not
currently on the frontend - I suspect we'll be better off writing
separate routines for the actions we need instead, and we get a better
undo description for free.
This is currently causing an ugly redraw in the browse screen, which
will need fixing.
2021-04-05 11:19:04 +10:00
Damien Elmes
42a4d11416
embed deck config and expose to frontend
2021-04-04 22:52:53 +10:00
Damien Elmes
037df9522b
embed notetype messages
2021-04-04 21:57:17 +10:00
Damien Elmes
c4b3ab62c8
embed deck messages
2021-04-04 21:41:16 +10:00
Damien Elmes
1a4c4373d2
expose read-only access to new notetype objects
2021-04-04 20:45:37 +10:00
Damien Elmes
c60b88cd2f
expose read-only access to new deck objects
2021-04-04 20:39:56 +10:00
Damien Elmes
8e16c94b96
recognize select statements with a leading newline from old stats screen
2021-04-03 23:23:33 +10:00
Damien Elmes
10309c9d9c
fix error after undoing default deck deletion
2021-04-03 16:54:02 +10:00
Damien Elmes
41c5a25dc8
simplify errors
...
- use a flat enum instead of oneof messages, most of which were empty
- tidy up the Python side
2021-04-03 16:06:46 +10:00
Damien Elmes
fe6888f9a4
rename backend/err.rs -> error.rs
2021-04-03 14:47:52 +10:00
Damien Elmes
f666f15b63
use perform_op() for undo()
...
Instead of manually updating the UI after undoing, we just rely
on the same change notification infrastructure regular operations
use.
2021-04-03 14:38:49 +10:00
Damien Elmes
afc8680f2a
make sure we don't invoke second search in v1 scheduler
2021-04-02 21:05:22 +10:00
Damien Elmes
e73359510d
move filtered deck labels to backend
...
- use strum to generate an iterator for the protobuf enum so we don't
forget to add new labels if extending in the future
- no add-ons appear to be using dynOrderLabels(), so it has been removed
@RumovZ perhaps a similar approach might work for listing the available
browser columns as well?
2021-04-01 23:53:38 +10:00
Damien Elmes
f55fe6e518
i18n error shown when attempting to rebuild normal deck
2021-04-01 22:55:10 +10:00
Damien Elmes
ac1b9fadde
merge the filtered deck errors into an enum
...
Fixes the wrong message being shown when trying to move cards to a
filtered deck
2021-04-01 22:30:00 +10:00
Damien Elmes
7df128a103
fix changes to .ftl and .proto files not being picked up by 'cargo check'
2021-04-01 22:29:54 +10:00
Damien Elmes
4e9a5ec5ea
fix a clippy lint
2021-04-01 18:01:31 +10:00
Damien Elmes
ba541076aa
convert card template error to tuple, and report notetype name in error
...
Older translations will note have the $notetype variable, but that is
not an error in Fluent - it would only cause problems if we tried to
use the new string on older Anki versions.
2021-04-01 17:59:33 +10:00
Damien Elmes
7a29d987c4
convert Json and Proto errors to tuple
2021-04-01 17:45:12 +10:00
Damien Elmes
55a6f10d24
tuple type for IoError
2021-04-01 17:40:35 +10:00
Damien Elmes
2b6c8b4296
tuple type for InvalidInput
2021-04-01 17:37:18 +10:00
Damien Elmes
a250464309
switch DbError to tuple type
2021-04-01 17:34:03 +10:00
Damien Elmes
1704f7fe80
drop dependency on failure crate
2021-04-01 17:21:13 +10:00
Damien Elmes
af37164fba
move sync/network errors into separate file
2021-04-01 17:02:54 +10:00
Damien Elmes
8363fcf2a8
move DB error into separate file; add InvalidRegex error
2021-04-01 16:28:23 +10:00
Damien Elmes
f14a631f68
split search errors into separate file
2021-04-01 16:18:28 +10:00
Damien Elmes
094e4ad461
crate::err -> crate::error
2021-04-01 16:07:13 +10:00
RumovZ
99e28068f9
Refactor get_row_color()
2021-03-31 08:56:54 +02:00
RumovZ
5e151cdc42
Pass Column by value
2021-03-31 00:02:10 +02:00
RumovZ
8779fb5ede
Add note interval column
2021-03-30 23:44:35 +02:00
RumovZ
31155f2dcd
Refactor note_ease_str()
2021-03-30 23:44:16 +02:00
RumovZ
f530c6d852
Fix comment typo
2021-03-30 21:40:35 +02:00
RumovZ
1ad91a5312
Add note due column
2021-03-30 21:39:15 +02:00
RumovZ
e9c14a763c
Refactor card_due_str()
2021-03-30 20:50:09 +02:00
RumovZ
da156cd759
Rename browser_rows to browser_table
...
Reflects the addition of column handling.
2021-03-30 12:08:35 +02:00
RumovZ
ffe77b1291
Add browser column enum for backend
2021-03-30 11:59:52 +02:00
RumovZ
4933b922f7
Add note lapses column
2021-03-29 16:06:15 +02:00
RumovZ
32e538d0db
Add note reps column
2021-03-29 15:52:02 +02:00
Damien Elmes
3383f1742a
rename BrowserCardState
...
Use a more verbose name, and use 'note' rather than 'card', so we
can rely on the default of False
2021-03-29 17:12:45 +10:00
RumovZ
0d8b1c9d0b
squash merge browser refactor
...
Closes #1100
2021-03-29 16:14:54 +10:00
Damien Elmes
0a5222c400
add a few more ftl type hints
2021-03-29 15:55:15 +10:00
Damien Elmes
6ca690a14c
gate qt template inclusion on extra_ftl_root name
...
Bazel was not noticing that the build script needs to be recompiled
when the qt templates flag was changed.
2021-03-29 13:17:38 +10:00
Damien Elmes
cfac40febc
switch NoteType to Notetype
...
When used as a variable, we were typically calling it a 'notetype', not
a 'note type'.
2021-03-27 22:03:19 +10:00
Damien Elmes
9f4a06abee
ID -> Id in protobuf and Python
...
follow-up to dc81a7fed0
2021-03-27 21:38:20 +10:00
Damien Elmes
fcfa6bab4e
update to latest Rust
2021-03-27 20:49:10 +10:00
Damien Elmes
561d160590
fix some clippy lints in tests
2021-03-27 20:44:31 +10:00
Damien Elmes
1055acb9f2
fix more issues uncovered by the latest clippy
2021-03-27 20:25:34 +10:00
Damien Elmes
dc81a7fed0
use mixed case for abbreviations in Rust code
...
So, this is fun. Apparently "DeckId" is considered preferable to the
"DeckID" were were using until now, and the latest clippy will start
warning about it. We could of course disable the warning, but probably
better to bite the bullet and switch to the naming that's generally
considered best.
2021-03-27 19:53:33 +10:00
Damien Elmes
89d249b3b6
update to the latest rules_rust + security framework update
2021-03-27 19:28:19 +10:00
Damien Elmes
dd99059218
address some new clippy lints
2021-03-27 19:28:19 +10:00
Damien Elmes
a96ac98605
update Rust deps
2021-03-27 14:47:16 +10:00
Damien Elmes
b5b21edd11
add string/number distinction to generated Rust methods
2021-03-27 14:31:23 +10:00
Damien Elmes
e4002d7a5e
update to latest Fluent
2021-03-27 13:24:11 +10:00
Damien Elmes
3433c02242
i18n->tr in rslib/ to match Python/TS code
2021-03-27 12:09:51 +10:00
Damien Elmes
d6b9cc4d9b
drop the legacy enum from rslib, and pass separate module/message idx
2021-03-27 11:56:31 +10:00
Damien Elmes
f485efce16
update remaining TR references in rslib
2021-03-27 11:18:34 +10:00
Damien Elmes
c45ab78b73
update multi-arg TR references, where some needed reordering
2021-03-27 10:49:40 +10:00
Damien Elmes
698ae855d3
update 1 arg tr strings in rslib
2021-03-27 10:39:53 +10:00
Damien Elmes
d5e5722dc8
preserve variable order when extracting from ftl files
2021-03-27 09:09:13 +10:00
Damien Elmes
dc5fdd30d4
update no-arg TR references in rslib/
2021-03-26 23:16:08 +10:00
Damien Elmes
5abc48932c
write methods into generated.rs
2021-03-26 23:07:18 +10:00
Damien Elmes
cca1d29cc8
fix warning in latest Rust
2021-03-26 23:06:15 +10:00
Damien Elmes
b57e9be46f
allow js to request specific i18n modules
...
Brings the payload on the congrats page with a non-English language
down from about 150k to 15k
2021-03-26 21:43:36 +10:00