From: Mischa POSLAWSKY Date: Fri, 17 Dec 2010 20:17:08 +0000 (+0100) Subject: browser: order browser columns by usage X-Git-Tag: v1.5~103 X-Git-Url: http://git.shiar.nl/sheet.git/commitdiff_plain/261b9c195cbae548640d3c6a58fa057a45afc7b3 browser: order browser columns by usage --- diff --git a/browser.plp b/browser.plp index 8c6b5ed..9f8adf7 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 ie gecko firefox webkit_saf safari ios_saf webkit_chr chrome android presto opera 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,19 @@ 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; } :>.

@@ -151,7 +165,7 @@ my $header = join('', $_, @{ $caniuse->{agents}->{$_} }{'prefix', 'type'}, ), join(' ', - sprintf('%.1f%%', sum(values %{ $canihas->{$_} }) * $usagepct), + sprintf('%.1f%%', $canihas->{$_}->{-total} * $usagepct), $name, ), do {