remove review order options

As cram decks provide a more efficient way of ordering reviews, we can limit
normal reviews to just due order.
This commit is contained in:
Damien Elmes 2012-03-13 19:25:28 +09:00
parent 81c07158e9
commit dc85212bfe
4 changed files with 9 additions and 26 deletions

View file

@ -13,11 +13,6 @@ NEW_CARDS_FIRST = 2
NEW_CARDS_RANDOM = 0 NEW_CARDS_RANDOM = 0
NEW_CARDS_DUE = 1 NEW_CARDS_DUE = 1
# review card sort order
REV_CARDS_RANDOM = 0
REV_CARDS_OLD_FIRST = 1
REV_CARDS_NEW_FIRST = 2
# removal types # removal types
REM_CARD = 0 REM_CARD = 0
REM_NOTE = 1 REM_NOTE = 1

View file

@ -66,7 +66,6 @@ defaultConf = {
'fuzz': 0.05, 'fuzz': 0.05,
'minSpace': 1, 'minSpace': 1,
'fi': [10, 10], 'fi': [10, 10],
'order': REV_CARDS_RANDOM,
}, },
'maxTaken': 60, 'maxTaken': 60,
'timer': 0, 'timer': 0,

View file

@ -581,20 +581,21 @@ did = ? and queue = 2 and due <= ? limit %d)""" % lim,
while self._revDids: while self._revDids:
did = self._newDids[0] did = self._newDids[0]
lim = min(self.queueLimit, self._deckRevLimit(did)) lim = min(self.queueLimit, self._deckRevLimit(did))
order = self._revOrder(did)
if lim: if lim:
# fill the queue with the current did # fill the queue with the current did
self._revQueue = self.col.db.list(""" self._revQueue = self.col.db.list("""
select id from cards where select id from cards where
did = ? and queue = 2 and due <= ? %s limit ?""" % order, did = ? and queue = 2 and due <= ? limit ?""",
did, self.today, lim) did, self.today, lim)
if self._revQueue: if self._revQueue:
if not order: if self.col.decks.get(did)['dyn']:
# dynamic decks need due order preserved
self._revQueue.reverse()
else:
# random order for regular reviews
r = random.Random() r = random.Random()
r.seed(self.today) r.seed(self.today)
r.shuffle(self._revQueue) r.shuffle(self._revQueue)
else:
self._revQueue.reverse()
return True return True
# nothing left in the deck; move to next # nothing left in the deck; move to next
self._newDids.pop(0) self._newDids.pop(0)
@ -604,15 +605,6 @@ did = ? and queue = 2 and due <= ? %s limit ?""" % order,
self.revCount -= 1 self.revCount -= 1
return self.col.getCard(self._revQueue.pop()) return self.col.getCard(self._revQueue.pop())
def _revOrder(self, did):
d = self.col.decks.confForDid(did)
if d['dyn']:
return ""
o = d['rev']['order']
if o:
return "order by %s" % ("ivl desc", "ivl")[o-1]
return ""
# Answering a review card # Answering a review card
########################################################################## ##########################################################################

View file

@ -511,13 +511,10 @@ def test_cram():
c.flush() c.flush()
d.reset() d.reset()
assert d.sched.counts() == (0,0,1) assert d.sched.counts() == (0,0,1)
# cram again, with the review treated as a cram # cram again
did = d.decks.newDyn("Cram") did = d.decks.newDyn("Cram")
d.decks.get(did)['cramRev'] = True # if cramRev is false, it's placed in the review queue instead
d.sched.rebuildDyn(did) # fixme: cards pulled from a deck with cramRev=True remain in that state
d.reset()
assert d.sched.counts() == (1,0,0)
# but if cramRev is false, it's placed in the review queue instead
d.decks.get(did)['cramRev'] = False d.decks.get(did)['cramRev'] = False
d.sched.rebuildDyn(did) d.sched.rebuildDyn(did)
d.reset() d.reset()