mirror of
https://github.com/ankitects/anki.git
synced 2025-09-20 15:02: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'])
|
||||
hasNew = self._groupHasNew(g['id'])
|
||||
gids[g['id']] = [hasDue or 0, hasNew or 0]
|
||||
return [[grp['name'], int(gid)]+gids.get(int(gid))
|
||||
for (gid, grp) in self._orderedGroups()]
|
||||
|
||||
def _orderedGroups(self):
|
||||
grps = self.deck.groups.groups.items()
|
||||
def key(grp):
|
||||
return grp[1]['name']
|
||||
grps.sort(key=key)
|
||||
return grps
|
||||
return [[grp['name'], int(gid)]+gids[int(gid)] #.get(int(gid))
|
||||
for (gid, grp) in self.deck.groups.groups.items()]
|
||||
|
||||
def groupCountTree(self):
|
||||
return self._groupChildren(self.groupCounts())
|
||||
|
||||
def groupTree(self):
|
||||
"Like the count tree without the counts. Faster."
|
||||
return self._groupChildren([[grp['name'], int(gid), 0, 0, 0]
|
||||
for (gid, grp) in self._orderedGroups()])
|
||||
return self._groupChildren(
|
||||
[[grp['name'], int(gid), 0, 0, 0]
|
||||
for (gid, grp) in self.deck.groups.groups.items()])
|
||||
|
||||
def _groupChildren(self, grps):
|
||||
tree = []
|
||||
# split strings
|
||||
# first, split the group names into components
|
||||
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
|
||||
def key(grp):
|
||||
return grp[0][0]
|
||||
|
|
|
@ -771,6 +771,7 @@ def test_groupCounts():
|
|||
d.reset()
|
||||
assert len(d.groups.groups) == 5
|
||||
cnts = d.sched.groupCounts()
|
||||
cnts.sort()
|
||||
assert cnts[0] == ["Default", 1, 0, 1]
|
||||
assert cnts[1] == ["Default::1", default1, 1, 0]
|
||||
assert cnts[2] == ["foo", d.groups.id("foo"), 0, 0]
|
||||
|
@ -792,6 +793,15 @@ def test_groupCounts():
|
|||
d.sched.groupCounts()
|
||||
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():
|
||||
d = getEmptyDeck()
|
||||
# add a fact with default group
|
||||
|
|
Loading…
Reference in a new issue