diff --git a/77_UWZ.pm b/77_UWZ.pm index 9b422cf..eec3ca5 100644 --- a/77_UWZ.pm +++ b/77_UWZ.pm @@ -9,6 +9,7 @@ # - Marko Oldenburg (leongaultier at gmail dot com) # - Hanjo (Forum) patch for sort by creation # - cb1 patch Replace Iconv with native perl encode() +# - KölnSolar (Markus) new write UWZAsHtml with smaler Code # # Storm warnings from unwetterzentrale.de # inspired by 59_PROPLANTA.pm @@ -878,8 +879,7 @@ sub Start($) { { # set up timer if automatically call RemoveInternalTimer($hash); - InternalTimer( gettimeofday() + $hash->{INTERVAL}, - "UWZ_Start", $hash ); + InternalTimer( gettimeofday() + $hash->{INTERVAL}, "UWZ_Start", $hash ); return undef if ( IsDisabled($name) ); readingsSingleUpdate( $hash, 'currentIntervalMode', 'normal', 0 ); } @@ -1738,8 +1738,8 @@ sub Run($) { ##################################### sub UWZAsHtml($;$) { - my ( $name, $items ) = @_; + my $ret = ''; my $hash = $defs{$name}; @@ -1774,235 +1774,17 @@ sub UWZAsHtml($;$) { $i-- ) { + $ret .= UWZHtmlFrame( $hash, "Warn_" . $i, $attr, 1 ); - $ret .= -''; - $ret .= - '' - . ReadingsVal( $name, "Warn_" . $i . "_ShortText", "" ) - . '

'; - $ret .= ReadingsVal( $name, "Warn_" . $i . "_LongText", "" ) - . '

'; - - my ( - $sec, $min, $hour, $mday, $mon, - $year, $wday, $yday, $isdst - ) - = localtime( - ReadingsVal( $name, "Warn_" . $i . "_Start", "" ) ); - if ( length($hour) == 1 ) { $hour = "0$hour"; } - if ( length($min) == 1 ) { $min = "0$min"; } - - # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['NL'] ) { - $ret .= - '
Anfang:' - . "$DEweekdays[$wday], $mday $DEmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'Uhr
'; - } - elsif ( $hash->{CountryCode} ~~ ['FR'] ) { - $ret .= - '
Begin:' - . "$NLweekdays[$wday], $mday $NLmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'uur
'; - } - else { - $ret .= - '
Valide à partir du:' - . "$FRweekdays[$wday], $mday $FRmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'heure
'; - } - - # end language by AttrVal - - ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) - = undef; - ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) - = localtime( - ReadingsVal( $name, "Warn_" . $i . "_End", "" ) ); - if ( length($hour) == 1 ) { $hour = "0$hour"; } - if ( length($min) == 1 ) { $min = "0$min"; } - - # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['NL'] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['FR'] ) { - $ret .= - ''; - } - else { - $ret .= - ''; - } - - # end language by AttrVal - $ret .= '
Start:' - . "$ENweekdays[$wday], $mday $ENmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'hourEnde:' - . "$DEweekdays[$wday], $mday $DEmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'UhrEinde:' - . "$NLweekdays[$wday], $mday $NLmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'uurJusqu\'au:' - . "$FRweekdays[$wday], $mday $FRmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'heureEnd:' - . "$ENweekdays[$wday], $mday $ENmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'hour
'; - $ret .= ''; } } else { -### for ( my $i = 0 ; $i < ReadingsVal( $name, "WarnCount", 0 ) ; $i++ ) { - $ret .= -''; - $ret .= - '' - . ReadingsVal( $name, "Warn_" . $i . "_ShortText", "" ) - . '

'; - $ret .= ReadingsVal( $name, "Warn_" . $i . "_LongText", "" ) - . '

'; - - my ( - $sec, $min, $hour, $mday, $mon, - $year, $wday, $yday, $isdst - ) - = localtime( - ReadingsVal( $name, "Warn_" . $i . "_Start", "" ) ); - if ( length($hour) == 1 ) { $hour = "0$hour"; } - if ( length($min) == 1 ) { $min = "0$min"; } - - # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['NL'] ) { - $ret .= - '
Anfang:' - . "$DEweekdays[$wday], $mday $DEmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'Uhr
'; - } - elsif ( $hash->{CountryCode} ~~ ['FR'] ) { - $ret .= - '
Begin:' - . "$NLweekdays[$wday], $mday $NLmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'uur
'; - } - else { - $ret .= - '
Valide à partir du:' - . "$FRweekdays[$wday], $mday $FRmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'heure
'; - } - - # end language by AttrVal - - ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) - = undef; - ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) - = localtime( - ReadingsVal( $name, "Warn_" . $i . "_End", "" ) ); - if ( length($hour) == 1 ) { $hour = "0$hour"; } - if ( length($min) == 1 ) { $min = "0$min"; } - - # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['NL'] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['FR'] ) { - $ret .= - ''; - } - else { - $ret .= - ''; - } - - # end language by AttrVal - $ret .= '
Start:' - . "$ENweekdays[$wday], $mday $ENmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'hourEnde:' - . "$DEweekdays[$wday], $mday $DEmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'UhrEinde:' - . "$NLweekdays[$wday], $mday $NLmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'uurJuzqu\'au:' - . "$FRweekdays[$wday], $mday $FRmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'heureEnd:' - . "$ENweekdays[$wday], $mday $ENmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'hour
'; - $ret .= ''; + $ret .= UWZHtmlFrame( $hash, "Warn_" . $i, $attr, 1 ); } } -### $ret .= ''; $ret .= ''; @@ -2046,8 +1828,8 @@ sub UWZAsHtml($;$) { ##################################### sub UWZAsHtmlLite($;$) { - my ( $name, $items ) = @_; + my $ret = ''; my $hash = $defs{$name}; my $htmlsequence = AttrVal( $name, "htmlsequence", "none" ); @@ -2081,226 +1863,14 @@ sub UWZAsHtmlLite($;$) { $i-- ) { - $ret .= -''; - $ret .= - '' - . ReadingsVal( $name, "Warn_" . $i . "_ShortText", "" ) - . '

'; - - my ( - $sec, $min, $hour, $mday, $mon, - $year, $wday, $yday, $isdst - ) - = localtime( - ReadingsVal( $name, "Warn_" . $i . "_Start", "" ) ); - if ( length($hour) == 1 ) { $hour = "0$hour"; } - if ( length($min) == 1 ) { $min = "0$min"; } - - # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['NL'] ) { - $ret .= - '
Anfang:' - . "$DEweekdays[$wday], $mday $DEmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'Uhr
'; - } - elsif ( $hash->{CountryCode} ~~ ['FR'] ) { - $ret .= - '
Begin:' - . "$NLweekdays[$wday], $mday $NLmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'uur
'; - } - else { - $ret .= - '
Valide à partir du:' - . "$FRweekdays[$wday], $mday $FRmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'heure
'; - } - - # end language by AttrVal - - ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) - = undef; - ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) - = localtime( - ReadingsVal( $name, "Warn_" . $i . "_End", "" ) ); - if ( length($hour) == 1 ) { $hour = "0$hour"; } - if ( length($min) == 1 ) { $min = "0$min"; } - - # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['NL'] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['FR'] ) { - $ret .= - ''; - } - else { - $ret .= - ''; - } - - # end language by AttrVal - $ret .= '
Start:' - . "$ENweekdays[$wday], $mday $ENmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'hourEnde:' - . "$DEweekdays[$wday], $mday $DEmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'UhrEinde:' - . "$NLweekdays[$wday], $mday $NLmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'uurJusqu\'au:' - . "$FRweekdays[$wday], $mday $FRmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'heureEnd:' - . "$ENweekdays[$wday], $mday $ENmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'hour
'; - $ret .= ''; + $ret .= UWZHtmlFrame( $hash, "Warn_" . $i, $attr, 0 ); } } else { for ( my $i = 0 ; $i < ReadingsVal( $name, "WarnCount", "" ) ; $i++ ) { - $ret .= -''; - $ret .= - '' - . ReadingsVal( $name, "Warn_" . $i . "_ShortText", "" ) - . '

'; - - my ( - $sec, $min, $hour, $mday, $mon, - $year, $wday, $yday, $isdst - ) - = localtime( - ReadingsVal( $name, "Warn_" . $i . "_Start", "" ) ); - if ( length($hour) == 1 ) { $hour = "0$hour"; } - if ( length($min) == 1 ) { $min = "0$min"; } - - # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['NL'] ) { - $ret .= - '
Anfang:' - . "$DEweekdays[$wday], $mday $DEmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'Uhr
'; - } - elsif ( $hash->{CountryCode} ~~ ['FR'] ) { - $ret .= - '
Begin:' - . "$NLweekdays[$wday], $mday $NLmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'uur
'; - } - else { - $ret .= - '
Valide à partir du:' - . "$FRweekdays[$wday], $mday $FRmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'heure
'; - } - - # end language by AttrVal - - ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) - = undef; - ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) - = localtime( - ReadingsVal( $name, "Warn_" . $i . "_End", "" ) ); - if ( length($hour) == 1 ) { $hour = "0$hour"; } - if ( length($min) == 1 ) { $min = "0$min"; } - - # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['NL'] ) { - $ret .= - ''; - } - elsif ( $hash->{CountryCode} ~~ ['FR'] ) { - $ret .= - ''; - } - else { - $ret .= - ''; - } - - # end language by AttrVal - $ret .= '
Start:' - . "$ENweekdays[$wday], $mday $ENmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'hourEnde:' - . "$DEweekdays[$wday], $mday $DEmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'UhrEinde:' - . "$NLweekdays[$wday], $mday $NLmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'uurJusqu\'au:' - . "$FRweekdays[$wday], $mday $FRmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'heureEnd:' - . "$ENweekdays[$wday], $mday $ENmonths[$mon] " - . ( 1900 + $year ) - . " $hour:$min " - . 'hour
'; - $ret .= ''; + $ret .= UWZHtmlFrame( $hash, "Warn_" . $i, $attr, 0 ); } } $ret .= ''; @@ -2345,8 +1915,8 @@ sub UWZAsHtmlLite($;$) { ##################################### sub UWZAsHtmlFP($;$) { - my ( $name, $items ) = @_; + my $tablewidth = ReadingsVal( $name, "WarnCount", "" ) * 80; my $htmlsequence = AttrVal( $name, "htmlsequence", "none" ); my $htmltitle = AttrVal( $name, "htmltitle", "" ); @@ -2393,8 +1963,8 @@ sub UWZAsHtmlFP($;$) { ##################################### sub UWZAsHtmlMovie($$) { - my ( $name, $land ) = @_; + my $url = Map2Movie( $name, $land ); my $hash = $defs{$name}; @@ -2435,8 +2005,8 @@ sub UWZAsHtmlMovie($$) { ##################################### sub UWZAsHtmlKarteLand($$) { - my ( $name, $land ) = @_; + my $url = Map2Image( $name, $land ); my $hash = $defs{$name}; @@ -2473,6 +2043,93 @@ sub UWZAsHtmlKarteLand($$) { return $ret; } +##################################### +sub UWZHtmlFrame($$$) { + my ( $hash, $readingStart, $attr, $parm ) = @_; + + my $ret = ""; + my $name = $hash->{NAME}; + $ret .= + ''; + $ret .= + '' + . ReadingsVal( $name, $readingStart . "_ShortText", "" ) + . '

'; + $ret .= ReadingsVal( $name, $readingStart . "_LongText", "" ) . '

' + if ($parm); + + $ret .= UWZHtmlTimestamp( $hash, $readingStart . "_Start", $attr ); + $ret .= UWZHtmlTimestamp( $hash, $readingStart . "_End", $attr ); + $ret .= ''; + $ret .= ''; + + return $ret; +} + +##################################### +sub UWZHtmlTimestamp($$$) { + + my @DEText = qw(Anfang: Ende: Uhr); + my @NLText = qw(Begin: Einde: uur); + my @FRText = ( "Valide à partir du:", "Jusqu\'au:", "heure" ); + my @ENText = qw(Start: End: hour); + + my ( $hash, $reading, $attr ) = @_; + + my $ret, my $StartEnd = ""; + my $name = $hash->{NAME}; + + if ( substr( $reading, 7, 1 ) eq "S" ) { + $StartEnd = 0; + $ret .= ''; + } + else { $StartEnd = 1; } + + my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = + localtime( ReadingsVal( $name, $reading, "" ) ); + + if ( length($hour) == 1 ) { $hour = "0$hour"; } + if ( length($min) == 1 ) { $min = "0$min"; } + + # language by AttrVal + if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { + $ret .= + ""; + } + elsif ( $hash->{CountryCode} ~~ ['NL'] ) { + $ret .= + ""; + } + elsif ( $hash->{CountryCode} ~~ ['FR'] ) { + $ret .= + ""; + } + else { + $ret .= + ""; + } + + return $ret; +} + ##################################### sub GetSeverityColor($$) { my ( $name, $uwzlevel ) = @_; @@ -3623,7 +3280,7 @@ sub UWZSearchAreaID($$) { ], "release_status": "stable", "license": "GPL_2", - "version": "v2.2.2", + "version": "v2.2.3", "author": [ "Marko Oldenburg " ],
$DEText[$StartEnd]" + . "$DEweekdays[$wday], $mday $DEmonths[$mon] " + . ( 1900 + $year ) + . " $hour:$min " + . "$DEText[2]$NLText[$StartEnd]" + . "$NLweekdays[$wday], $mday $NLmonths[$mon] " + . ( 1900 + $year ) + . " $hour:$min " + . "$NLText[2]$FRText[$StartEnd]" + . "$FRweekdays[$wday], $mday $FRmonths[$mon] " + . ( 1900 + $year ) + . " $hour:$min " + . "$FRText[2]$ENText[$StartEnd]" + . "$ENweekdays[$wday], $mday $ENmonths[$mon] " + . ( 1900 + $year ) + . " $hour:$min " + . "$ENText[2]