From 00d940dcc91ea8b28a8398124deb65042dd50ba2 Mon Sep 17 00:00:00 2001 From: Jan Michel Date: Wed, 6 Nov 2013 13:35:37 +0100 Subject: [PATCH] Improvements to xml webpage layout --- web/htdocs/layout/blue.css | 56 +++++++++++++++++++++++++++++----- xml-db/get.pl | 61 ++++++++++++++++++++++---------------- 2 files changed, 83 insertions(+), 34 deletions(-) diff --git a/web/htdocs/layout/blue.css b/web/htdocs/layout/blue.css index f587a65..733b68f 100644 --- a/web/htdocs/layout/blue.css +++ b/web/htdocs/layout/blue.css @@ -1,6 +1,7 @@ body { background:#efeff5; color:#445; + transition: background .4s, color .4s, border .4s, box-shadow .4s; } @@ -44,6 +45,8 @@ body { #overview { min-width:1000px; margin:50px 0 0 20px; + resize:horizontal; + overflow:auto; } @@ -252,18 +255,18 @@ div.header span a { div.header span a:hover { } - -.high { + +table.queryresult td.high { background-color:#e0eae0; } -.low { +table.queryresult td.low { background-color:#eae0e0; } -.good { +table.queryresult td.good { background-color:#cfc; } -.bad { +table.queryresult td.bad { background-color:#fcc; } @@ -280,9 +283,9 @@ table.conversion tr td{ } table.queryresult td:first-child, table.queryresult th:first-child{ - width:130px; - max-width:100px; - overflow:hidden; + width:160px; +/* max-width:100px; */ +/* overflow:hidden; */ text-align:left; background:#dde; } @@ -308,3 +311,40 @@ table.queryresult td.slice, table.queryresult th.slice { text-align:center; background:#eee; } + +table.queryresult td { + background:#e0e0e0; +} + + +span.tooltip { + margin-left: -999em; + margin-top: -999em; + z-index: 99; + position: absolute; + left: 1em; + top: 2em; + padding:3px 5px 5px 5px; +/* background:#ffe; */ + background: linear-gradient(135deg, rgba(245,245,238,1) 0%,rgba(255,255,230,1) 100%); + border:2px solid #fff; + color:black; + text-align:left; + font-weight:normal; + min-width: 250px; + border-radius:5px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1); + opacity:0; +} + +th:hover .tooltip, td:hover .tooltip { + margin: 0; + opacity:1; + transition: opacity .4s; + } + +table.queryresult th div, table.queryresult td div { + position:relative; + cursor:default; + min-width:80px; +} \ No newline at end of file diff --git a/xml-db/get.pl b/xml-db/get.pl index 9e05f21..f9497e4 100755 --- a/xml-db/get.pl +++ b/xml-db/get.pl @@ -120,7 +120,7 @@ foreach my $req (@request) { #### Formatting of values ############################### sub FormatPretty { - my ($value,$obj,$cont,$class,$cstr) = @_; + my ($value,$obj,$name,$cont,$class,$cstr) = @_; $value = $value >> ($obj->{start}); $value &= ((1<<$obj->{bits})-1); my $rawvalue = $value; @@ -130,41 +130,46 @@ sub FormatPretty { $cstr = "" unless $cstr; my $ret, my $cl; if (defined $cont) { - $cl = "class=\"$class ".($value?"bad":"good")."\"" if ( $obj->{errorflag} && !$obj->{invertflag}); - $cl = "class=\"$class ".($value?"good":"bad")."\"" if ( $obj->{errorflag} && $obj->{invertflag}); - $cl = "class=\"$class ".($value?"high":"low")."\"" if (!$obj->{errorflag} && !$obj->{invertflag}); - $cl = "class=\"$class ".($value?"low":"high")."\"" if (!$obj->{errorflag} && $obj->{invertflag}); - $cl .= sprintf(" title=\"raw: 0x%x\n$cstr\"",$rawvalue); - $cl .= sprintf(" cstr=\"$cstr\" raw=\"0x%x\"",$rawvalue); + my $isflag = 1; $isflag = 0 if $obj->{noflag}; + $cl = "class=\"$class ".($value?"bad":"good")."\"" if ( $obj->{errorflag} && !$obj->{invertflag} && $isflag); + $cl = "class=\"$class ".($value?"good":"bad")."\"" if ( $obj->{errorflag} && $obj->{invertflag} && $isflag); + $cl = "class=\"$class ".($value?"high":"low")."\"" if (!$obj->{errorflag} && !$obj->{invertflag} && $isflag); + $cl = "class=\"$class ".($value?"low":"high")."\"" if (!$obj->{errorflag} && $obj->{invertflag} && $isflag); + $cl .= sprintf(" cstr=\"$cstr\" raw=\"0x%x\">
",$rawvalue); $ret = "<$cont "; for($obj->{format}) { when ("boolean") { - if($obj->{errorflag}) { $ret .= "$cl>".($value?"true":"false");} - else { $ret .= "$cl>".($value?"true":"false");} + if($obj->{errorflag}) { $ret .= "$cl".($value?"true":"false");} + else { $ret .= "$cl".($value?"true":"false");} } - when ("float") {$ret .= sprintf("$cl>%.2f",$value);} - when ("integer") {$ret .= sprintf("$cl>%i",$value);} - when ("unsigned") {$ret .= sprintf("$cl>%u",$value);} - when ("signed") {$ret .= sprintf("$cl>%d",$value);} - when ("binary") {$ret .= sprintf("$cl>%0".$obj->{bits}."b",$value);} + when ("float") {$ret .= sprintf("$cl%.2f",$value);} + when ("integer") {$ret .= sprintf("$cl%i",$value);} + when ("unsigned") {$ret .= sprintf("$cl%u",$value);} + when ("signed") {$ret .= sprintf("$cl%d",$value);} + when ("binary") {$ret .= sprintf("$cl%0".$obj->{bits}."b",$value);} when ("bitmask") { my $tmp = sprintf("%0".$obj->{bits}."b",$value); $tmp =~ s/0/\□\;/g; $tmp =~ s/1/\■\;/g; - $ret .="$cl>".$tmp; + $ret .= $cl.$tmp; } when ("time") {require Date::Format; $ret .= Date::Format::time2str('>%Y-%m-%d %H:%M',$value);} - when ("hex") {$ret .= sprintf("$cl>0x%0".(int(($obj->{bits}+3)/4))."x",$value);} + when ("hex") {$ret .= sprintf($cl."0x%0".(int(($obj->{bits}+3)/4))."x",$value);} when ("enum") { my $t = sprintf("%x",$value); if (exists $obj->{enumItems}->{$t}) { - $ret .= "$cl>".$obj->{enumItems}->{$t} + $ret .= $cl.$obj->{enumItems}->{$t} } else { - $ret .= "$cl>0x".$t; + $ret .= $cl."0x".$t; } } default {$ret .= sprintf(">%08x",$value);} } + my $range = $obj->{start}+$obj->{bits}-1; + $range .= "..".$obj->{start} if ($obj->{bits}>1); + $ret .= " ".$obj->{unit} if exists $obj->{unit}; + $ret .= sprintf("$name (Bit $range)
raw: 0x%x
$cstr
",$rawvalue); + } else { for($obj->{format}) { @@ -187,8 +192,8 @@ sub FormatPretty { } default {$ret = sprintf("0x%08x",$value);} } + $ret .= " ".$obj->{unit} if exists $obj->{unit}; } - $ret .= " ".$obj->{unit} if exists $obj->{unit}; return $ret; } @@ -261,17 +266,21 @@ sub generateoutput { my $addr = $obj->{address}; - $t .= sprintf("{description}\">".$name,$addr); + $t .= sprintf("
$name$name (0x%04x)
$obj->{description}
",$addr); if($once != 1 && defined $obj->{repeat}) { $t .= "Slice"; } if($obj->{type} eq "registerfield" || $obj->{type} eq "field"){ - $t .= "{description}\">$name"; + my $range = $obj->{start}+$obj->{bits}-1; + $range .= "..".$obj->{start} if ($obj->{bits}>1); + $t .= "
$name$name (Bit $range)
$obj->{description}
"; } elsif($obj->{type} eq "register"){ foreach my $c (@{$obj->{children}}){ $oc = $db->{$c}; - $t .= sprintf("{description}\">$c",$c,$oc->{bits},$oc->{start}); + my $range = $oc->{start}+$oc->{bits}-1; + $range .= "..".$oc->{start} if ($oc->{bits}>1); + $t .= "
$c$c (Bit $range)
$oc->{description}
"; } } my @tarr; @@ -282,16 +291,16 @@ sub generateoutput { foreach my $b (sort keys %{$data->{$addr}}) { my $ttmp = ""; my $sl; - $sl = sprintf("%i",$addr,$slice) if ($once != 1 && defined $obj->{repeat}); + $sl = sprintf("
%i$name.$slice (0x%04x)
",$slice,$addr) if ($once != 1 && defined $obj->{repeat}); - $ttmp .= sprintf("%04x%s",$data->{$addr}->{$b},$b,$sl); + $ttmp .= sprintf("
%04x$name on 0x%04x
raw: 0x%x
%s",$b,$b,$data->{$addr}->{$b},$sl); if($obj->{type} eq "register") { foreach my $c (@{$obj->{children}}) { my $fullc = $c; $fullc .= ".$slice" if ($once != 1 && defined $obj->{repeat}); my $cstr = sprintf("%s-0x%04x-%s", $entity,$b,$fullc ); my $wr = 1 if $db->{$c}->{mode} =~ /w/; - $ttmp .= FormatPretty($data->{$addr}->{$b},$db->{$c},"td",($wr?"editable":""),$cstr); + $ttmp .= FormatPretty($data->{$addr}->{$b},$db->{$c},$c,"td",($wr?"editable":""),$cstr); } } elsif($obj->{type} eq "field" || $obj->{type} eq "registerfield") { @@ -299,7 +308,7 @@ sub generateoutput { $fullc .= ".$slice" if ($once != 1 && defined $obj->{repeat}); my $cstr = sprintf("%s-0x%04x-%s", $entity,$b,$fullc ); my $wr = 1 if $obj->{mode} =~ /w/; - $ttmp .= FormatPretty($data->{$addr}->{$b},$obj,"td",($wr?"editable":""),$cstr); + $ttmp .= FormatPretty($data->{$addr}->{$b},$obj,$fullc,"td",($wr?"editable":""),$cstr); } push (@tarr,$ttmp); } -- 2.43.0