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;