log lapse time as relearn delay if available

This commit is contained in:
Damien Elmes 2012-05-22 11:17:10 +09:00
parent 31cabb6d3f
commit ab5af8c7aa

View file

@ -724,11 +724,12 @@ did = ? and queue = 2 and due <= ? limit ?""",
########################################################################## ##########################################################################
def _answerRevCard(self, card, ease): def _answerRevCard(self, card, ease):
delay = 0
if ease == 1: if ease == 1:
self._rescheduleLapse(card) delay = self._rescheduleLapse(card)
else: else:
self._rescheduleRev(card, ease) self._rescheduleRev(card, ease)
self._logRev(card, ease) self._logRev(card, ease, delay)
def _rescheduleLapse(self, card): def _rescheduleLapse(self, card):
conf = self._lapseConf(card) conf = self._lapseConf(card)
@ -738,9 +739,11 @@ did = ? and queue = 2 and due <= ? limit ?""",
card.factor = max(1300, card.factor-200) card.factor = max(1300, card.factor-200)
card.due = self.today + card.ivl card.due = self.today + card.ivl
# put back in the learn queue? # put back in the learn queue?
delay = 0
if conf['delays']: if conf['delays']:
card.odue = card.due card.odue = card.due
card.due = int(self._delayForGrade(conf, 0) + time.time()) delay = self._delayForGrade(conf, 0)
card.due = int(delay + time.time())
card.left = len(conf['delays']) card.left = len(conf['delays'])
card.left += self._leftToday(conf['delays'], card.left)*1000 card.left += self._leftToday(conf['delays'], card.left)*1000
card.queue = 1 card.queue = 1
@ -748,6 +751,7 @@ did = ? and queue = 2 and due <= ? limit ?""",
# leech? # leech?
if not self._checkLeech(card, conf) and conf['delays']: if not self._checkLeech(card, conf) and conf['delays']:
heappush(self._lrnQueue, (card.due, card.id)) heappush(self._lrnQueue, (card.due, card.id))
return delay
def _nextLapseIvl(self, card, conf): def _nextLapseIvl(self, card, conf):
return int(card.ivl*conf['mult']) + 1 return int(card.ivl*conf['mult']) + 1
@ -764,12 +768,12 @@ did = ? and queue = 2 and due <= ? limit ?""",
card.odid = 0 card.odid = 0
card.odue = 0 card.odue = 0
def _logRev(self, card, ease): def _logRev(self, card, ease, delay):
def log(): def log():
self.col.db.execute( self.col.db.execute(
"insert into revlog values (?,?,?,?,?,?,?,?,?)", "insert into revlog values (?,?,?,?,?,?,?,?,?)",
int(time.time()*1000), card.id, self.col.usn(), ease, int(time.time()*1000), card.id, self.col.usn(), ease,
card.ivl, card.lastIvl, card.factor, card.timeTaken(), -delay or card.ivl, card.lastIvl, card.factor, card.timeTaken(),
1) 1)
try: try:
log() log()