diff --git a/fhem/FHEM/98_DSBMobile.pm b/fhem/FHEM/98_DSBMobile.pm
index 339f29ddf..5b8531fe7 100644
--- a/fhem/FHEM/98_DSBMobile.pm
+++ b/fhem/FHEM/98_DSBMobile.pm
@@ -2,7 +2,7 @@
##############################################################################
#
# 98_DSBMobile.pm
-# An FHEM Perl module that supports parental control for Nintendo Switch
+# An FHEM Perl module that retrieves information from DSBMobile
#
# Copyright by KernSani
#
@@ -21,6 +21,7 @@
#
##############################################################################
# Changelog:
+# 20.02.2020 Parsing of grouped classes
##############################################################################
##############################################################################
# Todo:
@@ -40,12 +41,12 @@ my $missingModul = "";
#eval "use Blocking;1" or $missingModul .= "Blocking ";
#eval "use UUID::Random;1" or $missingModul .= "install UUID::Random ";
-eval "use IO::Compress::Gzip qw(gzip);1" or $missingModul .= "IO::Compress::Gzip ";
-eval "use IO::Uncompress::Gunzip qw(gunzip);1" or $missingModul .= "IO::Compress::Gunzip ";
-eval "use MIME::Base64;1" or $missingModul .= "MIME::Base64 ";
-eval "use HTML::TableExtract;1" or $missingModul .= "HTML::TableExtract ";
-eval "use HTML::TreeBuilder;1" or $missingModul .= "HTML::TreeBuilder ";
-eval "use JSON::XS;1" or $missingModul .= "JSON::XS ";
+eval "use IO::Compress::Gzip qw(gzip);1" or $missingModul .= "IO::Compress::Gzip ";
+eval "use IO::Uncompress::Gunzip qw(gunzip);1" or $missingModul .= "IO::Compress::Gunzip ";
+eval "use MIME::Base64;1" or $missingModul .= "MIME::Base64 ";
+eval "use HTML::TableExtract;1" or $missingModul .= "HTML::TableExtract ";
+eval "use HTML::TreeBuilder;1" or $missingModul .= "HTML::TreeBuilder ";
+eval "use JSON::XS qw (encode_json decode_json);1" or $missingModul .= "JSON::XS ";
#####################################
sub DSBMobile_Initialize($) {
@@ -338,6 +339,7 @@ sub DSBMobile_getTTCallback($) {
$te->parse($ttab);
push( @tabs, $te->tables() );
}
+
#Log3 $name, 4, "[$name] Extracted Tables". Dumper(@tabs);
Log3 $name, 4, "[$name] Starting extraction info";
@@ -400,9 +402,10 @@ sub DSBMobile_getTTCallback($) {
@ch = map { makeReadingName($_) } @f;
next;
}
+
#check if we have a single row (grouping by class)
- if ( !defined($f[1]) ) {
-
+ if ( !defined( $f[1] ) ) {
+
# create the reading if we didn't have a group before
unshift( @ch, makeReadingName($class) ) unless $group;
$group = $f[0];
@@ -424,22 +427,6 @@ sub DSBMobile_getTTCallback($) {
}
$tst{sdate} = $fdate;
- # my %row = (
- # sdate => $fdate,
- # class => $f[0],
- # hour => $f[1],
- # teacherNew => $f[2],
- # topicNew => $f[3],
- # teacherOld => $f[4],
- # roomNew => $f[5],
- # topicOld => $f[6],
- # substof => $f[7],
- # substto => $f[8],
- # roomOld => $f[9],
- # comment => $f[10]
- # );
- Log3 $name, 4, "found single line: " . Dumper(%tst);
- #push( @result, \%roq ) if ( defined( $row{class} ) && $row{class} =~ /$filter/ );
push( @result, \%tst )
if ( defined( $tst{$class} )
&& $tst{$class} =~ /$filter/ );
@@ -597,17 +584,36 @@ sub DSBMobile_simpleHTML($;$) {
my $out = AttrVal( $name, "dsb_outputFormat", undef );
foreach my $day (@days) {
- $ret .= "
" . $day . " |
";
+ my $row = 0;
+ my $class = "even";
+ $ret .= "
" . $day . " |
";
+ $row++;
if ($infoDay) {
foreach my $iline (@idata) {
+ if ( $row % 2 == 0 ) {
+ $class = "even";
+ }
+ else {
+ $class = "odd";
+ }
+ $row++;
+
if ( $iline->{sdate} eq $day ) {
- $ret .= "" . $iline->{topic} . ": " . $iline->{text} . " |
";
+ $ret .= "" . $iline->{topic} . ": " . $iline->{text} . " |
";
}
}
}
foreach my $line (@data) {
if ( $line->{sdate} eq $day ) {
- $ret .= "";
+ if ( $row % 2 == 0 ) {
+ $class = "even";
+ }
+ else {
+ $class = "odd";
+ }
+ $row++;
+
+ $ret .= " |
";
if ($out) {
my $rep = $out;
foreach my $c (@cn) {
@@ -626,34 +632,6 @@ sub DSBMobile_simpleHTML($;$) {
}
}
- # foreach my $line (@data) {
- # next if ( $line->{sdate} lt $today );
- # if ( $line->{sdate} ne $date ) {
- # $date = $line->{sdate};
- # $ret .= " |
" . $line->{sdate} . " |
";
- # if ($infoDay) {
- # foreach my $iline (@idata) {
- # if ( $iline->{sdate} eq $date ) {
- # $ret .= "" . $iline->{topic} . ": " . $iline->{text} . " |
";
- # }
- # }
- # }
- # }
- # $ret .= "";
- # my $out = AttrVal( $name, "dsb_outputFormat", undef );
- # if ($out) {
- # foreach my $c (@cn) {
- # $out =~ s/\%$c\%/$line->{$c}/g;
- # }
- # $ret .= $out;
- # }
- # else {
- # foreach my $c (@cn) {
- # $ret .= $line->{$c} . " ";
- # }
- # }
- # $ret .= " |
";
- # }
$ret .= "
";
return $ret;
@@ -662,16 +640,24 @@ sub DSBMobile_simpleHTML($;$) {
sub DSBMobile_infoHTML($) {
my ( $name, $infoDay ) = @_;
my $dat = ReadingsVal( $name, ".lastAResult", "" );
- my $ret = "";
+ my $ret = "";
$dat = decode_json($dat);
my @data = @$dat;
@data = sort { $a->{date} cmp $b->{date} } @data;
-
+ my $row = 1;
+ my $class;
foreach my $line (@data) {
- $ret .= ""
+ if ( $row % 2 == 0 ) {
+ $class = "even";
+ }
+ else {
+ $class = "odd";
+ }
+ $row++;
+ $ret .= " |
"
. "$line->{date}: | $line->{title} |
";
}
$ret .= "
";