2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-30 12:07:09 +00:00

Longpoll will update dropdown and readings, mainly by Matthias

git-svn-id: https://svn.fhem.de/fhem/trunk@2545 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2013-01-21 20:22:39 +00:00
parent 9840fb488e
commit f532a1d005
2 changed files with 34 additions and 9 deletions

View File

@ -32,7 +32,7 @@ sub FW_readIcons($);
sub FW_readIconsFrom($$); sub FW_readIconsFrom($$);
sub FW_returnFileAsStream($$$$$); sub FW_returnFileAsStream($$$$$);
sub FW_roomOverview($); sub FW_roomOverview($);
sub FW_select($$$$@); sub FW_select($$$$$@);
sub FW_serveSpecial($$$$); sub FW_serveSpecial($$$$);
sub FW_setDirs(); sub FW_setDirs();
sub FW_showLog($); sub FW_showLog($);
@ -758,7 +758,8 @@ FW_makeTable($$@)
} else { } else {
$t = "" if(!$t); $t = "" if(!$t);
FW_pO "<td>$v</td><td>$t</td>"; FW_pO "<td><div id=\"$name-$n\">$v</div></td>";
FW_pO "<td><div id=\"$name-$n-ts\">$t</div></td>";
} }
@ -797,7 +798,7 @@ FW_makeSelect($$$$)
FW_pO FW_hidden("dev.$cmd$d", $d); FW_pO FW_hidden("dev.$cmd$d", $d);
FW_pO FW_submit("cmd.$cmd$d", $cmd, $class); FW_pO FW_submit("cmd.$cmd$d", $cmd, $class);
FW_pO "<div class=\"$class downText\">&nbsp;$d&nbsp;</div>"; FW_pO "<div class=\"$class downText\">&nbsp;$d&nbsp;</div>";
FW_pO FW_select("arg.$cmd$d",\@al, $selEl, $class, FW_pO FW_select("","arg.$cmd$d",\@al, $selEl, $class,
"FW_selChange(this.options[selectedIndex].text,'$list','val.$cmd$d')"); "FW_selChange(this.options[selectedIndex].text,'$list','val.$cmd$d')");
FW_pO FW_textfield("val.$cmd$d", 30, $class); FW_pO FW_textfield("val.$cmd$d", 30, $class);
@ -1196,7 +1197,7 @@ FW_showRoom()
FW_hidden("arg.$d", $cmd) . FW_hidden("arg.$d", $cmd) .
FW_hidden("dev.$d", $d) . FW_hidden("dev.$d", $d) .
($FW_room ? FW_hidden("room", $FW_room) : "") . ($FW_room ? FW_hidden("room", $FW_room) : "") .
FW_select("val.$d", \@tv, $txt, "dropdown"). FW_select("$d-$cmd","val.$d", \@tv, $txt, "dropdown").
"</td><td>". "</td><td>".
FW_submit("cmd.$d", "set"). FW_submit("cmd.$d", "set").
"</td>"; "</td>";
@ -1645,11 +1646,12 @@ FW_hidden($$)
################## ##################
# Generate a select field with option list # Generate a select field with option list
sub sub
FW_select($$$$@) FW_select($$$$$@)
{ {
my ($n, $va, $def, $class, $jSelFn) = @_; my ($id, $n, $va, $def, $class, $jSelFn) = @_;
$jSelFn = ($jSelFn ? "onchange=\"$jSelFn\"" : ""); $jSelFn = ($jSelFn ? "onchange=\"$jSelFn\"" : "");
my $s = "<select $jSelFn name=\"$n\" class=\"$class\">"; $id = ($id ? "id=\"$id\"" : "");
my $s = "<select $jSelFn $id name=\"$n\" class=\"$class\">";
foreach my $v (@{$va}) { foreach my $v (@{$va}) {
if($def && $v eq $def) { if($def && $v eq $def) {
@ -2500,6 +2502,19 @@ FW_Notify($$)
($FW_wname, $FW_ME, $FW_ss, $FW_tp, $FW_subdir) = @old; ($FW_wname, $FW_ME, $FW_ss, $FW_tp, $FW_subdir) = @old;
$data = "$dn<<$dev->{STATE}<<$txt\n"; $data = "$dn<<$dev->{STATE}<<$txt\n";
#Add READINGS
if($dev->{CHANGED}) { # It gets deleted sometimes (?)
my $tn = TimeNow();
my $max = int(@{$dev->{CHANGED}});
for(my $i = 0; $i < $max; $i++) {
if( $dev->{CHANGED}[$i] !~ /: /) {
next; #ignore 'set' commands
}
my ($readingName,$readingVal) = split(": ",$dev->{CHANGED}[$i],2);
$data .= "$dn-$readingName<<$readingVal<<$readingVal\n";
$data .= "$dn-$readingName-ts<<$tn<<$tn\n";
}
}
} elsif($filter eq "console") { } elsif($filter eq "console") {
if($dev->{CHANGED}) { # It gets deleted sometimes (?) if($dev->{CHANGED}) { # It gets deleted sometimes (?)
my $tn = TimeNow(); my $tn = TimeNow();

View File

@ -34,8 +34,18 @@ FW_doUpdate()
if(d.length != 3) if(d.length != 3)
continue; continue;
var el = document.getElementById(d[0]); var el = document.getElementById(d[0]);
if(el) if(el) {
el.innerHTML=d[2]; if(el.nodeName.toLowerCase() == "select") {
// dropdown: set the selected index to the current value
for(var j=0;j<el.options.length;j++)
if(el.options[j].value == d[2]) {
el.selectedIndex = j;
}
} else {
el.innerHTML=d[2];
}
}
} }
//Next time, we continue at the next line //Next time, we continue at the next line
FW_curLine = lines.length; FW_curLine = lines.length;