リポジトリは zaneli-sandbox/elm-showcase。
管理画面的なやつでよくある感じのあれ。
ヘッダに filtable
, sortable
を指定することで、フィルタ対象・ソート対象の項目を指定できる事にした。
要件としては
- 数値・文字列が混在する場合があり、それでもよしなにソートできるようにする。
- 表示されている値とソート対象の値が一致しない場合がある(「
n%(追加情報)
」と表示するがソートはn
の数値ソート、など)。
といったところ。
これを実現するために、各テーブルセルはItem型で表現し、
List.sortWithでゴニョゴニョやるようにした。
この実装では文字列と数値のOrderが決め打ちになってしまっているが、
細かく制御したければどちらもViewで表せば如何様にもできそう。
各セルにインデックスアクセスするため Array
を、複数のフィルタ条件を保持するのに Dict
を使ったが、
ドキュメント読む限り必要最小限の関数を提供したシンプルなものという印象。
もうちょっと気の利いたものが使いたければ Array.Extra
あたりの利用を検討するとか、そういう感じなのだろうか。
個人的には標準のものだけで十分なように思えた。
zaneli-sandbox/elm-showcase
リポジトリには今回のフィルタ・ソート機能付きテーブル以外にも
練習台用途でちょっとしたものを追加していこうと思う。