mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-23 20:52:13 +00:00
01_FHEMWEB.pm: deviceOverview by justme1968 (Forum #53012)
git-svn-id: https://svn.fhem.de/fhem/trunk@11492 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
31c270ad7e
commit
e41e451b96
@ -146,6 +146,7 @@ FHEMWEB_Initialize($)
|
|||||||
closeConn:1,0
|
closeConn:1,0
|
||||||
column
|
column
|
||||||
defaultRoom
|
defaultRoom
|
||||||
|
deviceOverview:always,iconOnly,onClick,never
|
||||||
editConfig:1,0
|
editConfig:1,0
|
||||||
editFileList:textField-long
|
editFileList:textField-long
|
||||||
endPlotNow:1,0
|
endPlotNow:1,0
|
||||||
@ -1183,9 +1184,39 @@ FW_doDetail($)
|
|||||||
FW_pO "$txt<br>" if(defined($txt));
|
FW_pO "$txt<br>" if(defined($txt));
|
||||||
use strict "refs";
|
use strict "refs";
|
||||||
} else {
|
} else {
|
||||||
|
my $show = AttrVal($FW_wname, "deviceOverview", "always");
|
||||||
|
|
||||||
|
if( $show ne 'never' ) {
|
||||||
my %extPage = ();
|
my %extPage = ();
|
||||||
|
|
||||||
|
if( $show eq 'iconOnly' ) {
|
||||||
my ($allSets, $cmdlist, $txt) = FW_devState($d, $FW_room, \%extPage);
|
my ($allSets, $cmdlist, $txt) = FW_devState($d, $FW_room, \%extPage);
|
||||||
FW_pO "<div informId='$d'".($FW_tp?"":" style='float:right'").">$txt</div>";
|
FW_pO "<div informId='$d'".
|
||||||
|
($FW_tp?"":" style='float:right'").">$txt</div>";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
my $nameDisplay = AttrVal($FW_wname,"nameDisplay",undef);
|
||||||
|
my %usuallyAtEnd = ();
|
||||||
|
|
||||||
|
my $style = "";
|
||||||
|
if( $show eq 'onClick' ) {
|
||||||
|
my $pgm = "Javascript:" .
|
||||||
|
"s=document.getElementById('ddtable').style;".
|
||||||
|
"s.display = s.display=='none' ? 'block' : 'none';".
|
||||||
|
"s=document.getElementById('ddisp').style;".
|
||||||
|
"s.display = s.display=='none' ? 'block' : 'none';";
|
||||||
|
FW_pO "<div id=\"ddisp\"><br><a style=\"cursor:pointer\" ".
|
||||||
|
"onClick=\"$pgm\">Show DeviceOverview</a><br><br></div>";
|
||||||
|
$style = 'style="display:none"';
|
||||||
|
}
|
||||||
|
|
||||||
|
FW_pO "<div $style id=\"ddtable\" class='makeTable wide'>";
|
||||||
|
FW_pO "DeviceOverview";
|
||||||
|
FW_pO "<table class=\"block wide\">";
|
||||||
|
FW_makeDeviceLine($d,1,\%extPage,$nameDisplay,\%usuallyAtEnd);
|
||||||
|
FW_pO "</table></div>";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FW_pO FW_detailSelect($d, "set", FW_widgetOverride($d, getAllSets($d)));
|
FW_pO FW_detailSelect($d, "set", FW_widgetOverride($d, getAllSets($d)));
|
||||||
@ -1449,6 +1480,69 @@ FW_roomOverview($)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub
|
||||||
|
FW_makeDeviceLine($$$$$)
|
||||||
|
{
|
||||||
|
my( $d,$row,$extPage,$nameDisplay,$usuallyAtEnd) = @_;;
|
||||||
|
my $rf = ($FW_room ? "&room=$FW_room" : ""); # stay in the room
|
||||||
|
|
||||||
|
FW_pF "\n<tr class=\"%s\">", ($row&1)?"odd":"even";
|
||||||
|
my $devName = AttrVal($d, "alias", $d);
|
||||||
|
if(defined($nameDisplay)) {
|
||||||
|
my ($DEVICE, $ALIAS) = ($d, $devName);
|
||||||
|
$devName = eval $nameDisplay;
|
||||||
|
}
|
||||||
|
my $icon = AttrVal($d, "icon", "");
|
||||||
|
$icon = FW_makeImage($icon,$icon,"icon") . " " if($icon);
|
||||||
|
|
||||||
|
if($FW_hiddenroom{detail}) {
|
||||||
|
FW_pO "<td><div class=\"col1\">$icon$devName</div></td>"
|
||||||
|
if(!$usuallyAtEnd->{$d});
|
||||||
|
} else {
|
||||||
|
FW_pH "detail=$d", "$icon$devName", 1, "col1" if(!$usuallyAtEnd->{$d});
|
||||||
|
}
|
||||||
|
$row++;
|
||||||
|
|
||||||
|
my ($allSets, $cmdlist, $txt) = FW_devState($d, $rf, $extPage);
|
||||||
|
$allSets = FW_widgetOverride($d, $allSets);
|
||||||
|
|
||||||
|
my $colSpan = ($usuallyAtEnd->{$d} ? ' colspan="2"' : '');
|
||||||
|
FW_pO "<td informId=\"$d\"$colSpan>$txt</td>";
|
||||||
|
|
||||||
|
######
|
||||||
|
# Commands, slider, dropdown
|
||||||
|
my $smallscreenCommands = AttrVal($FW_wname, "smallscreenCommands", "");
|
||||||
|
if((!$FW_ss || $smallscreenCommands) && $cmdlist) {
|
||||||
|
my @a = split("[: ]", AttrVal($d, "cmdIcon", ""));
|
||||||
|
Log 1, "ERROR: bad cmdIcon definition for $d" if(@a % 2);
|
||||||
|
my %cmdIcon = @a;
|
||||||
|
|
||||||
|
foreach my $cmd (split(":", $cmdlist)) {
|
||||||
|
my $htmlTxt;
|
||||||
|
my @c = split(' ', $cmd); # @c==0 if $cmd==" ";
|
||||||
|
if(int(@c) && $allSets && $allSets =~ m/\b$c[0]:([^ ]*)/) {
|
||||||
|
my $values = $1;
|
||||||
|
foreach my $fn (sort keys %{$data{webCmdFn}}) {
|
||||||
|
no strict "refs";
|
||||||
|
$htmlTxt = &{$data{webCmdFn}{$fn}}($FW_wname,
|
||||||
|
$d, $FW_room, $cmd, $values);
|
||||||
|
use strict "refs";
|
||||||
|
last if(defined($htmlTxt));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($htmlTxt) {
|
||||||
|
FW_pO $htmlTxt;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
my $nCmd = $cmdIcon{$cmd} ?
|
||||||
|
FW_makeImage($cmdIcon{$cmd},$cmd,"webCmd") : $cmd;
|
||||||
|
FW_pH "cmd.$d=set $d $cmd$rf", $nCmd, 1, "col3";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FW_pO "</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
########################
|
########################
|
||||||
# Show the overview of devices in one room
|
# Show the overview of devices in one room
|
||||||
# room can be a room, all or Unsorted
|
# room can be a room, all or Unsorted
|
||||||
@ -1467,8 +1561,6 @@ FW_showRoom()
|
|||||||
FW_pO "<div id=\"content\" room=\"$FW_room\">";
|
FW_pO "<div id=\"content\" room=\"$FW_room\">";
|
||||||
FW_pO "<table class=\"roomoverview\">"; # Need for equal width of subtables
|
FW_pO "<table class=\"roomoverview\">"; # Need for equal width of subtables
|
||||||
|
|
||||||
my $rf = ($FW_room ? "&room=$FW_room" : ""); # stay in the room
|
|
||||||
|
|
||||||
# array of all device names in the room (exception weblinks without group
|
# array of all device names in the room (exception weblinks without group
|
||||||
# attribute)
|
# attribute)
|
||||||
my @devs= grep { ($FW_rooms{$FW_room}{$_}||$FW_room eq "all") &&
|
my @devs= grep { ($FW_rooms{$FW_room}{$_}||$FW_room eq "all") &&
|
||||||
@ -1517,63 +1609,9 @@ FW_showRoom()
|
|||||||
lc(AttrVal($b,"sortby",AttrVal($b,"alias",$b))) }
|
lc(AttrVal($b,"sortby",AttrVal($b,"alias",$b))) }
|
||||||
keys %{$group{$g}}) {
|
keys %{$group{$g}}) {
|
||||||
my $type = $defs{$d}{TYPE};
|
my $type = $defs{$d}{TYPE};
|
||||||
|
|
||||||
FW_pF "\n<tr class=\"%s\">", ($row&1)?"odd":"even";
|
|
||||||
my $devName = AttrVal($d, "alias", $d);
|
|
||||||
if(defined($nameDisplay)) {
|
|
||||||
my ($DEVICE, $ALIAS) = ($d, $devName);
|
|
||||||
$devName = eval $nameDisplay;
|
|
||||||
}
|
|
||||||
my $icon = AttrVal($d, "icon", "");
|
|
||||||
$icon = FW_makeImage($icon,$icon,"icon") . " " if($icon);
|
|
||||||
|
|
||||||
if($FW_hiddenroom{detail}) {
|
|
||||||
FW_pO "<td><div class=\"col1\">$icon$devName</div></td>"
|
|
||||||
if(!$usuallyAtEnd{$d});
|
|
||||||
} else {
|
|
||||||
FW_pH "detail=$d", "$icon$devName", 1, "col1" if(!$usuallyAtEnd{$d});
|
|
||||||
}
|
|
||||||
$row++;
|
|
||||||
|
|
||||||
$extPage{group} = $g;
|
$extPage{group} = $g;
|
||||||
my ($allSets, $cmdlist, $txt) = FW_devState($d, $rf, \%extPage);
|
|
||||||
$allSets = FW_widgetOverride($d, $allSets);
|
|
||||||
|
|
||||||
my $colSpan = ($usuallyAtEnd{$d} ? ' colspan="2"' : '');
|
FW_makeDeviceLine($d,$row,\%extPage,$nameDisplay,\%usuallyAtEnd);
|
||||||
FW_pO "<td informId=\"$d\"$colSpan>$txt</td>";
|
|
||||||
|
|
||||||
######
|
|
||||||
# Commands, slider, dropdown
|
|
||||||
my $smallscreenCommands = AttrVal($FW_wname, "smallscreenCommands", "");
|
|
||||||
if((!$FW_ss || $smallscreenCommands) && $cmdlist) {
|
|
||||||
my @a = split("[: ]", AttrVal($d, "cmdIcon", ""));
|
|
||||||
Log 1, "ERROR: bad cmdIcon definition for $d" if(@a % 2);
|
|
||||||
my %cmdIcon = @a;
|
|
||||||
|
|
||||||
foreach my $cmd (split(":", $cmdlist)) {
|
|
||||||
my $htmlTxt;
|
|
||||||
my @c = split(' ', $cmd); # @c==0 if $cmd==" ";
|
|
||||||
if(int(@c) && $allSets && $allSets =~ m/\b$c[0]:([^ ]*)/) {
|
|
||||||
my $values = $1;
|
|
||||||
foreach my $fn (sort keys %{$data{webCmdFn}}) {
|
|
||||||
no strict "refs";
|
|
||||||
$htmlTxt = &{$data{webCmdFn}{$fn}}($FW_wname,
|
|
||||||
$d, $FW_room, $cmd, $values);
|
|
||||||
use strict "refs";
|
|
||||||
last if(defined($htmlTxt));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($htmlTxt) {
|
|
||||||
FW_pO $htmlTxt;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
my $nCmd = $cmdIcon{$cmd} ?
|
|
||||||
FW_makeImage($cmdIcon{$cmd},$cmd,"webCmd") : $cmd;
|
|
||||||
FW_pH "cmd.$d=set $d $cmd$rf", $nCmd, 1, "col3";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FW_pO "</tr>";
|
|
||||||
}
|
}
|
||||||
FW_pO "</table>";
|
FW_pO "</table>";
|
||||||
FW_pO "</td></tr>";
|
FW_pO "</td></tr>";
|
||||||
@ -2139,7 +2177,8 @@ FW_makeImage(@)
|
|||||||
$data =~ s/[\r\n]/ /g;
|
$data =~ s/[\r\n]/ /g;
|
||||||
$data =~ s/ *$//g;
|
$data =~ s/ *$//g;
|
||||||
$data =~ s/<svg/<svg class="$class" data-txt="$txt"/; #52967
|
$data =~ s/<svg/<svg class="$class" data-txt="$txt"/; #52967
|
||||||
$data =~ s,</svg,<title>$txt</title></svg,;
|
my $title = urlEncode($txt);
|
||||||
|
$data =~ s,</svg,<title>$title</title></svg,;
|
||||||
$name =~ m/(@.*)$/;
|
$name =~ m/(@.*)$/;
|
||||||
my $col = $1 if($1);
|
my $col = $1 if($1);
|
||||||
if($col) {
|
if($col) {
|
||||||
@ -3092,7 +3131,8 @@ FW_widgetOverride($$)
|
|||||||
interpreted as an html string. Else the string is interpreted as a
|
interpreted as an html string. Else the string is interpreted as a
|
||||||
devStateIcon of the first fom, see above.
|
devStateIcon of the first fom, see above.
|
||||||
Example:<br>
|
Example:<br>
|
||||||
{'<div style="width:32px;height:32px;background-color:green"></div>'}
|
{'<div
|
||||||
|
style="width:32px;height:32px;background-color:green"></div>'}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
@ -3106,6 +3146,13 @@ FW_widgetOverride($$)
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
<li>deviceOverview<br>
|
||||||
|
Configures if the device line from the room view (device icon, state
|
||||||
|
icon and webCmds/cmdIcons) should also be shown in the device detail
|
||||||
|
view. Can be set to always, onClick, iconOnly or never. Default is
|
||||||
|
always.
|
||||||
|
</li><br>
|
||||||
|
|
||||||
<a name="editConfig"></a>
|
<a name="editConfig"></a>
|
||||||
<li>editConfig<br>
|
<li>editConfig<br>
|
||||||
If this FHEMWEB attribute is set to 1, then you will be able to edit
|
If this FHEMWEB attribute is set to 1, then you will be able to edit
|
||||||
@ -3792,6 +3839,13 @@ FW_widgetOverride($$)
|
|||||||
</ul>
|
</ul>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
|
<li>deviceOverview<br>
|
||||||
|
Gibt an ob die Darstellung aus der Raum-Ansicht (Zeile mit
|
||||||
|
Gerüteicon, Stateicon und webCmds/cmdIcons) auch in der
|
||||||
|
Detail-Ansicht angezeigt werden soll. Kann auf always, onClick,
|
||||||
|
iconOnly oder never gesetzt werden. Der Default ist always.
|
||||||
|
</li><br>
|
||||||
|
|
||||||
<a name="editConfig"></a>
|
<a name="editConfig"></a>
|
||||||
<li>editConfig<br>
|
<li>editConfig<br>
|
||||||
Falls dieses FHEMWEB Attribut (auf 1) gesetzt ist, dann kann man die
|
Falls dieses FHEMWEB Attribut (auf 1) gesetzt ist, dann kann man die
|
||||||
|
Loading…
x
Reference in New Issue
Block a user