mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
generate the counts separately, so they're not limited by queueLimit
this has a negative performance impact on decks with many new cards or reviews due, but we can't limit the counts to 200 without annoying people
This commit is contained in:
parent
14c49a50cd
commit
4a6b5c9105
2 changed files with 28 additions and 12 deletions
|
@ -27,11 +27,11 @@ defaultQconf = {
|
||||||
'newCardOrder': 1,
|
'newCardOrder': 1,
|
||||||
'newCardSpacing': NEW_CARDS_DISTRIBUTE,
|
'newCardSpacing': NEW_CARDS_DISTRIBUTE,
|
||||||
'revCardOrder': REV_CARDS_RANDOM,
|
'revCardOrder': REV_CARDS_RANDOM,
|
||||||
|
'collapseTime': 600,
|
||||||
}
|
}
|
||||||
|
|
||||||
# scheduling and other options
|
# scheduling and other options
|
||||||
defaultConf = {
|
defaultConf = {
|
||||||
'collapseTime': 600,
|
|
||||||
'sessionRepLimit': 0,
|
'sessionRepLimit': 0,
|
||||||
'sessionTimeLimit': 600,
|
'sessionTimeLimit': 600,
|
||||||
'currentModelId': None,
|
'currentModelId': None,
|
||||||
|
|
|
@ -6,7 +6,7 @@ import time, datetime, simplejson, random
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
from heapq import *
|
from heapq import *
|
||||||
#from anki.cards import Card
|
#from anki.cards import Card
|
||||||
from anki.utils import parseTags, ids2str
|
from anki.utils import parseTags, ids2str, intTime
|
||||||
from anki.lang import _
|
from anki.lang import _
|
||||||
from anki.consts import *
|
from anki.consts import *
|
||||||
|
|
||||||
|
@ -100,22 +100,27 @@ class Scheduler(object):
|
||||||
|
|
||||||
# need to keep track of reps for timebox and new card introduction
|
# need to keep track of reps for timebox and new card introduction
|
||||||
|
|
||||||
def resetNew(self):
|
def resetNewCount(self):
|
||||||
l = self.deck.qconf
|
l = self.deck.qconf
|
||||||
if l['newToday'][0] != self.today:
|
if l['newToday'][0] != self.today:
|
||||||
# it's a new day; reset counts
|
# it's a new day; reset counts
|
||||||
l['newToday'] = [self.today, 0]
|
l['newToday'] = [self.today, 0]
|
||||||
lim = min(self.queueLimit, l['newPerDay'] - l['newToday'][1])
|
lim = l['newPerDay'] - l['newToday'][1]
|
||||||
if lim <= 0:
|
if lim <= 0:
|
||||||
self.newQueue = []
|
|
||||||
self.newCount = 0
|
self.newCount = 0
|
||||||
else:
|
else:
|
||||||
|
self.newCount = self.db.scalar("""
|
||||||
|
select count() from cards where
|
||||||
|
queue = 2 %s""" % self.groupLimit('new'))
|
||||||
|
|
||||||
|
def resetNew(self):
|
||||||
|
self.resetNewCount()
|
||||||
|
lim = min(self.queueLimit, self.newCount)
|
||||||
self.newQueue = self.db.all("""
|
self.newQueue = self.db.all("""
|
||||||
select id, due from cards where
|
select id, due from cards where
|
||||||
queue = 2 %s order by due limit %d""" % (self.groupLimit('new'),
|
queue = 2 %s order by due limit %d""" % (self.groupLimit('new'),
|
||||||
lim))
|
lim))
|
||||||
self.newQueue.reverse()
|
self.newQueue.reverse()
|
||||||
self.newCount = len(self.newQueue)
|
|
||||||
self.updateNewCardRatio()
|
self.updateNewCardRatio()
|
||||||
|
|
||||||
def getNewCard(self):
|
def getNewCard(self):
|
||||||
|
@ -152,12 +157,17 @@ queue = 2 %s order by due limit %d""" % (self.groupLimit('new'),
|
||||||
# Learning queue
|
# Learning queue
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
def resetLearnCount(self):
|
||||||
|
self.learnCount = self.db.scalar(
|
||||||
|
"select count() from cards where queue = 0 and due < ?",
|
||||||
|
intTime() + self.deck.qconf['collapseTime'])
|
||||||
|
|
||||||
def resetLearn(self):
|
def resetLearn(self):
|
||||||
|
self.resetLearnCount()
|
||||||
self.learnQueue = self.db.all("""
|
self.learnQueue = self.db.all("""
|
||||||
select due, id from cards where
|
select due, id from cards where
|
||||||
queue = 0 and due < :lim order by due
|
queue = 0 and due < :lim order by due
|
||||||
limit %d""" % self.learnLimit, lim=self.dayCutoff)
|
limit %d""" % self.learnLimit, lim=self.dayCutoff)
|
||||||
self.learnCount = len(self.learnQueue)
|
|
||||||
|
|
||||||
def getLearnCard(self, collapse=False):
|
def getLearnCard(self, collapse=False):
|
||||||
if self.learnQueue:
|
if self.learnQueue:
|
||||||
|
@ -242,17 +252,23 @@ where queue = 0 and type = 1
|
||||||
# Reviews
|
# Reviews
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
def resetReviewCount(self):
|
||||||
|
self.revCount = self.db.scalar("""
|
||||||
|
select count() from cards where
|
||||||
|
queue = 1 %s and due <= :lim""" % self.groupLimit("rev"),
|
||||||
|
lim=self.today)
|
||||||
|
|
||||||
def resetReview(self):
|
def resetReview(self):
|
||||||
|
self.resetReviewCount()
|
||||||
self.revQueue = self.db.all("""
|
self.revQueue = self.db.all("""
|
||||||
select id from cards where
|
select id from cards where
|
||||||
queue = 1 %s and due < :lim order by %s limit %d""" % (
|
queue = 1 %s and due <= :lim order by %s limit %d""" % (
|
||||||
self.groupLimit("rev"), self.revOrder(), self.queueLimit),
|
self.groupLimit("rev"), self.revOrder(), self.queueLimit),
|
||||||
lim=self.dayCutoff)
|
lim=self.today)
|
||||||
if self.deck.qconf['revCardOrder'] == REV_CARDS_RANDOM:
|
if self.deck.qconf['revCardOrder'] == REV_CARDS_RANDOM:
|
||||||
random.shuffle(self.revQueue)
|
random.shuffle(self.revQueue)
|
||||||
else:
|
else:
|
||||||
self.revQueue.reverse()
|
self.revQueue.reverse()
|
||||||
self.revCount = len(self.revQueue)
|
|
||||||
|
|
||||||
def getReviewCard(self):
|
def getReviewCard(self):
|
||||||
if self.haveRevCards():
|
if self.haveRevCards():
|
||||||
|
|
Loading…
Reference in a new issue