Jsonのデータを解析してソート可能なテーブルにレンダリングする機能をElmで設計しようとしています。Elmのソート可能なテーブル
もちろん、私はJsonデータをレコードのリストに格納するためにデコーダを使用しています。ビューの中では、グリッド内のデータを繰り返し処理したいので、レコードのリストをDictsのリストに変換します。また、グリッドの列にタイトルを付けるためにstrリスト(列)を使用して、データがグリッド内に表示される順序をカスタマイズできるようにします。
resourceDecoder : Decoder Resource
resourceDecoder =
decode Resource
|> required "year" int
|> required "total_amount" string
|> required "seq_type" string
|> required "sent" bool
|> required "parents_id" int
|> required "month" int
|> required "location_id" int
|> required "child" childDecoder
|> required "id" int
childDecoder : Decoder Child
childDecoder =
decode Child
|> required "firstname" string
|> required "lastname" string
responseDecoder : Decoder (List Resource)
responseDecoder =
Json.Decode.list resourceDecoder
recordToDict : Resource -> ResourceDict
recordToDict record =
Dict.fromList
[ ("Year", toString record.year)
, ("Total Amount", record.total_amount)
, ("Sequence Type", record.seq_type)
, ("Sent", toString record.sent)
, ("Parents", toString record.parents_id)
, ("Month", toString record.month)
, ("Location", toString record.location_id)
, ("Firstname", record.child.firstname)
, ("Lastname", record.child.lastname)
, ("id", toString record.id)
]
columnsData : List String
columnsData =
[ "Firstname"
, "Lastname"
, "Year"
, "Total Amount"
, "Sequence Type"
, "Sent"
, "Parents"
, "Month"
, "Location"
]
ここで問題です:私の知る限り、それはキーの値によってdictsのリストをソートすることはできませんので、私は、レコードのentiresをソートする必要があり値の場合(たとえば、子供の名前で並べ替える場合は:
List.sortBy (\r -> r.child.lastname) grid.resources
しかし、列タイトルは文字列であり、必ずしもレコードキーと同じではありません(たとえば、フィールドの場合はr.child.lastname、列タイトルは「姓」です)。とにかく、私の理解はレコードキーです明示的に呼び出さなければならないため、列名をレコード・キーに一致させることはできません。
テーブルの列をクリックしてそのフィールドで並べ替えることができます。例えば:
私は私が書いたことは明らかであると思います。ご協力いただきありがとうございます!
ごめんなさい入力して所望の出力 – halfzebra
を提供するために、あなたの超クールだろう、私は正確にはわかりませんこの文脈では、入力と出力の意味はありますが、イメージが含まれています。 –
https://github.com/evancz/elm-sortable-tableを使ってみたことがありますか?私が知る限り、あなたが望む機能を正確に提供していますか? –