From f532a1d005519167bbe450e00efb12ed5a29e1f1 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 21 Jan 2013 20:22:39 +0000 Subject: [PATCH] Longpoll will update dropdown and readings, mainly by Matthias git-svn-id: https://svn.fhem.de/fhem/trunk@2545 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 29 ++++++++++++++++++++++------- fhem/www/pgm2/fhemweb.js | 14 ++++++++++++-- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index e87804253..6e0242a10 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -32,7 +32,7 @@ sub FW_readIcons($); sub FW_readIconsFrom($$); sub FW_returnFileAsStream($$$$$); sub FW_roomOverview($); -sub FW_select($$$$@); +sub FW_select($$$$$@); sub FW_serveSpecial($$$$); sub FW_setDirs(); sub FW_showLog($); @@ -758,7 +758,8 @@ FW_makeTable($$@) } else { $t = "" if(!$t); - FW_pO "$v$t"; + FW_pO "
$v
"; + FW_pO "
$t
"; } @@ -797,7 +798,7 @@ FW_makeSelect($$$$) FW_pO FW_hidden("dev.$cmd$d", $d); FW_pO FW_submit("cmd.$cmd$d", $cmd, $class); FW_pO "
 $d 
"; - 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_pO FW_textfield("val.$cmd$d", 30, $class); @@ -1196,7 +1197,7 @@ FW_showRoom() FW_hidden("arg.$d", $cmd) . FW_hidden("dev.$d", $d) . ($FW_room ? FW_hidden("room", $FW_room) : "") . - FW_select("val.$d", \@tv, $txt, "dropdown"). + FW_select("$d-$cmd","val.$d", \@tv, $txt, "dropdown"). "". FW_submit("cmd.$d", "set"). ""; @@ -1645,11 +1646,12 @@ FW_hidden($$) ################## # Generate a select field with option list sub -FW_select($$$$@) +FW_select($$$$$@) { - my ($n, $va, $def, $class, $jSelFn) = @_; + my ($id, $n, $va, $def, $class, $jSelFn) = @_; $jSelFn = ($jSelFn ? "onchange=\"$jSelFn\"" : ""); - my $s = ""; foreach my $v (@{$va}) { if($def && $v eq $def) { @@ -2500,6 +2502,19 @@ FW_Notify($$) ($FW_wname, $FW_ME, $FW_ss, $FW_tp, $FW_subdir) = @old; $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") { if($dev->{CHANGED}) { # It gets deleted sometimes (?) my $tn = TimeNow(); diff --git a/fhem/www/pgm2/fhemweb.js b/fhem/www/pgm2/fhemweb.js index be86c5143..83c6794b7 100644 --- a/fhem/www/pgm2/fhemweb.js +++ b/fhem/www/pgm2/fhemweb.js @@ -34,8 +34,18 @@ FW_doUpdate() if(d.length != 3) continue; var el = document.getElementById(d[0]); - if(el) - el.innerHTML=d[2]; + if(el) { + if(el.nodeName.toLowerCase() == "select") { + // dropdown: set the selected index to the current value + for(var j=0;j