Commit graph

1719 commits

Author SHA1 Message Date
Damien Elmes
be3258b0a8 fix field limiting 2011-11-28 20:51:47 +09:00
Damien Elmes
73b80211c2 add current deck limit 2011-11-28 20:48:14 +09:00
Damien Elmes
8c1266ab2a less terse card state searches 2011-11-28 20:18:16 +09:00
Damien Elmes
67e4f0d1cc tweak find code 2011-11-28 20:04:39 +09:00
Damien Elmes
d903b50d5f upgrade tweaks 2011-11-28 19:14:10 +09:00
Damien Elmes
bd29318168 catch incorrect ordinals on upgrade 2011-11-28 16:57:58 +09:00
Damien Elmes
cd76706a2f make sure to remove inactive templates properly 2011-11-28 16:10:41 +09:00
Damien Elmes
0032dd39c9 return 0 count when media not copied 2011-11-28 16:05:48 +09:00
Damien Elmes
c0e2a0ba50 identify whether it's a dupe or empty 2011-11-28 16:05:37 +09:00
Damien Elmes
1235f8362a type answer is now a template replacement 2011-11-28 15:15:38 +09:00
Damien Elmes
223cc48052 don't wrap template in div; reference #card instead
We want the background color to fill the card area rather than only the size
of the card content, so we need to set the CSS for the outer container
instead.
2011-11-28 14:45:43 +09:00
Damien Elmes
ddd890ee75 more fixes for schema being accidentally modified on model add 2011-11-27 13:50:49 +09:00
Damien Elmes
478e4c9212 use the original id if available when importing 2011-11-26 12:06:17 +09:00
Damien Elmes
20c1799be5 add back the ability to show the entire collection stats 2011-11-26 10:28:42 +09:00
Damien Elmes
592078545e don't fail when upgrading an empty deck 2011-11-25 14:20:18 +09:00
Damien Elmes
39f3c84661 point out that old files are invalid too 2011-11-25 14:19:41 +09:00
Damien Elmes
faf2f061a8 log imported card/media counts 2011-11-25 14:13:14 +09:00
Damien Elmes
b5c0b1f2c7 drop required/unique field properties
Instead of having required and unique flags for every field, enforce both
requirements on the first field, and neither on the rest. This mirrors the
subject/body format people are used to in note-taking apps. The subject
defines the object being learnt, and the remaining fields represent properties
of that object.

In the past, duplicate checking served two purposes: it quickly notified the
user that they're entering the same fact twice, and it notified the user if
they'd accidentally mistyped a secondary field. The former behaviour is
important for avoiding wasted effort, and so it should be done in real time.
The latter behaviour is not essential however - a typo is not wasted effort,
and it could be fixed in a periodic 'find duplicates' function. Given that
some users ended up with sluggish decks due to the overhead a large number of
facts * a large number of unique fields caused, this seems like a change for
the better.

This also means Anki will let you add notes as long as as the first field has
been filled out. Again, this is not a big deal: Anki is still checking to make
sure one or more cards will be generated, and the user can easily add any
missing fields later.

As a bonus, this change simplifies field configuration somewhat. As the card
layout and field dialogs are a popular point of confusion, the more they can
be simplified, the better.
2011-11-24 22:16:03 +09:00
Damien Elmes
daea038aa4 deckCounts -> deckDue 2011-11-24 17:04:26 +09:00
Damien Elmes
fae153c2af don't mod schema when adding new models 2011-11-24 16:33:40 +09:00
Damien Elmes
f7790275ce groups -> decks 2011-11-23 19:28:09 +09:00
Damien Elmes
279a942642 deck -> collection 2011-11-23 17:47:44 +09:00
Damien Elmes
6e4e8249fb facts -> notes 2011-11-23 12:37:21 +09:00
Damien Elmes
10e1c1b03e tweak tag handling 2011-11-23 11:39:33 +09:00
Damien Elmes
ffc096e308 the generated cards should note use msecs 2011-11-22 08:50:23 +09:00
Damien Elmes
4a601416bc keep typeAns as a field name
We have the fact loaded into memory anyway for the q/a display
2011-11-19 23:36:40 +09:00
Damien Elmes
7a5cee1d20 remove remaining CSS; more template properties into div 2011-11-18 08:25:56 +09:00
Damien Elmes
15e4b64162 new approach to hideQ
Instead of a separate option to hide question, embed the question into the
answer format by default. Users who don't want to see the question can remove
the question fields, and users who want a separator between the question and
answer (or not) can control it in HTML now.

Also, remove obsolete field CSS, and don't accidentally chomp a character on
upgrade.
2011-11-18 05:15:15 +09:00
Damien Elmes
c76c08069e change template replacement behaviour
Previously {{field}} wrapped the field in a span with the field's font
properties. This wasn't obvious, and caused frequent problems with people
trying to combine field and template text, or use field content in dictionary
links.

Now that AnkiWeb has a wizard for configuring the front & back layout, we can
just put the formatting in the template instead.
2011-11-18 02:50:47 +09:00
Damien Elmes
770f402905 don't allow template removal to orphan facts 2011-11-17 23:09:18 +09:00
Damien Elmes
a51307701d del -> rem for consistency 2011-11-17 22:55:03 +09:00
Damien Elmes
16ecfe4097 add forgetting index adj; thanks to adam mesha for the inspiration 2011-11-15 19:15:22 +09:00
Damien Elmes
58c56c433a apply review limit; fix finished msg 2011-11-15 04:05:44 +09:00
Damien Elmes
4a4f4797db update daily counts on reset instead of each review 2011-11-15 02:53:55 +09:00
Damien Elmes
0dfcfd9171 make sure conf name set on create 2011-11-14 23:33:05 +09:00
Damien Elmes
47f4b271dc mark recycled models for card generation; drop superfluous flagModels 2011-11-08 22:32:43 +09:00
Damien Elmes
357e5e7036 media.check() takes a list of files for ankiweb integration 2011-11-08 22:32:24 +09:00
Damien Elmes
01b297babc fix model gencards 2011-11-08 22:32:02 +09:00
Damien Elmes
37b3de23cf remove inactive templates that are unused on upgrade 2011-11-08 18:52:31 +09:00
Damien Elmes
795cdd7d3f remove the concept of non-active templates
The old template handling was too complicated, and generated frequent
questions on the forums. By dropping non-active templates we can do away with
the generate cards function, and advanced users can simulate the old behaviour
by using conditional field templates.
2011-11-08 18:06:19 +09:00
Damien Elmes
f8eefe5ee1 model deleting should use the string id 2011-11-07 18:38:48 +09:00
Damien Elmes
c6c6af4328 split remote sync tests into separate file 2011-11-07 16:21:29 +09:00
Damien Elmes
aef7626557 add fieldNames(); fix scmhash() 2011-11-07 14:27:15 +09:00
Damien Elmes
688a680b54 when importing, set the new group as current 2011-11-07 14:26:56 +09:00
Damien Elmes
cbdb283b20 refactor model copying 2011-10-31 11:34:03 +09:00
Damien Elmes
b1bf50c677 make sure to save after import 2011-10-30 19:04:52 +09:00
Damien Elmes
3bf0b253f2 handle bad field references and tags; don't create empty fields 2011-10-30 10:12:24 +09:00
Damien Elmes
e99e7baa3c need to keep latex in unicode until preamble concat 2011-10-29 21:36:29 +09:00
Damien Elmes
82f9d484da don't die on non-field references 2011-10-29 20:11:37 +09:00
Damien Elmes
0c03da52f5 fix latex rewriting 2011-10-29 17:15:13 +09:00
Damien Elmes
7a849fccc5 fix allMedia() and unit tests 2011-10-29 15:31:27 +09:00
Damien Elmes
ed7367d67f fix reporting of latex errors; catch some bad commands 2011-10-29 15:12:57 +09:00
Damien Elmes
6911ae839e on upgrade convert media references in template to separate field 2011-10-29 10:44:32 +09:00
Damien Elmes
ad81a564d1 don't leak fds in upgrade 2011-10-27 17:42:23 +09:00
Damien Elmes
caf46e948a speed up import when there are lots of duplicate ids 2011-10-26 15:37:18 +09:00
Damien Elmes
1edd724c3e raise an error on an invalid file import, so cmd line tools notice 2011-10-26 15:16:32 +09:00
Damien Elmes
37ea359931 add indices to upgrade check if missing 2011-10-26 12:19:12 +09:00
Damien Elmes
4668b1a210 on import make sure we update post; use static random range 2011-10-26 06:24:14 +09:00
Damien Elmes
c16cb6ee9b fix more bugs in group count tree 2011-10-24 01:28:43 +09:00
Damien Elmes
8be318d749 when removing a group should ensure there's an active one left 2011-10-23 06:08:57 +09:00
Damien Elmes
1ce5a7552e ensure top level properties updated on rename 2011-10-23 05:45:15 +09:00
Damien Elmes
f37f4aff96 need to sort tree based on split components, not string order 2011-10-22 21:14:46 +09:00
Damien Elmes
716684edae make sure to save on group delete 2011-10-22 21:04:57 +09:00
Damien Elmes
b9dc5764a3 add group renaming 2011-10-22 20:41:33 +09:00
Damien Elmes
3068e79b42 Merge branch 'new' 2011-10-22 18:39:08 +09:00
Damien Elmes
ae839dd3a3 group deletion should be recursive; fix css in import 2011-10-22 10:04:32 +09:00
Damien Elmes
b31bd5c091 vacuum after import; make sure models.current() always returns 2011-10-22 07:39:13 +09:00
Damien Elmes
1772474765 make sure we record the prefix before changing filename 2011-10-22 04:46:21 +09:00
Damien Elmes
5ac6cc7a36 don't die if deck has no media folder 2011-10-22 04:33:49 +09:00
Damien Elmes
bbe2973952 add newly created clozes too 2011-10-22 03:58:54 +09:00
Damien Elmes
46dd863f3c convert genCards() to bulk update; drop random 2011-10-22 03:39:34 +09:00
Damien Elmes
852189808f catch attempts to save a fact that deletes a cloze card 2011-10-22 03:10:34 +09:00
Damien Elmes
a4e8eb8b74 cache required fields, drop emptyAns
For importing and the deck creation wizard, we need to be able to generate
thousands of cards efficiently. So instead of requiring the creation of a fact
and rendering it, we cache the required fields and cloze references in the
model.

Also, emptyAns is dropped, as people can achieve the same behaviour by adding
the required answer fields as conditional to the question.

Todo: refactor genCards() to work in bulk, handle cloze edits intelligently
(prompt to delete invalid references, create new cards as necessary)
2011-10-22 02:28:57 +09:00
Damien Elmes
8bb26aaf74 add the ability to skip cards for shared decks 2011-10-22 00:05:09 +09:00
Damien Elmes
4539ca2b73 import each anki1 deck as its basename 2011-10-22 00:02:28 +09:00
Damien Elmes
119217290e implement anki1 importer 2011-10-21 23:45:42 +09:00
Damien Elmes
b242b06052 import media too 2011-10-21 07:53:22 +09:00
Damien Elmes
83f8ef45ff anki2 importing and reorganize import code 2011-10-21 07:36:44 +09:00
Damien Elmes
1ba75e8dc9 don't need a separate migration package; the rest is std import 2011-10-20 22:18:55 +09:00
Damien Elmes
76960abd75 fix upgrading; drop old mnemosyne 1 importer 2011-10-20 22:05:34 +09:00
Damien Elmes
cf4abcb403 split upgrade code into separate file; use .anki2 now 2011-10-20 05:26:50 +09:00
Damien Elmes
0c85acf3f7 refactor to support early exit when no media changes
- regular sync now receives a media USN as well
- server bumps media usn not only on sync but any other media change
- added local media.hasChanged()
2011-10-06 15:34:22 +09:00
Damien Elmes
afe1ad2b0b add resync test, fix zip meta 2011-10-06 14:37:07 +09:00
Damien Elmes
b4fdf1c690 send 'continue' for multiple zips; test splitting 2011-10-06 13:51:44 +09:00
Damien Elmes
8c1f397459 ensure successive calls work 2011-10-06 13:25:01 +09:00
Damien Elmes
0a52f55e50 test removing too 2011-10-06 13:06:32 +09:00
Damien Elmes
4b710b5a87 use sha1 everywhere; the speed differences are negligible 2011-10-03 14:58:01 +09:00
Damien Elmes
eca6ef204f check file is added on remote test 2011-10-03 13:42:53 +09:00
Damien Elmes
866fe8a283 don't sync mod time; media conflicts are very unlikely 2011-10-03 13:33:55 +09:00
Damien Elmes
49181ee738 fix media zipping and addFiles call 2011-10-03 12:59:35 +09:00
Damien Elmes
5da3bba1df initial work on media syncing 2011-10-03 12:45:08 +09:00
Damien Elmes
a8d2578be5 move common auth+upload code into base class 2011-10-01 22:16:56 +09:00
Damien Elmes
bf3bb9dd32 if sync server offline, abort sync tests 2011-10-01 20:44:35 +09:00
Damien Elmes
f131021c7e remote partial syncing working; fixed mod time on finish() 2011-10-01 14:24:39 +09:00
Damien Elmes
dd5b2056fb factor out file uploads; use for incremental sync too 2011-09-30 21:09:10 +09:00
Damien Elmes
20d753591d add timestamp & common error checks to meta(); kill old code 2011-09-29 22:18:36 +09:00
Damien Elmes
aabc884341 start work on remote syncing; full up/down implemented 2011-09-29 20:58:42 +09:00
Damien Elmes
9b8e949a72 add db timeout 2011-09-29 15:57:29 +09:00
Damien Elmes
40e9eea43f fix update cutoff call 2011-09-29 04:01:11 +09:00
Damien Elmes
2a73d58532 make close() idempotent; add isEmpty() 2011-09-26 08:06:13 +09:00