From 997ea786ba6943580d4794e8b9587344b189c807 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 3 Mar 2026 15:29:02 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20sort=20focus=20projects=20=E2=80=94=20Ge?= =?UTF-8?q?neral=20first,=20then=20alphabetical?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- routers/focus.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/routers/focus.py b/routers/focus.py index 5299039..d731ce7 100644 --- a/routers/focus.py +++ b/routers/focus.py @@ -85,14 +85,24 @@ async def focus_view( proj_map[pk] = {"label": pl, "rows": []} proj_map[pk]["rows"].append(item) - # Convert to nested lists for Jinja + # Convert to nested lists for Jinja — "General" first, then alpha + def _sorted_projects(proj_dict): + general = [] + named = [] + for pk, pv in proj_dict.items(): + entry = {"label": pv["label"], "rows": pv["rows"]} + if pk == "__none__": + general.append(entry) + else: + named.append(entry) + named.sort(key=lambda p: p["label"].lower()) + return general + named + hierarchy = [] for dk, dv in domain_map.items(): domain_group = {"label": dv["label"], "color": dv["color"], "areas": []} for ak, av in dv["areas"].items(): - area_group = {"label": av["label"], "projects": []} - for pk, pv in av["projects"].items(): - area_group["projects"].append({"label": pv["label"], "rows": pv["rows"]}) + area_group = {"label": av["label"], "projects": _sorted_projects(av["projects"])} domain_group["areas"].append(area_group) hierarchy.append(domain_group)