mirror of
https://github.com/ankitects/anki.git
synced 2025-09-20 23:12:21 -04:00
need to sort tree based on split components, not string order
This commit is contained in:
parent
716684edae
commit
f37f4aff96
2 changed files with 24 additions and 14 deletions
|
@ -131,29 +131,29 @@ order by due""" % self._groupLimit(),
|
||||||
hasDue = self._groupHasLrn(g['id']) or self._groupHasRev(g['id'])
|
hasDue = self._groupHasLrn(g['id']) or self._groupHasRev(g['id'])
|
||||||
hasNew = self._groupHasNew(g['id'])
|
hasNew = self._groupHasNew(g['id'])
|
||||||
gids[g['id']] = [hasDue or 0, hasNew or 0]
|
gids[g['id']] = [hasDue or 0, hasNew or 0]
|
||||||
return [[grp['name'], int(gid)]+gids.get(int(gid))
|
return [[grp['name'], int(gid)]+gids[int(gid)] #.get(int(gid))
|
||||||
for (gid, grp) in self._orderedGroups()]
|
for (gid, grp) in self.deck.groups.groups.items()]
|
||||||
|
|
||||||
def _orderedGroups(self):
|
|
||||||
grps = self.deck.groups.groups.items()
|
|
||||||
def key(grp):
|
|
||||||
return grp[1]['name']
|
|
||||||
grps.sort(key=key)
|
|
||||||
return grps
|
|
||||||
|
|
||||||
def groupCountTree(self):
|
def groupCountTree(self):
|
||||||
return self._groupChildren(self.groupCounts())
|
return self._groupChildren(self.groupCounts())
|
||||||
|
|
||||||
def groupTree(self):
|
def groupTree(self):
|
||||||
"Like the count tree without the counts. Faster."
|
"Like the count tree without the counts. Faster."
|
||||||
return self._groupChildren([[grp['name'], int(gid), 0, 0, 0]
|
return self._groupChildren(
|
||||||
for (gid, grp) in self._orderedGroups()])
|
[[grp['name'], int(gid), 0, 0, 0]
|
||||||
|
for (gid, grp) in self.deck.groups.groups.items()])
|
||||||
|
|
||||||
def _groupChildren(self, grps):
|
def _groupChildren(self, grps):
|
||||||
tree = []
|
# first, split the group names into components
|
||||||
# split strings
|
|
||||||
for g in grps:
|
for g in grps:
|
||||||
g[0] = g[0].split("::", 1)
|
g[0] = g[0].split("::")
|
||||||
|
# and sort based on those components
|
||||||
|
grps.sort(key=itemgetter(0))
|
||||||
|
# then run main function
|
||||||
|
return self._groupChildrenMain(grps)
|
||||||
|
|
||||||
|
def _groupChildrenMain(self, grps):
|
||||||
|
tree = []
|
||||||
# group and recurse
|
# group and recurse
|
||||||
def key(grp):
|
def key(grp):
|
||||||
return grp[0][0]
|
return grp[0][0]
|
||||||
|
|
|
@ -771,6 +771,7 @@ def test_groupCounts():
|
||||||
d.reset()
|
d.reset()
|
||||||
assert len(d.groups.groups) == 5
|
assert len(d.groups.groups) == 5
|
||||||
cnts = d.sched.groupCounts()
|
cnts = d.sched.groupCounts()
|
||||||
|
cnts.sort()
|
||||||
assert cnts[0] == ["Default", 1, 0, 1]
|
assert cnts[0] == ["Default", 1, 0, 1]
|
||||||
assert cnts[1] == ["Default::1", default1, 1, 0]
|
assert cnts[1] == ["Default::1", default1, 1, 0]
|
||||||
assert cnts[2] == ["foo", d.groups.id("foo"), 0, 0]
|
assert cnts[2] == ["foo", d.groups.id("foo"), 0, 0]
|
||||||
|
@ -792,6 +793,15 @@ def test_groupCounts():
|
||||||
d.sched.groupCounts()
|
d.sched.groupCounts()
|
||||||
d.sched.groupCountTree()
|
d.sched.groupCountTree()
|
||||||
|
|
||||||
|
def test_groupTree():
|
||||||
|
d = getEmptyDeck()
|
||||||
|
d.groups.id("new::b::c")
|
||||||
|
d.groups.id("new2")
|
||||||
|
# new should not appear twice in tree
|
||||||
|
names = [x[0] for x in d.sched.groupCountTree()]
|
||||||
|
names.remove("new")
|
||||||
|
assert "new" not in names
|
||||||
|
|
||||||
def test_groupFlow():
|
def test_groupFlow():
|
||||||
d = getEmptyDeck()
|
d = getEmptyDeck()
|
||||||
# add a fact with default group
|
# add a fact with default group
|
||||||
|
|
Loading…
Reference in a new issue