X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/2ef0b40d9a8c7e7309fdedc1fea12cadf2edf75c..5c6226f7284e7b0ce87825f4a90d083d03f94388:/browser.plp diff --git a/browser.plp b/browser.plp index 53be344..da50b2d 100644 --- a/browser.plp +++ b/browser.plp @@ -68,8 +68,7 @@ if (my ($somerow) = values %{ $caniuse->{data} }) { $versions{$browser} = [ sort { paddedver($a) cmp paddedver($b) } keys %$row ]; } } -my @browsers = grep { $versions{$_} } - qw(trident gecko webkit_saf ios_saf webkit_chr android presto op_mob op_mini); +my @browsers = keys %versions; print <<'';

Alternate rendition of Fyrd's when can I use... page @@ -94,11 +93,14 @@ given ($get{usage} // 'wm') { $ref .= " $_" for $canihas->{-date} || (); print "\nwith $ref browser usage statistics"; } -if ($usage) { - # first() does not work inside given >:( +if ($usage) { # first() does not work inside given >:( + # adapt version usage to actual support data + my %engineuse; # prefix => usage sum while (my ($browser, $row) = each %$canihas) { my $verlist = $versions{$browser} or next; my %supported = map { $_ => 1 } @$verlist; + + # cascade unknown versions $row->{$_} //= undef for @$verlist; # ensure stable keys during iteration while (my ($version, $usage) = each %$row) { next if defined $supported{$version}; @@ -107,7 +109,28 @@ if ($usage) { $row->{$next} += $usage; $row->{$version} = 0; # balance browser total } + + # reusable aggregates (grouped by prefix (engine) and browser) + $engineuse{ $caniuse->{agents}->{$browser}->{prefix} } += + $row->{-total} = sum(values %$row); } + + # order browser columns by usage grouped by engine + @browsers = sort { + $engineuse{ $caniuse->{agents}->{$b}->{prefix} } <=> + $engineuse{ $caniuse->{agents}->{$a}->{prefix} } + || + $canihas->{$b}->{-total} <=> $canihas->{$a}->{-total} + } @browsers; +} +else { + # order browser columns by name grouped by engine + @browsers = sort { + $caniuse->{agents}->{$b}->{prefix} cmp + $caniuse->{agents}->{$a}->{prefix} + || + $a cmp $b + } @browsers; } :>.

@@ -131,7 +154,7 @@ my $usagemax = (max(map { ref $_ eq 'HASH' && sum(values %$_) } values %$canihas my $usagepct = 1; # score multiplier for 0..100 result # normalise usage percentage to only include shown browsers -$usagepct = 100 / featurescore({ # yes for every possible version +$usagepct = 100.01 / featurescore({ # yes for every possible version map { $_ => { map {$_ => 'y'} @{$versions{$_}} } } keys %versions }); @@ -151,7 +174,7 @@ my $header = join('', $_, @{ $caniuse->{agents}->{$_} }{'prefix', 'type'}, ), join(' ', - sprintf('%.1f%%', sum(values %{ $canihas->{$_} }) * $usagepct), + sprintf('%.1f%%', $canihas->{$_}->{-total} * $usagepct), $name, ), do {