diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 2ea3a09c2..491f59f61 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -1511,6 +1511,16 @@ FW_roomOverview($) } +sub +FW_alias($) +{ + my ($d) = @_; + if($FW_room) { + return AttrVal($d, "alias_$FW_room", AttrVal($d, "alias", $d)); + } else { + return AttrVal($d, "alias", $d); + } +} sub FW_makeDeviceLine($$$$$) @@ -1519,7 +1529,7 @@ FW_makeDeviceLine($$$$$) my $rf = ($FW_room ? "&room=$FW_room" : ""); # stay in the room FW_pF "\n", ($row&1)?"odd":"even"; - my $devName = AttrVal($d, "alias", $d); + my $devName = FW_alias($d); if(defined($nameDisplay)) { my ($DEVICE, $ALIAS) = ($d, $devName); $devName = eval $nameDisplay; @@ -1596,18 +1606,20 @@ FW_showRoom() # attribute) my @devs= grep { ($FW_rooms{$FW_room}{$_}||$FW_room eq "all") && !IsIgnored($_) } keys %defs; - my (%group, @atEnds, %usuallyAtEnd); + my (%group, @atEnds, %usuallyAtEnd, %sortIndex); foreach my $dev (@devs) { if($modules{$defs{$dev}{TYPE}}{FW_atPageEnd}) { $usuallyAtEnd{$dev} = 1; if(!AttrVal($dev, "group", undef)) { - push @atEnds, $dev; + $sortIndex{$dev} = lc(AttrVal($dev,"sortby",FW_alias($dev))); + push @atEnds, AttrVal($a,"alias",$a); next; } } next if(!$FW_types{$dev}); # FHEMWEB connection, missed due to caching foreach my $grp (split(",", AttrVal($dev, "group", $FW_types{$dev}))) { next if($FW_hiddengroup{$grp}); + $sortIndex{$dev} = lc(AttrVal($dev,"sortby",FW_alias($dev))); $group{$grp}{$dev} = 1; } } @@ -1636,9 +1648,7 @@ FW_showRoom() FW_pO ""; FW_pO ""; - foreach my $d (sort { lc(AttrVal($a,"sortby",AttrVal($a,"alias",$a))) cmp - lc(AttrVal($b,"sortby",AttrVal($b,"alias",$b))) } - keys %{$group{$g}}) { + foreach my $d (sort { $sortIndex{$a} cmp $sortIndex{$b} } keys %{$group{$g}}) { my $type = $defs{$d}{TYPE}; $extPage{group} = $g; @@ -1655,9 +1665,7 @@ FW_showRoom() FW_pO "

"; # Now the "atEnds" - foreach my $d (sort { lc(AttrVal($a, "sortby", AttrVal($a,"alias",$a))) cmp - lc(AttrVal($b, "sortby", AttrVal($b,"alias",$b))) } - @atEnds) { + foreach my $d (sort { $sortIndex{$a} cmp $sortIndex{$b} } @atEnds) { no strict "refs"; $extPage{group} = "atEnd"; FW_pO &{$modules{$defs{$d}{TYPE}}{FW_summaryFn}}($FW_wname, $d, @@ -3064,7 +3072,16 @@ FW_widgetOverride($$) Attributes