mirror of
https://github.com/ankitects/anki.git
synced 2025-09-20 15:02:21 -04:00
reps & time graphs
This commit is contained in:
parent
60ef1ec49f
commit
6ec2500eb8
2 changed files with 47 additions and 28 deletions
|
@ -12,7 +12,8 @@ dueCumulC = "#ff8080"
|
||||||
reviewNewC = "#80ccff"
|
reviewNewC = "#80ccff"
|
||||||
reviewYoungC = "#3377ff"
|
reviewYoungC = "#3377ff"
|
||||||
reviewMatureC = "#0000ff"
|
reviewMatureC = "#0000ff"
|
||||||
reviewTimeC = "#0fcaff"
|
lrnTimeC = "#0fcaff"
|
||||||
|
revTimeC = "#ffcaff"
|
||||||
easesNewC = "#80b3ff"
|
easesNewC = "#80b3ff"
|
||||||
easesYoungC = "#5555ff"
|
easesYoungC = "#5555ff"
|
||||||
easesMatureC = "#0f5aff"
|
easesMatureC = "#0f5aff"
|
||||||
|
@ -73,32 +74,52 @@ group by due order by due""" % self._limit(),
|
||||||
# Reps and time spent
|
# Reps and time spent
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
def _done(self):
|
def repsGraph(self):
|
||||||
return
|
self._calcStats()
|
||||||
dayReps = self._getDayReps()
|
lrn = []
|
||||||
# fixme: change 0 to correct offset
|
yng = []
|
||||||
todaydt = datetime.datetime.utcfromtimestamp(
|
mtr = []
|
||||||
time.time() - 0).date()
|
for row in self._stats['done']:
|
||||||
for dest, source in [("dayRepsNew", 0),
|
lrn.append((row[0], row[1]))
|
||||||
("dayRepsYoung", 3),
|
yng.append((row[0], row[2]))
|
||||||
("dayRepsMature", 2)]:
|
mtr.append((row[0], row[3]))
|
||||||
self.stats[dest] = dict(
|
txt = self._graph(id="due", data=[
|
||||||
map(lambda dr: (-(todaydt - datetime.date(
|
dict(data=lrn, bars=dict(show=True, barWidth=0.8, align="center"),
|
||||||
*(int(x)for x in dr[1].split("-")))).days, dr[source]), dayReps))
|
color=reviewNewC, label=_("Learning")),
|
||||||
self.stats['dayTimes'] = dict(
|
dict(data=yng, bars=dict(show=True, barWidth=0.8, align="center"),
|
||||||
map(lambda dr: (-(todaydt - datetime.date(
|
color=reviewYoungC, label=_("Young")),
|
||||||
*(int(x)for x in dr[1].split("-")))).days, dr[4]/60.0), dayReps))
|
dict(data=mtr, bars=dict(show=True, barWidth=0.8, align="center"),
|
||||||
|
color=reviewMatureC, label=_("Mature")),
|
||||||
|
])
|
||||||
|
return txt
|
||||||
|
|
||||||
def _getDayReps(self):
|
def timeGraph(self):
|
||||||
|
self._calcStats()
|
||||||
|
lrn = []
|
||||||
|
rev = []
|
||||||
|
for row in self._stats['done']:
|
||||||
|
lrn.append((row[0], row[4]))
|
||||||
|
rev.append((row[0], row[5]))
|
||||||
|
txt = self._graph(id="due", data=[
|
||||||
|
dict(data=lrn, bars=dict(show=True, barWidth=0.8, align="center"),
|
||||||
|
color=lrnTimeC, label=_("Learning")),
|
||||||
|
dict(data=rev, bars=dict(show=True, barWidth=0.8, align="center"),
|
||||||
|
color=revTimeC, label=_("Reviews")),
|
||||||
|
])
|
||||||
|
self.save(txt)
|
||||||
|
return txt
|
||||||
|
|
||||||
|
def _done(self):
|
||||||
|
# without selective for now
|
||||||
return self.deck.db.all("""
|
return self.deck.db.all("""
|
||||||
select
|
select
|
||||||
count() as combinedNewReps,
|
cast((time/1000 - :cut) / 86400.0 as int)+1 as day,
|
||||||
date(time/1000-:off, "unixepoch") as day,
|
sum(case when type = 0 then 1 else 0 end), -- lrn count
|
||||||
sum(case when lastIvl > 21 then 1 else 0 end) as matureReps,
|
sum(case when type = 1 and lastIvl < 21 then 1 else 0 end), -- yng count
|
||||||
count() - sum(case when rep = 1 then 1 else 0 end) as combinedYoungReps,
|
sum(case when type = 1 and lastIvl >= 21 then 1 else 0 end), -- mtr count
|
||||||
sum(taken/1000) as reviewTime from revlog
|
sum(case when type = 0 then taken/1000 else 0 end)/3600.0, -- lrn time
|
||||||
group by day order by day
|
sum(case when type = 1 then taken/1000 else 0 end)/3600.0 -- rev time
|
||||||
""", off=0)
|
from revlog group by day order by day""", cut=self.deck.sched.dayCutoff)
|
||||||
|
|
||||||
# Intervals
|
# Intervals
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
|
@ -30,11 +30,9 @@ def test_graphs():
|
||||||
assert g.cumDueGraph()
|
assert g.cumDueGraph()
|
||||||
assert g.ivlGraph()
|
assert g.ivlGraph()
|
||||||
assert g.easeGraph()
|
assert g.easeGraph()
|
||||||
|
assert g.repsGraph()
|
||||||
|
assert g.timeGraph()
|
||||||
return
|
return
|
||||||
g.nextDue()
|
|
||||||
g.workDone()
|
g.workDone()
|
||||||
g.timeSpent()
|
g.timeSpent()
|
||||||
g.cumulativeDue()
|
|
||||||
g.ivlPeriod()
|
|
||||||
g.addedRecently()
|
g.addedRecently()
|
||||||
g.easeBars()
|
|
||||||
|
|
Loading…
Reference in a new issue