@@ -43,6 +43,26 @@ def check_register_bit_conflicts(all_defs: dict[str, SensorDefinitions]) -> None
4343TAB_ATTR = {"style" : "overflow-x: unset;" , "class" : "bigt" }
4444
4545
46+ def getname (row : list [Sensor | str | None ]) -> str :
47+ """Row name for all.html: primary name, then unique aliases from all profiles."""
48+ sensors = [item for item in row if item and not isinstance (item , str )]
49+ if not sensors :
50+ return "?"
51+ first = sensors [0 ]
52+ base = f"{ first .name } (R/W)" if isinstance (first , RWSensor ) else first .name
53+ seen = {base .casefold ()}
54+ extra : list [str ] = []
55+ for sen in sensors :
56+ for alias in ensure_tuple (sen .alias ):
57+ key = alias .casefold ()
58+ if key not in seen :
59+ seen .add (key )
60+ extra .append (alias )
61+ if extra :
62+ return "<br>" .join ((base , * extra ))
63+ return base
64+
65+
4666def generate_all_sensors (
4767 all_defs : dict [str , SensorDefinitions ], sen_groups : dict [str , set [str ]]
4868) -> None :
@@ -56,18 +76,6 @@ def generate_all_sensors(
5676 sensors [key ][name ] = sen
5777 sensors [key ]["Group" ] = "<br>" .join (sorted (sen_groups .get (sen .id , [])))
5878
59- def getname (row : list [Sensor | str | None ]) -> str :
60- """Get the name of the row (HTML: name, then aliases on separate lines)."""
61- for sen in row :
62- if not sen or isinstance (sen , str ):
63- continue
64- base = f"{ sen .name } (R/W)" if isinstance (sen , RWSensor ) else sen .name
65- aliases = ensure_tuple (sen .alias )
66- if aliases :
67- return "<br>" .join ((base , * aliases ))
68- return base
69- return "?"
70-
7179 def get_sensor_info (sensor : Sensor | str | None ) -> str :
7280 """Sensor info."""
7381 if not sensor :
0 commit comments