browser: truncate maximum usage score to 99
[sheet.git] / browser.plp
index effda377a2f9bbf1e5ce3564c2010238ac2c2923..a135d357c861c5279c3b7a27b21eebb5d12ba9b9 100644 (file)
@@ -195,7 +195,7 @@ $canihas ||= {
 
 my $usagepct = 1;  # score multiplier for 0..100 result
 # normalise usage percentage to only include shown browsers
 
 my $usagepct = 1;  # score multiplier for 0..100 result
 # normalise usage percentage to only include shown browsers
-$usagepct = 100.01 / featurescore({  # yes for every possible version
+$usagepct = 99.99 / featurescore({  # yes for every possible version
        map { $_ => { map {$_ => 'y'} map { @{$_} } @{$versions{$_}} } } keys %versions
 });
 $_->{usage} = featurescore($_->{stats}) * $usagepct
        map { $_ => { map {$_ => 'y'} map { @{$_} } @{$versions{$_}} } } keys %versions
 });
 $_->{usage} = featurescore($_->{stats}) * $usagepct
@@ -232,15 +232,15 @@ print '<thead>', $header;
 # preceding row without any colspan to work around gecko bug
 print "\n<tr>";
 for my $browser (@browsers) {
 # preceding row without any colspan to work around gecko bug
 print "\n<tr>";
 for my $browser (@browsers) {
-       for (@{ $versions{$browser} }) {
+       for my $span (@{ $versions{$browser} }) {
                my $lastver = first {
                        !defined $caniuse->{agents}->{$browser}->{verrelease}->{$_} # stable
                my $lastver = first {
                        !defined $caniuse->{agents}->{$browser}->{verrelease}->{$_} # stable
-               } reverse @{$_};
+               } reverse @{$span};
                printf('<td title="%s"%s>%s',
                        join(' ',
                printf('<td title="%s"%s>%s',
                        join(' ',
-                               sprintf('%.1f%%', sum(@{ $canihas->{$browser} }{@$_}) * $usagepct),
-                               'version ' . showversions(@{$_}, undef),
-                               $_->[-1] eq $lastver ? () : '(development)',
+                               sprintf('%.1f%%', sum(@{ $canihas->{$browser} }{ @{$span} }) * $usagepct),
+                               'version ' . showversions(@{$span}, undef),
+                               $span->[-1] eq $lastver ? () : '(development)',
                        ),
                        !defined $lastver && ' class="ex"',
                        showversions($lastver),
                        ),
                        !defined $lastver && ' class="ex"',
                        showversions($lastver),
@@ -389,7 +389,12 @@ sub saybrowsercols {
                        || 'u'                       # unsure
                );
                unless (!defined $prev or $prev ~~ $compare) {
                        || 'u'                       # unsure
                );
                unless (!defined $prev or $prev ~~ $compare) {
-                       my $usage = sum(@{ $canihas->{$browser} }{ map { @{$_} } @span });
+                       my @vercover = (map { @{$_} } @span);
+                       for ($ver ? @{$ver} : ()) {
+                               $data->{$_} eq $data->{$vercover[-1]} or last;
+                               push @vercover, $_;  # matches from next span start
+                       }
+                       my $usage = sum(@{ $canihas->{$browser} }{@vercover});
 
                        # strip #\d note references from support class
                        my @notes;
 
                        # strip #\d note references from support class
                        my @notes;
@@ -398,13 +403,13 @@ sub saybrowsercols {
 
                        # prepare version hover details
                        my $title = sprintf('%.1f%% %s', $usage * $usagepct, join(' ',
 
                        # prepare version hover details
                        my $title = sprintf('%.1f%% %s', $usage * $usagepct, join(' ',
-                               (map { ref $_ eq 'CODE' ? $_->($browser, $span[0]->[0]) : $_ }
+                               (map { ref $_ eq 'CODE' ? $_->($browser, $vercover[0]) : $_ }
                                 map { $DSTATS{$_} // () }
                                 map { split / /, $_ }
                                 $prev
                                ),
                                'in', $caniuse->{agents}->{$browser}->{abbr},
                                 map { $DSTATS{$_} // () }
                                 map { split / /, $_ }
                                 $prev
                                ),
                                'in', $caniuse->{agents}->{$browser}->{abbr},
-                               showversions((map { @{$_} } @span), undef),
+                               showversions(@vercover, undef),
                        ));
                        $title .= "\n$_" for notestotitle(@notes);
 
                        ));
                        $title .= "\n$_" for notestotitle(@notes);