From 4873e5711afd420beb6b4f271dfe08c37ab5fc75 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Thu, 26 Mar 2015 13:53:13 +0000 Subject: [PATCH] console.js: add filter (Forum #35421) git-svn-id: https://svn.fhem.de/fhem/trunk@8288 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 25 +++++++++---------------- fhem/www/pgm2/console.js | 30 +++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 88696f8cf..d484a3c6c 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -1840,14 +1840,9 @@ FW_style($$) FW_pO ""; FW_pO "
"; - if($a[2] && $a[2] ne "1") { - FW_pO "
"; - FW_pO "Events ($a[2] only):
\n"; - } else { - FW_pO "
"; - FW_pO "Events:
\n"; - } - FW_pO "
"; + my $filter = ($a[2] && $a[2] ne "1") ? $a[2] : ".*"; + FW_pO "Events (Filter:$filter):
\n"; + FW_pO "
"; FW_pO "
"; } @@ -2305,9 +2300,10 @@ FW_Notify($$) my ($ntfy, $dev) = @_; my $h = $ntfy->{inform}; return undef if(!$h); + my $isStatus = ($h->{type} =~ m/status/); my $dn = $dev->{NAME}; - if($dn eq "global" && $h->{type} =~ m/status/) { + if($dn eq "global" && $isStatus) { my $vs = int(@structChangeHist) ? 'visible' : 'hidden'; my $data = FW_longpollInfo($h->{fmt}, "#FHEMWEB:$ntfy->{NAME}","\$('#saveCheck').css('visibility','$vs')",""); @@ -2323,18 +2319,14 @@ FW_Notify($$) return; } - if($h->{type} eq "raw") { - return undef if($dn !~ m/$h->{filter}/); - } else { # Status - return undef if(!$h->{devices}{$dn}); - } + return undef if($isStatus && !$h->{devices}{$dn}); my @data; my %extPage; my $isRaw = ($h->{type} =~ m/raw/); my $events = deviceEvents($dev, AttrVal($FW_wname, "addStateEvent",!$isRaw)); - if($h->{type} =~ m/status/) { + if($isStatus) { # Why is saving this stuff needed? FLOORPLAN? my @old = ($FW_wname, $FW_ME, $FW_ss, $FW_tp, $FW_subdir); $FW_wname = $ntfy->{SNAME}; @@ -2382,7 +2374,8 @@ FW_Notify($$) my $max = int(@{$events}); my $dt = $dev->{TYPE}; for(my $i = 0; $i < $max; $i++) { - push @data,("$tn $dt $dn ".$events->[$i]."
"); + my $line = ("$tn $dt $dn ".$events->[$i]."
"); + push @data,$line if($line =~ m/$h->{filter}/); } } } diff --git a/fhem/www/pgm2/console.js b/fhem/www/pgm2/console.js index f344e228d..fa2e34847 100644 --- a/fhem/www/pgm2/console.js +++ b/fhem/www/pgm2/console.js @@ -17,11 +17,9 @@ consUpdate() if(consConn.readyState != 3) return; - var el = document.getElementById("console"); - if(el) { - el.innerHTML=consTxt+consConn.responseText; - el.scrollTop = el.scrollHeight; - } + $("#console") + .html(consTxt+consConn.responseText) + .scrollTop($("#console")[0].scrollHeight); } function @@ -49,6 +47,28 @@ consStart() consFilter = ".*"; consTxt = el.innerHTML; setTimeout("consFill()", 1000); + + $("a#eventFilter").click(function(evt){ // Event-Filter Dialog + $('body').append( + '
'+ + '
Filter:

'+ + '
'+ + '
'); + + $('#evtfilterdlg').dialog({ modal:true, + close:function(){$('#evtfilterdlg').remove();}, + buttons:[ + { text:"Cancel", click:function(){ $(this).dialog('close'); }}, + { text:"OK", click:function(){ + var val = $("#filtertext").val().trim(); + consFilter = val ? val : ".*"; + $(this).dialog('close'); + $("a#eventFilter").html(consFilter); + $("#console").html(consTxt); + consFill(); + }}] + }); + }); } window.onload = consStart;