diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VNDB/Func.pm | 32 | ||||
-rw-r--r-- | lib/VNDB/Handler/Tags.pm | 9 |
2 files changed, 35 insertions, 6 deletions
diff --git a/lib/VNDB/Func.pm b/lib/VNDB/Func.pm index a472d2e2..952f214c 100644 --- a/lib/VNDB/Func.pm +++ b/lib/VNDB/Func.pm @@ -5,8 +5,8 @@ use strict; use warnings; use YAWF ':html'; use Exporter 'import'; -use POSIX 'strftime'; -our @EXPORT = qw| shorten age date datestr monthstr userstr bb2html gtintype liststat clearfloat cssicon |; +use POSIX 'strftime', 'ceil', 'floor'; +our @EXPORT = qw| shorten age date datestr monthstr userstr bb2html gtintype liststat clearfloat cssicon tagscore|; # I would've done this as a #define if this was C... @@ -237,5 +237,33 @@ sub cssicon { } +# Tag score in html tags, argument: score, users +sub tagscore { + my $s = shift; + div class => 'taglvl', style => sprintf('width: %.0fpx', ($s-floor($s))*10), ' ' if $s < 0 && $s-floor($s) > 0; + for(-3..3) { + div(class => "taglvl taglvl0", sprintf '%.1f', $s), next if !$_; + if($_ < 0) { + if($s > 0 || floor($s) > $_) { + div class => "taglvl taglvl$_", ' '; + } elsif(floor($s) != $_) { + div class => "taglvl taglvl$_ taglvlsel", ' '; + } else { + div class => "taglvl taglvl$_ taglvlsel", style => sprintf('width: %.0fpx', 10-($s-$_)*10), ' '; + } + } else { + if($s < 0 || ceil($s) < $_) { + div class => "taglvl taglvl$_", ' '; + } elsif(ceil($s) != $_) { + div class => "taglvl taglvl$_ taglvlsel", ' '; + } else { + div class => "taglvl taglvl$_ taglvlsel", style => sprintf('width: %.0fpx', 10-($_-$s)*10), ' '; + } + } + } + div class => 'taglvl', style => sprintf('width: %.0fpx', (ceil($s)-$s)*10), ' ' if $s > 0 && ceil($s)-$s > 0; +} + + 1; diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index 88fa96ef..0d2e7410 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -102,7 +102,7 @@ sub tagpage { my($s, $n, $l) = @_; Tr $n % 2 ? (class => 'odd') : (); td class => 'tc1'; - txt sprintf '%.2f ', $l->{rating}; + tagscore $l->{rating}; i sprintf '(%d)', $l->{users}; end; td class => 'tc2'; @@ -327,9 +327,10 @@ sub vntagmod { td class => 'tc1'; a href => "/g$t->{id}", $t->{name}; end; - td class => 'tc2', sprintf '%.2f (%d)', - !$m->{vote} ? $t->{rating} : $t->{users} == 1 ? 0 : ($t->{rating}*$t->{users} - $m->{vote}) / ($t->{users}-1), - $t->{users} - ($m->{vote} ? 1 : 0); + td class => 'tc2'; + tagscore !$m->{vote} ? $t->{rating} : $t->{users} == 1 ? 0 : ($t->{rating}*$t->{users} - $m->{vote}) / ($t->{users}-1); + i ' ('.($t->{users} - ($m->{vote} ? 1 : 0)).')'; + end; td class => 'tc3', sprintf '%.2f', $t->{spoiler}; td class => 'tc4', $m->{vote}||0; td class => 'tc5', defined $m->{spoiler} ? $m->{spoiler} : -1; |