mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-12 22:56:34 +00:00
95_FLOORPLAN.pm: fhemweb_js update modifications, by justme1968 (Forum #31293)
git-svn-id: https://svn.fhem.de/fhem/trunk@7594 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
aa6ff9550d
commit
298ca27ac6
@ -156,6 +156,7 @@ FLOORPLAN_Initialize($)
|
|||||||
$hash->{FW_detailFn} = "FP_detailFn"; #floorplan-specific detail-screen
|
$hash->{FW_detailFn} = "FP_detailFn"; #floorplan-specific detail-screen
|
||||||
$hash->{AttrList} = "refresh fp_arrange:1,detail,WEB,0 commandfield:1,0 fp_default:1,0 ".
|
$hash->{AttrList} = "refresh fp_arrange:1,detail,WEB,0 commandfield:1,0 fp_default:1,0 ".
|
||||||
"stylesheet fp_noMenu:1,0 fp_backgroundimg fp_setbutton:1,0 fp_viewport ".
|
"stylesheet fp_noMenu:1,0 fp_backgroundimg fp_setbutton:1,0 fp_viewport ".
|
||||||
|
"CssFiles JavaScripts ".
|
||||||
"fp_roomIcons";
|
"fp_roomIcons";
|
||||||
# CGI
|
# CGI
|
||||||
my $name = "floorplan";
|
my $name = "floorplan";
|
||||||
@ -366,8 +367,8 @@ FP_htmlHeader($) {
|
|||||||
$FW_RET = "";
|
$FW_RET = "";
|
||||||
$FW_RET .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n";
|
$FW_RET .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n";
|
||||||
$FW_RET .= '<html xmlns="http://www.w3.org/1999/xhtml">'."\n";
|
$FW_RET .= '<html xmlns="http://www.w3.org/1999/xhtml">'."\n";
|
||||||
FW_pO "<head>";
|
FW_pO "<head root=\"$FW_ME\">\n<title>$title</title>";
|
||||||
FW_pO "<title>".$title."</title>";
|
FW_pO "<meta charset=\"$FW_encoding\">"; # Forum 28666
|
||||||
# Enable WebApp
|
# Enable WebApp
|
||||||
if($FW_tp || $FW_ss) {
|
if($FW_tp || $FW_ss) {
|
||||||
FW_pO "<link rel=\"apple-touch-icon-precomposed\" href=\"" . FW_IconURL("fhemicon") . "\"/>";
|
FW_pO "<link rel=\"apple-touch-icon-precomposed\" href=\"" . FW_IconURL("fhemicon") . "\"/>";
|
||||||
@ -381,29 +382,50 @@ FP_htmlHeader($) {
|
|||||||
# refresh-value
|
# refresh-value
|
||||||
my $rf = AttrVal($FW_wname, "refresh", "");
|
my $rf = AttrVal($FW_wname, "refresh", "");
|
||||||
FW_pO "<meta http-equiv=\"refresh\" content=\"$rf\">" if($rf); # use refresh-value from Web-Instance
|
FW_pO "<meta http-equiv=\"refresh\" content=\"$rf\">" if($rf); # use refresh-value from Web-Instance
|
||||||
# stylesheet
|
|
||||||
|
########################
|
||||||
|
# CSS
|
||||||
|
my $cssTemplate = "<link href=\"$FW_ME/%s\" rel=\"stylesheet\"/>";
|
||||||
|
#FW_pO sprintf($cssTemplate, "pgm2/style.css");
|
||||||
|
FW_pO sprintf($cssTemplate, "pgm2/jquery-ui.min.css");
|
||||||
|
map { FW_pO sprintf($cssTemplate, $_); }
|
||||||
|
split(" ", AttrVal($FP_name, "CssFiles", ""));
|
||||||
|
|
||||||
my $defaultcss = AttrVal($FW_wname, "stylesheetPrefix", "") . "floorplanstyle.css";
|
my $defaultcss = AttrVal($FW_wname, "stylesheetPrefix", "") . "floorplanstyle.css";
|
||||||
my $css= AttrVal($FP_name, "stylesheet", $defaultcss);
|
my $css= AttrVal($FP_name, "stylesheet", $defaultcss);
|
||||||
FW_pO "<link href=\"$FW_ME/css/$css\" rel=\"stylesheet\"/>";
|
FW_pO "<link href=\"$FW_ME/css/$css\" rel=\"stylesheet\"/>";
|
||||||
#set sripts
|
|
||||||
# FW_pO "<script type=\"text/javascript\" src=\"$FW_ME/js/svg.js\"></script>"
|
########################
|
||||||
# if($FW_plotmode eq "SVG");
|
# JavaScripts
|
||||||
# FW_pO "<script type=\"text/javascript\" src=\"$FW_ME/js/fhemweb.js\"></script>";
|
|
||||||
my $jsTemplate = '<script type="text/javascript" src="%s"></script>';
|
my $jsTemplate = '<script type="text/javascript" src="%s"></script>';
|
||||||
FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/svg.js") if($FW_plotmode eq "SVG");
|
FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/jquery.min.js");
|
||||||
foreach my $js (@FW_fhemwebjs) {
|
FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/jquery-ui.min.js");
|
||||||
FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/$js");
|
|
||||||
}
|
#######################
|
||||||
|
# Other JavaScripts + their Attributes
|
||||||
|
map { FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/$_") } @FW_fhemwebjs;
|
||||||
|
$jsTemplate = '<script attr=\'%s\' type="text/javascript" src="%s"></script>';
|
||||||
|
map {
|
||||||
|
my $n = $_; $n =~ s+.*/++; $n =~ s/.js$//; $n =~ s/fhem_//; $n .= "Param";
|
||||||
|
FW_pO sprintf($jsTemplate, AttrVal($FP_name, $n, ""), "$FW_ME/$_");
|
||||||
|
} split(" ", AttrVal($FP_name, "JavaScripts", ""));
|
||||||
|
|
||||||
|
########################
|
||||||
# FW Extensions
|
# FW Extensions
|
||||||
if(defined($data{FWEXT})) {
|
if(defined($data{FWEXT})) {
|
||||||
foreach my $k (sort keys %{$data{FWEXT}}) {
|
foreach my $k (sort keys %{$data{FWEXT}}) {
|
||||||
my $h = $data{FWEXT}{$k};
|
my $h = $data{FWEXT}{$k};
|
||||||
next if($h !~ m/HASH/ || !$h->{SCRIPT});
|
next if($h !~ m/HASH/ || !$h->{SCRIPT} || $h->{SCRIPT} =~ m+pgm2/jquery+);
|
||||||
FW_pO "<script type=\"text/javascript\" ".
|
my $script = $h->{SCRIPT};
|
||||||
"src=\"$FW_ME/js/$h->{SCRIPT}\"></script>";
|
$script = ($script =~ m,^/,) ? "$FW_ME$script" : "$FW_ME/pgm2/$script";
|
||||||
|
FW_pO sprintf($jsTemplate, $script);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FW_pO "</head>\n";
|
|
||||||
|
my $csrf= ($FW_CSRF ? "fwcsrf='$defs{$FW_wname}{CSRFTOKEN}'" : "");
|
||||||
|
my $gen = 'generated="'.(time()-1).'"';
|
||||||
|
my $lp = 'longpoll="'.AttrVal($FW_wname,"longpoll",1).'"';
|
||||||
|
FW_pO "</head>\n<body name=\"$title\" $gen $lp $csrf>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -486,6 +508,7 @@ FP_show(){
|
|||||||
FW_pO "<form method=\"$FW_formmethod\" action=\"$FW_ME/floorplan/$FP_name/$d\" autocomplete=\"off\">";
|
FW_pO "<form method=\"$FW_formmethod\" action=\"$FW_ME/floorplan/$FP_name/$d\" autocomplete=\"off\">";
|
||||||
FW_pO " <table class=\"$type fp_$FP_name\" id=\"table-$d\" align=\"center\">"; # Main table per device
|
FW_pO " <table class=\"$type fp_$FP_name\" id=\"table-$d\" align=\"center\">"; # Main table per device
|
||||||
my ($allSets, $cmdlist, $txt) = FW_devState($d, "");
|
my ($allSets, $cmdlist, $txt) = FW_devState($d, "");
|
||||||
|
$allSets = FW_widgetOverride($d, $allSets);
|
||||||
$txt = ReadingsVal($d, $text, "Undefined Reading $d-<b>$text</b>") if ($style == 3 || $style == 6); # Style3+6 = DeviceReading given in $text
|
$txt = ReadingsVal($d, $text, "Undefined Reading $d-<b>$text</b>") if ($style == 3 || $style == 6); # Style3+6 = DeviceReading given in $text
|
||||||
my $cols = ($cmdlist ? (split(":", $cmdlist)) : 0); # Need command-count for colspan of devicename+state
|
my $cols = ($cmdlist ? (split(":", $cmdlist)) : 0); # Need command-count for colspan of devicename+state
|
||||||
|
|
||||||
@ -558,36 +581,36 @@ FP_show(){
|
|||||||
my $firstIdx = 0;
|
my $firstIdx = 0;
|
||||||
FW_pO " <tr class=\"devicecommands\" id=\"$d-devicecommands\">";
|
FW_pO " <tr class=\"devicecommands\" id=\"$d-devicecommands\">";
|
||||||
|
|
||||||
# Special handling (slider, dropdown, timepicker)
|
|
||||||
# my $FW_room = undef; ##needed to be able to reuse code from FHEMWEB
|
|
||||||
my $cmd = $cList[0];
|
|
||||||
if($allSets && $allSets =~ m/$cmd:([^ ]*)/) {
|
|
||||||
my $values = $1;
|
|
||||||
my $oldMe = $FW_ME;
|
my $oldMe = $FW_ME;
|
||||||
|
foreach my $cmd (sort @cList) {
|
||||||
|
# Special handling (slider, dropdown, timepicker, ...)
|
||||||
|
my $htmlTxt;
|
||||||
|
my @c = split(' ', $cmd);
|
||||||
|
if(int(@c) && $allSets && $allSets =~ m/\b$c[0]:([^ ]*)/) {
|
||||||
|
my $values = $1;
|
||||||
$FW_ME = "$FW_ME/floorplan/$FP_name";
|
$FW_ME = "$FW_ME/floorplan/$FP_name";
|
||||||
foreach my $fn (sort keys %{$data{webCmdFn}}) {
|
foreach my $fn (sort keys %{$data{webCmdFn}}) {
|
||||||
my $FW_room = ""; ##needed to be able to reuse code from FHEMWEB
|
my $FW_room = ""; ##needed to be able to reuse code from FHEMWEB
|
||||||
no strict "refs";
|
no strict "refs";
|
||||||
my $htmlTxt = &{$data{webCmdFn}{$fn}}("$FW_ME",
|
$htmlTxt = &{$data{webCmdFn}{$fn}}($FW_ME,
|
||||||
$d, $FW_room, $cmd, $values);
|
$d, $FW_room, $cmd, $values);
|
||||||
use strict "refs";
|
use strict "refs";
|
||||||
|
last if(defined($htmlTxt));
|
||||||
|
}
|
||||||
|
}
|
||||||
if(defined($htmlTxt)) {
|
if(defined($htmlTxt)) {
|
||||||
$htmlTxt =~ s/>desired-temp/>/; #mod20130929
|
$htmlTxt =~ s/>desired-temp/>/; #mod20130929
|
||||||
$htmlTxt =~ s/>desiredTemperature/>/; #mod20131225
|
$htmlTxt =~ s/>desiredTemperature/>/; #mod20131225
|
||||||
FW_pO $htmlTxt;
|
FW_pO $htmlTxt;
|
||||||
$firstIdx = 1;
|
# END # Special handling (slider, dropdown, timepicker, ...)
|
||||||
last;
|
} else {
|
||||||
|
FW_pH "cmd.$d=set $d $cmd",
|
||||||
|
ReplaceEventMap($d,$cmd,1),1,"devicecommands";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$FW_ME = $oldMe;
|
$FW_ME = $oldMe;
|
||||||
}
|
|
||||||
# END # Special handling (slider, dropdown, timepicker)
|
|
||||||
|
|
||||||
for(my $idx=$firstIdx; $idx < @cList; $idx++) {
|
|
||||||
FW_pH "cmd.$d=set $d $cList[$idx]",
|
|
||||||
ReplaceEventMap($d,$cList[$idx],1),1,"devicecommands";
|
|
||||||
}
|
|
||||||
FW_pO "</tr>";
|
FW_pO "</tr>";
|
||||||
|
|
||||||
} elsif($type eq "FileLog") {
|
} elsif($type eq "FileLog") {
|
||||||
# $row = FW_dumpFileLog($d, 1, $row);
|
# $row = FW_dumpFileLog($d, 1, $row);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user