X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/08b6414f6e36757737a9a796c697700e70af05c3..153fca5bc148960bb538bfc43b79b944608d2b2f:/browser.plp?ds=sidebyside diff --git a/browser.plp b/browser.plp index 1158334..beff4a9 100644 --- a/browser.plp +++ b/browser.plp @@ -29,6 +29,10 @@ $_->{verrelease} = { my %CSTATS = ( 'n' => 'l1', + 'n d' => 'l2', + 'n x d' => 'l2 ex', + 'p d' => 'l2', + 'a d' => 'l2', 'y' => 'l5', 'y x' => 'l5 ex', 'a' => 'l3', @@ -46,6 +50,7 @@ my %DSTATS = ( j => 'javascript required', a => 'partial', y => 'supported', + d => 'disabled by default', x => sub { join(' ', 'requires prefix', @@ -73,7 +78,7 @@ my @browsers = keys %versions; print <<'';

Alternate rendition of Fyrd's when can I use... page -my ($canihas, $usage); +my ($canihas, $usage, $minusage); given ($get{usage} // 'wm') { when (!$_) { # none @@ -96,7 +101,8 @@ given ($get{usage} // 'wm') { 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) { + for my $browser (keys %versions) { + my $row = $canihas->{$browser} // {}; my $verlist = $versions{$browser} or next; my %supported = map { $_ => 1 } @$verlist; @@ -111,7 +117,7 @@ if ($usage) { # first() does not work inside given >:( } # build row list for each version - if (my $minusage = .2) { + if ($minusage = $get{threshold} // .5) { my @vershown; # $verlist replacement my ($rowusage, @verrow) = (0); # replacement row tracking for (@$verlist) { @@ -306,7 +312,8 @@ sub saystatuscol { sub saybrowsercols { my ($id, $browser) = @_; - my $data = $caniuse->{data}->{$id}->{stats}->{$browser}; + my $feature = $caniuse->{data}->{$id}; + my $data = $feature->{stats}->{$browser}; if (ref $data eq 'ARRAY') { # special case for unsupported my $release = $caniuse->{agents}->{$browser}->{verrelease}; @@ -327,7 +334,22 @@ sub saybrowsercols { ); unless (!defined $prev or $prev ~~ $compare) { my $usage = sum(@{ $canihas->{$browser} }{ map { @{$_} } @span }); - printf '%s', + + # strip #\d note references from support class + my @notes; + push @notes, $feature->{notes_by_num}->{$1} + while $prev =~ s/\h \# (\d+) \b//x; + + # prepare version hover details + my $title = sprintf('%.1f%% %s', $usage * $usagepct, join(', ', + map { ref $_ eq 'CODE' ? $_->($browser) : $_ } + map { $DSTATS{$_} // () } + map { split / /, $_ } + $prev + )); + $title .= "\n".EscapeHTML($_) for @notes; + + printf('%s', join(' ', X => $CSTATS{$prev}, !$usage ? ('p0') : ('p', @@ -337,13 +359,9 @@ sub saybrowsercols { sprintf('pp%02d', $usage / $usagemax), ), scalar @span, - sprintf('%.1f%% %s', $usage * $usagepct, join(', ', - map { ref $_ eq 'CODE' ? $_->($browser) : $_ } - map { $DSTATS{$_} // () } - map { split / /, $_ } - $prev - )), + $title, showversions($span[0]->[0], @span > 1 ? ($span[-1]->[-1]) : ()), + ); undef $prev; @span = (); } @@ -398,7 +416,7 @@ sub showversions {
supported partial - external (js/plugin) + optional missing unknown prefixed @@ -427,6 +445,8 @@ sub showversions { <:= defined $get{style} && 'set to ' :><:= $style :>
  • usage source is <:= !defined $get{usage} && 'default ' :><:= defined $usage ? "$usage" : 'not included (0)' :> +
  • usage threshold is + <:= defined $get{threshold} && 'changed to ' :><:= $minusage :>%