Damien Elmes
957e781484
add tag drag & drop support
2021-02-02 20:14:04 +10:00
Damien Elmes
c5704e6102
collapsed->expanded in other tag uses for consistency
2021-02-02 18:52:57 +10:00
Damien Elmes
e0a79b421b
return tags as a string list directly; we don't need usn or collapse state
2021-02-02 18:52:57 +10:00
Damien Elmes
99d6247333
collapsed->expanded in TagTreeNode
2021-02-02 18:52:57 +10:00
Damien Elmes
ab1ecae0c3
decks start collapsed
2021-02-02 17:14:11 +10:00
Damien Elmes
b7435e5d92
tags start collapsed
2021-02-02 16:47:05 +10:00
Damien Elmes
9b468c81fd
Merge pull request #959 from Arthur-Milchior/AGPL
...
NF: add AGPL licence missing in some file
2021-02-01 12:46:59 +10:00
Damien Elmes
06d0d22436
Update card_stats.html
...
Don't want the header accidentally getting copied about when users copy+paste their stats.
2021-02-01 12:46:29 +10:00
Arthur Milchior
6a1815fd56
NF: add AGPL licence missing in some file
...
I noticed it when I looked at some files now used in AnkiDroid, wanting to be sure we clearly indicate that we have
AGPLv3 code linked in the app
2021-01-31 21:50:21 +01:00
RumovZ
632ad14801
Remove protobuf filters whole_col and current_deck
2021-01-31 11:12:49 +01:00
Damien Elmes
e5f9e4c5e4
embed BuiltinSortKind
2021-01-31 18:56:16 +10:00
Damien Elmes
1b4106dbf0
embed kind enum in StockNoteType and remove prefix
2021-01-31 18:56:16 +10:00
Damien Elmes
9a697fd843
Merge branch 'more-backend-search' into main
2021-01-31 14:21:51 +10:00
Damien Elmes
5710e4bbd0
move drag/drop deck logic to backend
2021-01-31 13:46:31 +10:00
RumovZ
25393466dd
Rename EaseKind to RatingKind
2021-01-30 19:03:50 +01:00
RumovZ
2539747115
Manually namespace enum variants in SearchTerm
...
In protobuf "...enum values use C++ scoping rules, meaning that
enum values are siblings of their type, not children of it.
Therefore, [an enum variant] must be unique within [a message],
not just within [the enum.]"
So we must prefix enum variants with their enum's name, but can
also call them directly from the message namespace.
The protobuf crate is smart, though, and strips the prefixes.
(Simultaneously change some SearchTerm variant names.)
2021-01-30 17:56:29 +01:00
RumovZ
0374e8f4fe
Revert addition of pb.NoteIDs
2021-01-30 12:59:18 +01:00
Damien Elmes
190922666b
move Rating up a level
...
More ergonomic, and will allow reuse if we expose prop:rated in
the future.
2021-01-30 11:54:39 +10:00
Damien Elmes
2f1bbd44d2
simplify nid/nids searches, and ditch helper function
...
- IdList could be re-used for a cids: search in the future if required.
- Embedding the message means it's easy to access from Python as
an attribute of SearchTerm.
2021-01-30 11:37:00 +10:00
Damien Elmes
f6f537e89f
simplify Dupe message and ditch helper function
...
Calling code doesn't need to know about the existence of such helpers;
it can just rely on code completion to discover the required arguments.
2021-01-30 11:10:26 +10:00
Damien Elmes
b34d128560
rename FilterToSearchIn in backend to match frontend
2021-01-30 10:54:21 +10:00
Damien Elmes
dbe852431f
use a separate enum for the is:* searches
2021-01-30 10:49:00 +10:00
Damien Elmes
e3f2b77c5b
combine forgot_in_days and studied_today into a more general 'rated'
2021-01-30 10:26:23 +10:00
RumovZ
c7365abc9e
Refactor search_string() and FilterToSearchIn
...
See #955 .
2021-01-29 18:27:33 +01:00
Damien Elmes
cfc6620591
place each sidebar section under its own collapsible parent node
...
- Allows for group operations like "clear unused tags"
- Allows users to hide groups they're not interested in
2021-01-29 22:11:05 +10:00
Damien Elmes
34c53aafb4
add getter/setter for boolean config values
2021-01-29 21:03:19 +10:00
RumovZ
12c97442c9
Rename filters added_in etc. to added_in_days
2021-01-29 09:38:13 +01:00
Damien Elmes
7540917256
sort config keys
2021-01-29 16:31:29 +10:00
Damien Elmes
137679a1a1
remove unused set_all_config; expose .all_config().
2021-01-29 16:30:42 +10:00
RumovZ
d3d34bd9b3
Add backend filter for field name
2021-01-28 19:48:01 +01:00
RumovZ
d403430846
Fix nid search test
2021-01-28 16:29:34 +01:00
RumovZ
82cfee17d0
Add nid filter on backend
2021-01-28 16:19:55 +01:00
RumovZ
e80217af6a
Add forgot, due and added filters on backend
2021-01-28 11:11:32 +01:00
Damien Elmes
ae1491492f
unbury on sync start
...
https://forums.ankiweb.net/t/unburying-works-differently-on-anki-desktop-ankiweb-and-ios-app/6909
2021-01-28 11:54:48 +10:00
Damien Elmes
8bd94e779f
avoid bumping mtime when correcting card eases on upgrade
...
The USN is still set, which should cause the cards to sync in the
non-conflict case, but if changes have been made on other devices
the ease fix will not take priority, as we could be overwriting the
reviews of someone who has not synced in a while.
2021-01-28 08:11:35 +10:00
Damien Elmes
60bdb173ac
Merge pull request #953 from hgiesel/backlogcb
...
Add FutureDueShowBacklog as preferences
2021-01-27 19:44:01 +10:00
Damien Elmes
630360641f
suggest DB check if HTTP status 400 is returned
2021-01-27 14:23:28 +10:00
Henrik Giesel
e30f62c2a5
Add FutureDueShowBacklog as preferences
2021-01-27 01:15:19 +01:00
Damien Elmes
6285729c49
Merge pull request #897 from hgiesel/statssearch
...
Triggering searches from the stats screen.
2021-01-26 11:31:36 +10:00
Henrik Giesel
6b0a26e46b
Move dispatch logic from Histogram to individual graphs
2021-01-25 16:34:44 +01:00
Henrik Giesel
8ecd1cad03
Add back bridge_commands_support via backend.proto
2021-01-25 13:47:20 +01:00
Kerrick Staley
e157eb443f
Add comment explaining why sfld column has type integer
...
The `notes.sfld` column in the `collection.anki2` database has type `integer`, even though it contains text. This is [something SQLite allows](https://dba.stackexchange.com/questions/106364/text-string-stored-in-sqlite-integer-column ) and was done to allow integer values to sort numerically. Add a comment explaining this.
2021-01-25 18:39:59 +08:00
Damien Elmes
b00c62455a
handle missing deck ID in templates
...
https://github.com/ankidroid/Anki-Android/issues/7512
2021-01-25 16:47:23 +10:00
Damien Elmes
028fdb2562
coerce some more invalid decimal values to ints during sync
2021-01-25 09:43:50 +10:00
Damien Elmes
75f06e21bc
handle older clients not setting 'done' key when false
2021-01-24 09:05:17 +10:00
Damien Elmes
a6a4c0032d
Merge pull request #934 from hgiesel/graphprefs
...
Add GraphsPreferences API to graphs for setting persistent preferences
2021-01-23 21:24:41 +10:00
Damien Elmes
387be76c00
minor wording tweak: GraphsPreferences -> GraphPreferences
2021-01-23 20:47:45 +10:00
Damien Elmes
81b312ddd1
handle decks/notetypes with a duplicate name being sent in a sync
...
Typically caused by older clients, but could happen if the user added
the same name on different devices without syncing.
Also add an inactive test that was used to try track down this issue
and might be useful in the future.
2021-01-23 12:59:24 +10:00
Henrik Giesel
a5f59515e2
Rename GraphsPreferencesOut to simply GraphsPreferences
2021-01-22 19:39:03 +01:00
Henrik Giesel
7149c468e5
Set calendar labels to emptyColour
2021-01-22 18:15:16 +01:00
Henrik Giesel
24dd14896a
Make cardCountsSeparateInactive settable
2021-01-22 18:03:58 +01:00
Henrik Giesel
d6ba9eb61a
Uniformly rename firstWeekday to firstDayOfWeek
2021-01-22 16:53:33 +01:00
Henrik Giesel
846dd396a6
Add non-functioning logic for settings graphs preferences
2021-01-22 13:14:35 +01:00
Henrik Giesel
1516f5c37e
Add GraphsPreferences endpoint to backend
2021-01-22 13:13:48 +01:00
Damien Elmes
744c096e6e
(de)serialize Weekday directly
...
Re: discussion in https://github.com/ankitects/anki/pull/934
2021-01-22 12:12:57 +10:00
Damien Elmes
12a36a7dc7
handle non-chunked graves from AnkiDroid
2021-01-22 10:00:25 +10:00
Damien Elmes
5cd125e2c8
add missing file header
2021-01-21 10:31:34 +10:00
Damien Elmes
4890872c3a
fix context in rated: search error message
2021-01-19 18:33:10 +10:00
Damien Elmes
2685e641ee
more parsing error tweaks
...
The majority of the error checking can now be delegated to routines
like parse_f32(), parse_negative_i32() and so on, instead of creating
specific error messages for each type.
2021-01-19 15:50:26 +10:00
Damien Elmes
7eb78ecb16
simplify write_props() and associated translations
...
This is a work in progress; see associated PR discussion to follow.
2021-01-19 12:40:16 +10:00
Damien Elmes
57d32c6e4a
have register_tag mutate the tag if it changes it, instead of copying
2021-01-19 12:37:51 +10:00
Damien Elmes
6b07984265
fix deck and tag normalization
...
The issue existed in the deck code as well; I've added a test for it.
2021-01-19 12:36:01 +10:00
Damien Elmes
db3f29ac30
Merge pull request #929 from abdnh/tag-case
...
Make tags match their parents case
2021-01-19 11:56:03 +10:00
Damien Elmes
de16039b48
tweaks to the parent matching behaviour
...
- move logic out of the storage layer - its job is only to read
and write data from the DB
- avoid the Result within a Result
- return the preferred case as an option, so we can avoid a copy
in the unchanged case
- return a Cow when normalizing, so we can avoid copying in the
unchanged case
- add tags directly in clear_unused_tags(), so we avoid doing
lookups for every tag in the tag list
2021-01-19 11:52:24 +10:00
abdo
ee32ec4d25
Make tags match their parents case
...
https://github.com/ankitects/anki/pull/900/#issuecomment-762018745
2021-01-19 02:29:09 +03:00
Henrik Giesel
9246698d4e
Satisfy formatter
2021-01-19 00:17:30 +01:00
Henrik Giesel
346b7e7f45
Add firstWeekday to GraphsOut
2021-01-18 23:10:53 +01:00
Damien Elmes
d92ba2c246
Merge pull request #900 from abdnh/tagtree
...
Hierarchical tags
2021-01-18 16:36:22 +10:00
abdo
a6234d1b66
clear_tag() should be case-insensitive
2021-01-18 03:52:28 +03:00
Henrik Giesel
232f5b5e79
Adjust unit tests for new InvalidRatedEase
2021-01-18 00:05:20 +01:00
Henrik Giesel
df3995e688
Generalize InvalidRatedEase error for rated and prop:rated
2021-01-17 23:55:05 +01:00
Henrik Giesel
a15ed65b8e
Use explicit unreachable in rust pattern matching
2021-01-17 22:18:12 +01:00
Henrik Giesel
6ace112cad
Add resched to tags
2021-01-17 21:44:56 +01:00
Henrik Giesel
fb497ea2e6
Reintroduce false removed limits
2021-01-16 17:38:02 +01:00
Henrik Giesel
cb7df2c71f
Change argument order of write_rated to be more in line with the logic
2021-01-16 15:24:22 +01:00
Henrik Giesel
915cde892b
Lift the 365 limit from rated/resched searches
2021-01-16 15:08:15 +01:00
Henrik Giesel
682ab23482
Fix issues after rebasing
2021-01-16 13:07:35 +01:00
Henrik Giesel
216ca28cb2
Being overly correct with the review ids
2021-01-16 12:45:02 +01:00
Henrik Giesel
ac0c5a1d00
Fix formatting
2021-01-16 12:45:02 +01:00
Henrik Giesel
0c71487973
Pass in the the negative offset day to write_rated
2021-01-16 12:44:59 +01:00
Henrik Giesel
401796ffbe
Port prop:rated to EaseKind
2021-01-16 12:44:03 +01:00
Henrik Giesel
c84a75b4a5
Implement functioning prop:rated
2021-01-16 12:42:08 +01:00
Henrik Giesel
6da38dc719
Add nonfunctional "prop:rated" as possible search query
2021-01-16 12:42:06 +01:00
Damien Elmes
b3f57754df
use of 'self' in function name was confusing
2021-01-16 21:14:55 +10:00
Damien Elmes
ff8c8a3bca
simplify unused tags and DB check
...
- backend routines should contain minimal logic, and should call
into a routine on the collection
- instead of copying the giant-string approach the Python code was taking,
we use a HashSet to keep track of seen tags as we loop through the
notes, which should be more efficient
2021-01-16 20:38:16 +10:00
Damien Elmes
7f4850659d
no need for separate all_tags_sorted()
...
tag is the primary key, so sqlite will give it back to us in
sorted order already.
2021-01-16 19:46:58 +10:00
Damien Elmes
f41eb90c21
custom ord/partialeq is not required; fix clippy lint
2021-01-16 19:44:37 +10:00
Damien Elmes
1288191743
handle missing parent names with varying case
...
Also convert to \x1f before sorting, so that numbers (with have a lower
ascii order than '::') don't mess up the sort.
2021-01-16 19:42:25 +10:00
Damien Elmes
82f9143171
add a (currently failing) test for duplicate parent names
2021-01-16 19:04:25 +10:00
Damien Elmes
96bd39f13e
search error tweaks
...
- use markdown instead of HTML, to make editing and translating easier
- use a shared prefix
- a few very minor wording tweaks
- we don't need to translate undocumented command errors
- share a string for positive number of days
- share a string for invalid property and state arguments, and avoid
listing them out
Related discussion: https://github.com/ankitects/anki/pull/922
2021-01-16 15:59:19 +10:00
RumovZ
bdb7948406
Add resched error tests
2021-01-15 10:57:55 +01:00
RumovZ
b9f7643100
Merge branch 'master' into search-errors
...
Add error support for new resched node, update rated error.
2021-01-15 10:50:02 +01:00
RumovZ
9d641bcb76
Include context in search error test
2021-01-15 09:09:54 +01:00
abdo
112aa44c90
Merge branch 'master' of https://github.com/ankitects/anki into tagtree
2021-01-15 01:12:01 +03:00
RumovZ
e0168c8216
Encode HTML entities in search errors
2021-01-14 23:02:39 +01:00
RumovZ
6f8a9ba2ff
Add search context for certain error kinds
2021-01-14 22:40:07 +01:00
RumovZ
74c2ce8df1
Rename ParseErrorKind to SearchErrorKind
2021-01-14 22:00:52 +01:00
RumovZ
6cbb4b48b2
Add errorkind test
2021-01-14 19:10:12 +01:00
RumovZ
8c6fbd828d
Add FailKinds for unopened/unclosed groups
2021-01-14 19:09:31 +01:00
RumovZ
ae22b78534
Make AnkiError::SearchError work with ParseError
...
Use mock ftl strings for now.
2021-01-14 11:14:55 +01:00