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)