mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-20 07:16:03 +00:00
allow undef as valueFormat to skip this reading
git-svn-id: https://svn.fhem.de/fhem/trunk@3865 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
ad2b2ae883
commit
b22b4aa8a7
@ -17,7 +17,7 @@ sub readingsGroup_Initialize($)
|
|||||||
$hash->{UndefFn} = "readingsGroup_Undefine";
|
$hash->{UndefFn} = "readingsGroup_Undefine";
|
||||||
#$hash->{SetFn} = "readingsGroup_Set";
|
#$hash->{SetFn} = "readingsGroup_Set";
|
||||||
$hash->{GetFn} = "readingsGroup_Get";
|
$hash->{GetFn} = "readingsGroup_Get";
|
||||||
$hash->{AttrList} = "mapping separator style nameStyle valueStyle valueFormat timestampStyle noheading:1 notime:1 nostate:1";
|
$hash->{AttrList} = "nameIcons mapping separator style nameStyle valueStyle valueFormat timestampStyle noheading:1 notime:1 nostate:1";
|
||||||
|
|
||||||
$hash->{FW_detailFn} = "readingsGroup_detailFn";
|
$hash->{FW_detailFn} = "readingsGroup_detailFn";
|
||||||
$hash->{FW_summaryFn} = "readingsGroup_detailFn";
|
$hash->{FW_summaryFn} = "readingsGroup_detailFn";
|
||||||
@ -113,6 +113,30 @@ sub readingsGroup_Undefine($$)
|
|||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub lookup($$$$$)
|
||||||
|
{
|
||||||
|
my($mapping,$name,$alias,$reading,$default) = @_;
|
||||||
|
|
||||||
|
if( $mapping ) {
|
||||||
|
if( ref($mapping) eq 'HASH' ) {
|
||||||
|
$default = $mapping->{$name} if( defined($mapping) && defined($mapping->{$name}) );
|
||||||
|
$default = $mapping->{$reading} if( defined($mapping) && defined($mapping->{$reading}) );
|
||||||
|
$default = $mapping->{$name.".".$reading} if( defined($mapping) && defined($mapping->{$name.".".$reading}) );
|
||||||
|
} else {
|
||||||
|
$default = $mapping;
|
||||||
|
}
|
||||||
|
|
||||||
|
$default =~ s/\%ALIAS/$alias/g;
|
||||||
|
$default =~ s/\%DEVICE/$name/g;
|
||||||
|
$default =~ s/\%READING/$reading/g;
|
||||||
|
|
||||||
|
$default =~ s/\$ALIAS/$alias/g;
|
||||||
|
$default =~ s/\$READING/$name/g;
|
||||||
|
$default =~ s/\$DEVICE/$reading/g;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $default;
|
||||||
|
}
|
||||||
sub
|
sub
|
||||||
readingsGroup_2html($)
|
readingsGroup_2html($)
|
||||||
{
|
{
|
||||||
@ -143,6 +167,11 @@ readingsGroup_2html($)
|
|||||||
$mapping = eval $mapping if( $mapping =~ m/^{.*}$/ );
|
$mapping = eval $mapping if( $mapping =~ m/^{.*}$/ );
|
||||||
#$mapping = undef if( ref($mapping) ne 'HASH' );
|
#$mapping = undef if( ref($mapping) ne 'HASH' );
|
||||||
|
|
||||||
|
my $nameIcons = AttrVal( $d, "nameIcons", "");
|
||||||
|
$nameIcons = eval $nameIcons if( $nameIcons =~ m/^{.*}$/ );
|
||||||
|
#$nameIcons = undef if( ref($nameIcons) ne 'HASH' );
|
||||||
|
|
||||||
|
|
||||||
my $devices = $hash->{DEVICES};
|
my $devices = $hash->{DEVICES};
|
||||||
|
|
||||||
my $ret;
|
my $ret;
|
||||||
@ -173,9 +202,6 @@ readingsGroup_2html($)
|
|||||||
|
|
||||||
my $v = FW_htmlEscape($val);
|
my $v = FW_htmlEscape($val);
|
||||||
|
|
||||||
$ret .= sprintf("<tr class=\"%s\">", ($row&1)?"odd":"even");
|
|
||||||
$row++;
|
|
||||||
|
|
||||||
my $name_style = $name_style;
|
my $name_style = $name_style;
|
||||||
if(defined($name_style) && $name_style =~ m/^{.*}$/) {
|
if(defined($name_style) && $name_style =~ m/^{.*}$/) {
|
||||||
my $DEVICE = $name;
|
my $DEVICE = $name;
|
||||||
@ -206,29 +232,24 @@ readingsGroup_2html($)
|
|||||||
my $VALUE = $v;
|
my $VALUE = $v;
|
||||||
$value_format = eval $value_format;
|
$value_format = eval $value_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
next if( !defined($value_format) );
|
||||||
|
|
||||||
$v = sprintf( $value_format, $v ) if( $value_format );
|
$v = sprintf( $value_format, $v ) if( $value_format );
|
||||||
}
|
}
|
||||||
|
|
||||||
my $a = AttrVal($name, "alias", $name);
|
my $a = AttrVal($name, "alias", $name);
|
||||||
my $m = "$a$separator$n";
|
my $m = "$a$separator$n";
|
||||||
|
my $txt = lookup($mapping,$name,$a,$n,$m);
|
||||||
|
|
||||||
if( $mapping ) {
|
if( my $icon = lookup($nameIcons,$name,$a,$n,$m) ) {
|
||||||
if( ref($mapping) eq 'HASH' ) {
|
$txt = FW_makeImage( $icon, $txt, "icon" );
|
||||||
$m = $mapping->{$n} if( defined($mapping) && defined($mapping->{$n}) );
|
|
||||||
$m = $mapping->{$name.".".$n} if( defined($mapping) && defined($mapping->{$name.".".$n}) );
|
|
||||||
} else {
|
|
||||||
$m = $mapping;
|
|
||||||
}
|
|
||||||
$m =~ s/\%DEVICE/$name/g;
|
|
||||||
$m =~ s/\%READING/$n/g;
|
|
||||||
$m =~ s/\%ALIAS/$a/g;
|
|
||||||
|
|
||||||
$m =~ s/\$DEVICE/$name/g;
|
|
||||||
$m =~ s/\$READING/$n/g;
|
|
||||||
$m =~ s/\$ALIAS/$a/g;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret .= "<td><div $name_style class=\"dname\"><a href=\"/fhem?detail=$name\">$m</a></div></td>";
|
$ret .= sprintf("<tr class=\"%s\">", ($row&1)?"odd":"even");
|
||||||
|
$row++;
|
||||||
|
|
||||||
|
$ret .= "<td><div $name_style class=\"dname\"><a href=\"/fhem?detail=$name\">$txt</a></div></td>";
|
||||||
$ret .= "<td><div $value_style\">$v</div></td>";
|
$ret .= "<td><div $value_style\">$v</div></td>";
|
||||||
$ret .= "<td><div></div>$fmtDateTime</td>" if( $show_time );
|
$ret .= "<td><div></div>$fmtDateTime</td>" if( $show_time );
|
||||||
}
|
}
|
||||||
@ -244,9 +265,6 @@ readingsGroup_2html($)
|
|||||||
$v = FW_htmlEscape($v);
|
$v = FW_htmlEscape($v);
|
||||||
$t = "" if(!$t);
|
$t = "" if(!$t);
|
||||||
|
|
||||||
$ret .= sprintf("<tr class=\"%s\">", ($row&1)?"odd":"even");
|
|
||||||
$row++;
|
|
||||||
|
|
||||||
my $name_style = $name_style;
|
my $name_style = $name_style;
|
||||||
if(defined($name_style) && $name_style =~ m/^{.*}$/) {
|
if(defined($name_style) && $name_style =~ m/^{.*}$/) {
|
||||||
my $DEVICE = $name;
|
my $DEVICE = $name;
|
||||||
@ -277,29 +295,24 @@ readingsGroup_2html($)
|
|||||||
my $VALUE = $v;
|
my $VALUE = $v;
|
||||||
$value_format = eval $value_format;
|
$value_format = eval $value_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
next if( !defined($value_format) );
|
||||||
|
|
||||||
$v = sprintf( $value_format, $v ) if( $value_format );
|
$v = sprintf( $value_format, $v ) if( $value_format );
|
||||||
}
|
}
|
||||||
|
|
||||||
my $a = AttrVal($name, "alias", $name);
|
my $a = AttrVal($name, "alias", $name);
|
||||||
my $m = "$a$separator$n";
|
my $m = "$a$separator$n";
|
||||||
|
my $txt = lookup($mapping,$name,$a,$n,$m);
|
||||||
|
|
||||||
if( $mapping ) {
|
if( my $icon = lookup($nameIcons,$name,$a,$n,$m) ) {
|
||||||
if( ref($mapping) eq 'HASH' ) {
|
$txt = FW_makeImage( $icon, $txt, "icon" );
|
||||||
$m = $mapping->{$n} if( defined($mapping) && defined($mapping->{$n}) );
|
|
||||||
$m = $mapping->{$name.".".$n} if( defined($mapping) && defined($mapping->{$name.".".$n}) );
|
|
||||||
} else {
|
|
||||||
$m = $mapping;
|
|
||||||
}
|
|
||||||
$m =~ s/\%DEVICE/$name/g;
|
|
||||||
$m =~ s/\%READING/$n/g;
|
|
||||||
$m =~ s/\%ALIAS/$a/g;
|
|
||||||
|
|
||||||
$m =~ s/\$DEVICE/$name/g;
|
|
||||||
$m =~ s/\$READING/$n/g;
|
|
||||||
$m =~ s/\$ALIAS/$a/g;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret .= "<td><div $name_style class=\"xdname\"><a href=\"/fhem?detail=$name\">$m</a></div></td>";
|
$ret .= sprintf("<tr class=\"%s\">", ($row&1)?"odd":"even");
|
||||||
|
$row++;
|
||||||
|
|
||||||
|
$ret .= "<td><div $name_style class=\"dname\"><a href=\"/fhem?detail=$name\">$txt</a></div></td>";
|
||||||
$ret .= "<td><div $value_style informId=\"$d-$name.$n\">$v</div></td>";
|
$ret .= "<td><div $value_style informId=\"$d-$name.$n\">$v</div></td>";
|
||||||
$ret .= "<td><div $timestamp_style informId=\"$d-$name.$n-ts\">$t</div></td>" if( $show_time );
|
$ret .= "<td><div $timestamp_style informId=\"$d-$name.$n-ts\">$t</div></td>" if( $show_time );
|
||||||
}
|
}
|
||||||
@ -539,7 +552,8 @@ readingsGroup_Get($@)
|
|||||||
Specify an HTML style for the reading values, e.g.:<br>
|
Specify an HTML style for the reading values, e.g.:<br>
|
||||||
<code>attr temperatures valueStyle style="text-align:right"</code></li>
|
<code>attr temperatures valueStyle style="text-align:right"</code></li>
|
||||||
<li>valueFormat<br>
|
<li>valueFormat<br>
|
||||||
Specify an sprintf style format string used to display the reading values. Can be given as a string,
|
Specify an sprintf style format string used to display the reading values. If the format string is undef
|
||||||
|
this reading will be skipped. Can be given as a string,
|
||||||
a perl expression returninga hash or a perl expression returning a string, e.g.:<br>
|
a perl expression returninga hash or a perl expression returning a string, e.g.:<br>
|
||||||
<code>attr temperatures valueFormat %.1f °C</code></br>
|
<code>attr temperatures valueFormat %.1f °C</code></br>
|
||||||
<code>attr temperatures valueFormat { temperature => "%.1f °C", humidity => "%.1f %" }</code></br>
|
<code>attr temperatures valueFormat { temperature => "%.1f °C", humidity => "%.1f %" }</code></br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user