diff --git a/src/Controller/KanjiController.php b/src/Controller/KanjiController.php index c2f61db..98fa4c9 100644 --- a/src/Controller/KanjiController.php +++ b/src/Controller/KanjiController.php @@ -61,7 +61,7 @@ class KanjiController extends AbstractController if (!$force and file_exists($cacheFile)) return require $cacheFile; - $ret = []; + $ret = ['lists' => []]; $lists = [ 'sn' => $this->anki->getKnownSnKanjiCounts(), @@ -70,6 +70,8 @@ class KanjiController extends AbstractController 'ignored' => $this->getIgnoredList(), ]; + $ret['lists'] = $lists; + // @formatter:off $storedLists = [ 'taiwan', 'bushu', 'kyoyou', 'kyuujitai', 'kanken', 'hsk', 'zhcn', @@ -77,13 +79,19 @@ class KanjiController extends AbstractController ]; // @formatter:on foreach ($storedLists as $storedName) { + $ret['lists'][$storedName] = []; $storedList = $this->charList->getList($storedName); // Simple list if (key_exists('chars', $storedList)) { + $ret['lists'][$storedName] = $storedList['chars']; $lists[$storedName] = $storedList['chars']; } else { foreach ($storedList['sublists'] as $subname => $sublist) { + $ret['lists'][$storedName] = array_merge( + $ret['lists'][$storedName], + $sublist['chars'], + ); $lists["$storedName-$subname"] = $sublist['chars']; } } @@ -134,6 +142,7 @@ class KanjiController extends AbstractController } return $this->render(self::tmpl('grid'), [ + 'char_info' => $charInfo, 'characters' => $chars, 'completed' => $completedRows, ]); diff --git a/src/Twig/Extension/AppExtension.php b/src/Twig/Extension/AppExtension.php index eab01da..6c06268 100644 --- a/src/Twig/Extension/AppExtension.php +++ b/src/Twig/Extension/AppExtension.php @@ -18,6 +18,7 @@ class AppExtension extends AbstractExtension // Reference: https://twig.symfony.com/doc/3.x/advanced.html#automatic-escaping new TwigFilter('basename', basename(...)), new TwigFilter('ruby', self::ankiRubyToHtml(...)), + new TwigFilter('intersect_key', array_intersect_key(...)) ]; } diff --git a/templates/kanji/grid.html.twig b/templates/kanji/grid.html.twig index bb8bfd6..6fdbeac 100644 --- a/templates/kanji/grid.html.twig +++ b/templates/kanji/grid.html.twig @@ -141,5 +141,14 @@ {% endif %} {% endfor %} + +
+ {% set learnt_kanken = char_info.lists.unicode|intersect_key(char_info.lists.kanken)|length %} + {% set total_kanken = char_info.lists.kanken|length %} + Kanken {{ learnt_kanken }}/{{ total_kanken }} ({{ ((learnt_kanken/total_kanken) * 100)|number_format(2) }}%) + | + {% set sn_kanken = char_info.lists.sn|intersect_key(char_info.lists.kanken)|length %} + {{ sn_kanken }}/{{ total_kanken }} ({{ ((sn_kanken/total_kanken) * 100)|number_format(2) }}%) +
{% endblock %}