keyboard/altgr/index: calculate maximum inventory without names
[sheet.git] / keyboard / altgr / index.inc.plp
index e9179c63d7234055f12890e4817595acbc5388ac..c6accc7669958fa79fd273e60ec06dae8414a54c 100644 (file)
@@ -8,7 +8,7 @@ my $indexfile = "$dirbase/index";
 
 Html({
        title => "altgr keyboard cheat sheets",
-       version => '1.2',
+       version => '1.3',
        description => [
                "Overview of alternate keyboard modes,",
                "offering extended Unicode characters if a modifier key",
@@ -111,7 +111,9 @@ img {
 :>
 <h1>Extended keyboards</h1>
 
-<p>Overview of available key layouts with AltGr or similar modifier keys.</p>
+<p>Overview of available key layouts with AltGr or similar modifier keys.
+Also see <a href="/digraphs">digraphs</a> for compose key combinations.
+</p>
 
 <:
 my $idx = Data($indexfile);
@@ -137,7 +139,9 @@ if (@sample) {
        print "<th>$_" for @sample;
        say '</tr></thead>';
 }
-my $most = max(map { sum values %{ $_->{inventory}{''} } } %{$idx}{@incs});
+my $most = max(
+       map { sum values %{$_} } map { $_->{inventory}{''} } @{$idx}{@incs}
+);
 for my $inc (@incs) {
        my $table = $idx->{$inc};
        print @sample ? '<tr><th>' : '<figure>';
@@ -157,7 +161,8 @@ for my $inc (@incs) {
                print '</a>', "\n\t";
                for my $mode ($table->{mode} ? sort keys %{ $table->{mode} } : '') {
                        print '<span class=graph>';
-                       printf '<label>%s</label>', s/\s.*//r for $table->{def}{''}{$mode}[1] || ();
+                       printf "<label>%s</label>", m/^(\S*)/
+                               for $mode && $table->{mode}{$mode} || ();
                        for my $g (sort keys %{ $table->{inventory}{$mode} }) {
                                printf '<span class="%s" style="width:%.0f%%" title="%3$d %4$s"> %s</span>',
                                        $g, $_/$most*100, $_,
@@ -169,14 +174,19 @@ for my $inc (@incs) {
                        say '</span>';
                }
                print "\t<td class=ni>";
-               print join ' ', map { $caticon{$_} // () } split m{/}, $table->{category} // '';
+               print join ' ', map { $caticon{$_} // () }
+                       split m{/}, $table->{category} // '';
                say '';
                if (my $keys = eval {
                        my $keydata = Data("$dirbase/$inc.eng");
                        Shiar_Sheet::Keyboard->new($keydata)
                }) {
-                       $keys->print_key('', $_, ($keys->{def}{''}{$_} // ['ni']) =~ s/ mode\S*//r)
-                               for @sample;
+                       for my $c (@sample) {
+                               my $def = $keys->{def}{''}{$c} // [];
+                               $def->[0] //= 'ni';
+                               $def->[0] =~ s/ mode\S*//;
+                               $keys->print_key('', $c, $def);
+                       }
                }
                say '</tr>';
        }