Commit Graph

993 Commits

Author SHA1 Message Date
Henrik Giesel
834f2de99b Make cardCountsSeparateInactive settable 2021-01-22 18:03:58 +01:00
Henrik Giesel
aebaa04652 Uniformly rename firstWeekday to firstDayOfWeek 2021-01-22 16:53:33 +01:00
Henrik Giesel
054c30a695 Add non-functioning logic for settings graphs preferences 2021-01-22 13:14:35 +01:00
Henrik Giesel
665a13e378 Add GraphsPreferences endpoint to backend 2021-01-22 13:13:48 +01:00
Damien Elmes
99d732799c (de)serialize Weekday directly
Re: discussion in https://github.com/ankitects/anki/pull/934
2021-01-22 12:12:57 +10:00
Damien Elmes
a77aa6b65a handle non-chunked graves from AnkiDroid 2021-01-22 10:00:25 +10:00
Damien Elmes
ce50b1cddf add missing file header 2021-01-21 10:31:34 +10:00
Damien Elmes
44cde24679 fix context in rated: search error message 2021-01-19 18:33:10 +10:00
Damien Elmes
d273ebb756 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
0b83efb63e 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
a4ec467284 have register_tag mutate the tag if it changes it, instead of copying 2021-01-19 12:37:51 +10:00
Damien Elmes
9edb002679 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
09bea954a2
Merge pull request #929 from abdnh/tag-case
Make tags match their parents case
2021-01-19 11:56:03 +10:00
Damien Elmes
71f1d3b982 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
3159cf4ab6 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
a5947e5c65 Satisfy formatter 2021-01-19 00:17:30 +01:00
Henrik Giesel
04e606bf4b Add firstWeekday to GraphsOut 2021-01-18 23:10:53 +01:00
Damien Elmes
318cc01c73
Merge pull request #900 from abdnh/tagtree
Hierarchical tags
2021-01-18 16:36:22 +10:00
abdo
0ac97cf358 clear_tag() should be case-insensitive 2021-01-18 03:52:28 +03:00
Henrik Giesel
84c997fa4d Adjust unit tests for new InvalidRatedEase 2021-01-18 00:05:20 +01:00
Henrik Giesel
bdc6494c79 Generalize InvalidRatedEase error for rated and prop:rated 2021-01-17 23:55:05 +01:00
Henrik Giesel
2b45ef22a5 Use explicit unreachable in rust pattern matching 2021-01-17 22:18:12 +01:00
Henrik Giesel
bc81165be4 Add resched to tags 2021-01-17 21:44:56 +01:00
Henrik Giesel
947260e4aa Reintroduce false removed limits 2021-01-16 17:38:02 +01:00
Henrik Giesel
e7660113ce Change argument order of write_rated to be more in line with the logic 2021-01-16 15:24:22 +01:00
Henrik Giesel
112e7f577e Lift the 365 limit from rated/resched searches 2021-01-16 15:08:15 +01:00
Henrik Giesel
47542f97e5 Fix issues after rebasing 2021-01-16 13:07:35 +01:00
Henrik Giesel
908e0a375c Being overly correct with the review ids 2021-01-16 12:45:02 +01:00
Henrik Giesel
8f3c63bf0b Fix formatting 2021-01-16 12:45:02 +01:00
Henrik Giesel
88c75d73b6 Pass in the the negative offset day to write_rated 2021-01-16 12:44:59 +01:00
Henrik Giesel
3788cb8890 Port prop:rated to EaseKind 2021-01-16 12:44:03 +01:00
Henrik Giesel
b57d0da12a Implement functioning prop:rated 2021-01-16 12:42:08 +01:00
Henrik Giesel
ce55dc4a75 Add nonfunctional "prop:rated" as possible search query 2021-01-16 12:42:06 +01:00
Damien Elmes
34245e6f72 use of 'self' in function name was confusing 2021-01-16 21:14:55 +10:00
Damien Elmes
9f964916ab 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
d80a5c56e3 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
d54acba81f custom ord/partialeq is not required; fix clippy lint 2021-01-16 19:44:37 +10:00
Damien Elmes
a390a77815 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
6f7c68b661 add a (currently failing) test for duplicate parent names 2021-01-16 19:04:25 +10:00
Damien Elmes
9686cd99ec 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
5b03d1e2c8 Add resched error tests 2021-01-15 10:57:55 +01:00
RumovZ
cb4a103bb1 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
c8f0961c6c Include context in search error test 2021-01-15 09:09:54 +01:00
abdo
e018ea94b6 Merge branch 'master' of https://github.com/ankitects/anki into tagtree 2021-01-15 01:12:01 +03:00
RumovZ
182abfe66d Encode HTML entities in search errors 2021-01-14 23:02:39 +01:00
RumovZ
2a2ac38a1b Add search context for certain error kinds 2021-01-14 22:40:07 +01:00
RumovZ
5f05ca2548 Rename ParseErrorKind to SearchErrorKind 2021-01-14 22:00:52 +01:00
RumovZ
6af1852611 Add errorkind test 2021-01-14 19:10:12 +01:00
RumovZ
8f754e1525 Add FailKinds for unopened/unclosed groups 2021-01-14 19:09:31 +01:00
RumovZ
0b73110f82 Make AnkiError::SearchError work with ParseError
Use mock ftl strings for now.
2021-01-14 11:14:55 +01:00
RumovZ
4afb476f04 Fix text node parsers, add FailKind alias 2021-01-14 11:10:33 +01:00
abdo
831942c2e2 Fix unicode tag sorting 2021-01-14 07:04:55 +03:00
abdo
ee3c019804 Remove Default impl of Tag 2021-01-14 07:04:55 +03:00
abdo
9c1d7c522a Refactor code for clearing unused tags and saving collapse state 2021-01-14 07:04:14 +03:00
RumovZ
6d9cfb85ab Add pb message for dupe filter 2021-01-14 10:42:37 +10:00
RumovZ
d9bb20ac24 Expect backslashes to be escaped in dupe: text 2021-01-14 10:42:37 +10:00
RumovZ
f4cfccfc0a Fix writing dupe nodes
Rename comments and dupe functions on the backend accordingly to avoid
further confusion.
2021-01-14 10:42:37 +10:00
Damien Elmes
7d81d39be7
Merge pull request #918 from hgiesel/ratedflags
Introduce `resched:n` instead of `rated:n:0`
2021-01-14 10:19:10 +10:00
RumovZ
3aa15a7139 Optimise term parsers 2021-01-13 14:15:57 +01:00
RumovZ
447ff6931c Move parse errors, add helper func for parse fail 2021-01-13 13:23:25 +01:00
Henrik Giesel
9f7170ac0f Change "between 1 and 4" to "> 0" 2021-01-13 11:44:54 +01:00
Henrik Giesel
c0ec21b139 Rename EaseKind values 2021-01-13 11:41:48 +01:00
Damien Elmes
633034b24d add local sync server frontend 2021-01-13 11:42:00 +10:00
abdo
72e8f9d640 Merge branch 'master' of https://github.com/ankitects/anki into tagtree 2021-01-12 23:31:58 +03:00
abdo
9a68d84483 Keep tags in human form and update the tags table structure
See https://github.com/ankitects/anki/pull/900#issuecomment-758284016

- Leave tag names alone and add the collapsed and config columns to the tags table.
- Update The DB check code to preserve the collapse state of used tags.
- Add a simple test for clearing tags and their children
2021-01-12 23:12:35 +03:00
RumovZ
b89381ac95 Fix top-level search errorkinds 2021-01-12 17:32:26 +01:00
Damien Elmes
fbd91b22f5 tidy up UTC offset handling/timing calculations
- use the TimestampSecs newtype instead of raw i64s
- use FixedOffset instead of a minutes_west offset
- check localOffset each time the timing is calculated, and set it
if it's stale - even for v1.
- check for and fix missing rollover when calculating timing
- stop explicitly passing localOffset in the sync/start call
2021-01-12 21:32:56 +10:00
RumovZ
d00c54aacf Switch parser to custom erros and results 2021-01-12 10:43:12 +01:00
Damien Elmes
553908a856 add .clang-format so VS Code preserves formatting style on .proto save 2021-01-12 18:47:08 +10:00
Damien Elmes
31f941267c move sync JSON into separate file; add enum wrapper 2021-01-12 18:47:08 +10:00
Damien Elmes
09dfa9ced6 allow normal sync tests to run offline 2021-01-12 18:47:08 +10:00
Damien Elmes
f6c1a91674 use '<=' when merging UnchunkableChanges
Prevents current tests from failing when testing locally, due the current
second not changing between syncs.
2021-01-12 18:47:08 +10:00
Henrik Giesel
81d851610e Coerce resched:days as well 2021-01-11 17:25:42 +01:00
Henrik Giesel
5eb2c7b271 Satisfy rslib unit tests 2021-01-11 17:18:40 +01:00
Henrik Giesel
7a7152fe27 Remove EaseKind impl in favor of transforming to sql in function 2021-01-11 17:10:17 +01:00
Henrik Giesel
cbfe14ef4f Introduce "resched:n" instead of 0 and a flag for "rated" 2021-01-11 16:40:30 +01:00
Henrik Giesel
7e58660aab Modify default behavior of rated searches to exclude manual 2021-01-11 16:40:30 +01:00
Damien Elmes
9225c804db update Rust deps; add async_trait 2021-01-11 19:19:45 +10:00
Damien Elmes
401d5dd9cc
Merge pull request #917 from hgiesel/querynozero3
Coerce added/edited:0 to 1, Constrain rated:n to 1-365
2021-01-11 16:24:12 +10:00
Henrik Giesel
0b955c3699 Fix formatting 2021-01-10 16:38:20 +01:00
Henrik Giesel
adf969d37f Add a few rslib unit tests 2021-01-10 16:29:10 +01:00
Henrik Giesel
8f01887fe7 Remove coercion in write_rated 2021-01-10 16:23:53 +01:00
Henrik Giesel
87bc1e69b0 Coerce added/edited:0 to 1, constrain rated:n to 1 <= 365 2021-01-10 16:16:17 +01:00
Damien Elmes
5f70d718b8 favour readability over brevity in filter conversion 2021-01-10 09:19:33 +10:00
Damien Elmes
4ba4e8ca78
Merge pull request #913 from RumovZ/fix-write-template
Fix ordinal case in write_template
2021-01-10 08:58:00 +10:00
Damien Elmes
3f9604457d
Merge pull request #911 from RumovZ/backend-filters
Backend filters
2021-01-10 08:56:57 +10:00
Damien Elmes
4d471612ec fix protobuf formatting adding carriage returns on Windows 2021-01-10 08:48:20 +10:00
RumovZ
0629f80aeb Format backend.proto 2021-01-09 20:09:47 +01:00
RumovZ
f83553c82a Merge branch 'master' into backend-filters
Adapt new formatting.
2021-01-09 19:03:43 +01:00
RumovZ
ca62f3ef80 Fix ordinal case in write_template
Internal card ordinals start at 0, so add 1 again when writing a
template search string from a parsed ordinal.
2021-01-09 17:30:12 +01:00
abdo
0b5bb711a1 Remove unused backend methods & formatting 2021-01-09 17:48:34 +03:00
abdo
5919d9273f Fix tag collapse state not getting updated 2021-01-09 17:46:52 +03:00
abdo
97b4c2124c sql formatting 2021-01-09 17:38:16 +03:00
abdo
f7f509c70d Move tag collapse method to the backend 2021-01-09 17:10:16 +03:00
abdo
1be789f25f Move sql code for upgrading to schema 17 to a separate file 2021-01-09 17:10:16 +03:00
abdo
c6e3d55400 fill_missing_tags's input should be sorted
I assumed that fill_missing_tags will work correctly with un unsorted
tag list previously so I replaced the all_tags_sorted call, but take the following the list for example:

["foo::bar", "foo"]

This will cause "foo" to be counted like a missing tag, since it's
encountered the first time when looking at "foo::bar"", and its config
and other associated data will be lost.
2021-01-09 17:10:16 +03:00
abdo
b33267f754 Do not check for missing tag parents at registration time 2021-01-09 17:10:16 +03:00
abdo
b276ce3dd5 Hierarchical tags 2021-01-09 17:10:13 +03:00
RumovZ
9ef691c06f Provide filter searches through backend 2021-01-09 10:50:08 +01:00
Damien Elmes
fc948d3e83 add clang-format for backend.proto formatting 2021-01-09 17:08:50 +10:00
Damien Elmes
e0c3949ef9 format backend.proto with standard Google style 2021-01-09 15:50:24 +10:00
Damien Elmes
c3b1266f47 fix some comments in wrong position after format 2021-01-09 14:26:51 +10:00
Damien Elmes
3dad3c90d0 add .sql file formatter
Uses the logic from the sqltools VSCode add-on, with a workaround
for the use of 'type' in some table columns.

By detecting the presence of 'BUILD_WORKSPACE_DIRECTORY' we can tell
if the rule is running in test mode or was run directly, avoiding the
need for separate check and fix rules. It might be nice to extend this
to other formatting rules in the future as well.
2021-01-09 14:22:49 +10:00
Damien Elmes
56e4e2d518 reformat .sql files 2021-01-09 14:08:55 +10:00
Henrik Giesel
82a4e0abe8 Don't import now unused INITIAL_EASE_FACTOR_THOUSANDS 2021-01-08 19:32:36 +01:00
Henrik Giesel
caa536a753 Reset ease to 0 for after rescheduling cards as new 2021-01-08 18:15:24 +01:00
Damien Elmes
fe4da25e15 fix reposition not honoring provided order, and add unit test 2021-01-08 20:38:49 +10:00
Damien Elmes
97e3bfe1c0
Merge pull request #904 from hgiesel/propdue
Streamlining `is:due`, `prop:due`, and the FutureDue graph
2021-01-08 16:34:53 +10:00
Damien Elmes
10630ab723 handle SortOrderProto conversion separately, and use enum getter
In most cases we can just fall back on the default enum value instead
of caring if it's missing/invalid.
2021-01-08 15:56:20 +10:00
Damien Elmes
cbeb714062 convert sort_kind_from_pb into from impl 2021-01-08 09:42:54 +10:00
Damien Elmes
1a5b5f09cc convert from protobuf enum, rather than the underlying i32 2021-01-08 09:24:03 +10:00
Henrik Giesel
4c570785bb Add comment about integer division 2021-01-07 20:10:25 +01:00
Henrik Giesel
04a56209c6 Restate rslib unit test 2021-01-07 19:56:36 +01:00
Henrik Giesel
155a59b80b Search for Learn and PreviewRepeat cards when using prop:due 2021-01-07 19:01:10 +01:00
Henrik Giesel
795dcab370 Include PreviewRepeat cards in is:due 2021-01-07 17:24:10 +01:00
RumovZ
76c16180ae Add native enum for concatenate_search's separator 2021-01-07 12:50:57 +01:00
RumovZ
ebe535e42f Add Position in PropertyKind match of writer.rs 2021-01-06 23:29:09 +01:00
RumovZ
6ee9e4f58c Merge branch 'master' of https://github.com/ankitects/anki into norm-search 2021-01-06 20:57:24 +01:00
RumovZ
d9f7d2e70d Add tests for writer.rs
Also minor adjustments to concatenate_searches.
2021-01-06 19:39:34 +01:00
RumovZ
07499dd890 Implement search replacing via Ctrl+Shift combo
Also switch to using the new backend functions for concatenating and
negating searches.
2021-01-06 18:32:29 +01:00
RumovZ
84061a6e6d Implement replace_search_term 2021-01-06 14:03:43 +01:00
RumovZ
79d0b5496b Implement concatenate_searches
Fix minor stuff in writer.rs.
2021-01-06 14:00:47 +01:00
RumovZ
713db05f27 Implement negate_search 2021-01-06 13:57:35 +01:00
Damien Elmes
e28c67d4f6
Merge pull request #895 from hgiesel/newlearn
Change meaning of "is:learn" to filter on type, not queue
2021-01-06 19:13:59 +10:00
Henrik Giesel
59cb901a3b Change meaning of "is:learn" to filter on type, not queue 2021-01-05 17:36:55 +01:00
Damien Elmes
dad4c76089 no need to log card resets when exporting 2021-01-05 11:11:37 +10:00
abdo
dc51dc6795 Rename prop:order to prop:pos 2021-01-02 13:35:10 +03:00
abdo
0ad4619833 Support prop:order to search for new cards by order 2021-01-01 04:36:51 +03:00
Damien Elmes
6199548ba9
Merge pull request #879 from Arthur-Milchior/Tex_keep_alt
Add Alt text to latex image
2020-12-31 12:02:40 +10:00
Damien Elmes
a0b4948760 fix clippy error in unit test 2020-12-31 09:48:05 +10:00
Arthur Milchior
d933d7774f Add Alt text to latex image
I'm trying to go over accessibilities issues in AnkiDroid. Since we'll use rust backend, I thought I might as well go
over it in rust directly. The only side effect in anki is that, if you copy a text with the image, you'll get the LaTeX
copied instead of nothing. Alas, it seems qt does not show alt text.
2020-12-30 18:00:06 +01:00
Damien Elmes
3f3f4b5c36 add aarch64 Linux to cargo; update deps 2020-12-30 13:33:16 +10:00
RumovZ
95b4e4cc84 Make function names more explicit and add docs 2020-12-29 11:18:49 +01:00
RumovZ
62753290d8 Make normalized search syntax more explicit
Also fix a bug with NoCombining and WordBoundary searches.
2020-12-29 11:06:53 +01:00
Arthur Milchior
008a87a794 NF: test # / and ^ can remains at end of string 2020-12-28 07:58:15 +01:00
Damien Elmes
14c0066a53 simplify NoteField init in test; add other bad chars 2020-12-28 13:19:37 +10:00
Damien Elmes
1d15a207bb fix comment and add basic unit test 2020-12-28 13:14:49 +10:00
Damien Elmes
b8a96d81f8
Merge pull request #870 from Arthur-Milchior/trim_start_field_name
Trim the start of field name if it is #, /, ^ or a whitespace
2020-12-28 13:06:57 +10:00
Arthur Milchior
01caa3d996 Trim the start of field name if it is #, /, ^ or a whitespace
I actually need to trim whitespace again to deal with a field name of the form "# foo"
2020-12-28 03:32:05 +01:00
Damien Elmes
40c5f8a907 update prost to new 0.7 release+auto stage changes
Allows us to drop slow git repo.
2020-12-28 10:12:35 +10:00
RumovZ
ecd04f8a59 Don't escape isolated - 2020-12-22 11:52:17 +01:00
RumovZ
873e96b60a Fix format and tests 2020-12-22 11:32:53 +01:00
RumovZ
5b24d9e4a6 Expose search writer 2020-12-22 11:06:55 +01:00
RumovZ
fcc87d16ea Add search writer 2020-12-22 11:04:38 +01:00
Damien Elmes
b48451610f fix sync indicator turning blue after startup sync
https://forums.ankiweb.net/t/why-is-my-sync-button-blue/2078/26?u=dae
2020-12-22 10:46:50 +10:00
Damien Elmes
ebeae9a5a0 don't pass BUILDINFO into build script
It was causing the build script to be recompiled each time a commit was
made, even though buildinfo.txt was not changing.
2020-12-21 16:04:29 +10:00
Damien Elmes
06399446e3 add some code editing/completion docs 2020-12-16 14:16:08 +10:00
Damien Elmes
dee0a2fc18 fix reposition not being applied in browser sort order
https://forums.ankiweb.net/t/reposition-function-not-working/5817

Also changed id->cid in the non-sorting case, as otherwise when
using all_searched_cards() on a sorted list, the results will be wrong.
2020-12-16 10:58:46 +10:00
Damien Elmes
75cbbea048
Merge pull request #848 from cecini/rslibdep
Update Rust deps, and nom to v6
2020-12-15 20:04:02 +10:00
cecini
d37ea0f5f7 Update rslib dep nom 2020-12-15 08:19:52 +00:00