Elm 榆树中的可排序表

Elm 榆树中的可排序表,elm,Elm,我正在尝试在Elm中设计一个特性,该特性解析Json中的数据,然后将其呈现在可排序的表中 当然,我使用解码器将Json数据存储在记录列表中;然后在视图中,我将记录列表转换为dict列表,因为我想迭代网格中的数据。我还使用str列表columns为网格中的列提供标题,以确保数据在网格中的显示顺序是可自定义的 resourceDecoder:解码器资源 资源解码器= 解码资源 |>所需的“年”整数 |>必需的“总金额”字符串 |>必需的“序列类型”字符串 |>必需的“已发送”布尔值 |>必需的“家长

我正在尝试在Elm中设计一个特性,该特性解析Json中的数据,然后将其呈现在可排序的表中

当然,我使用解码器将Json数据存储在记录列表中;然后在视图中,我将记录列表转换为dict列表,因为我想迭代网格中的数据。我还使用str列表columns为网格中的列提供标题,以确保数据在网格中的显示顺序是可自定义的

resourceDecoder:解码器资源
资源解码器=
解码资源
|>所需的“年”整数
|>必需的“总金额”字符串
|>必需的“序列类型”字符串
|>必需的“已发送”布尔值
|>必需的“家长id”int
|>所需的“月”整数
|>所需的“位置id”int
|>必需的“子”子解码器
|>必需的“id”int
childDecoder:解码器子级
儿童解码器=
解码子对象
|>必需的“firstname”字符串
|>必需的“lastname”字符串
响应编码器:解码器(列表资源)
响应编码器=
Json.Decode.list resourceDecoder
recordToDict:Resource->ResourceDict
记录=
口述从句表
[(“年”,toString record.Year)
,(“总金额”,记录总金额)
,(“序列类型”,record.seq_类型)
,(“已发送”,toString record.Sent)
,(“家长”,toString记录.Parents\u id)
,(“月”,toString record.Month)
,(“位置”,toString record.Location\u id)
,(“Firstname”,record.child.Firstname)
,(“Lastname”,record.child.Lastname)
,(“id”,toString record.id)
]
columnsData:列表字符串
柱状图=
[“名字”
,“姓氏”
“年”
,“总金额”
,“序列类型”
,“已发送”
“父母”
“月”
,“地点”
]
问题是:据我所知,不可能按键的值对dict列表进行排序,因此我必须按值对记录实体进行排序(例如,如果我想按孩子的名字排序,请使用:

List.sortBy(\r->r.child.lastname)grid.resources
但是,列标题是字符串,并不总是与记录键相同(例如,对于字段r.child.lastname,列标题为“lastname”)。无论如何,我的理解是必须显式调用记录键,因此无法将列名与记录键匹配

我希望能够单击表列并按该字段排序;例如:


我希望我写得很清楚。谢谢你的帮助!

我们把专栏数据作为一份口述如何 钥匙和标题? 然后使用键对Dict列表进行排序

(我定义了
Key
,以澄清哪个
String
是资源的键)

type alias Key=String
columnsData:Dict.Dict字符串键
columnsData=Dict.fromList
[(“名字”,“名字”)
,(“姓氏”、“姓氏”)
,(“年”,“年”)
,(“总金额”,“总金额”)
,(“序列类型”,“序列类型”)
,(“已发送”、“已发送”)
,(“父母”,“父母”)
(“月”、“月”)
,(“地点”,“地点”)
]
排序:键->列表资源目录->列表资源目录
排序键指令=
让

getVal dict=Maybe.withDefault“-”如果你能提供输入和所需的输出,那就太酷了。对不起,我不确定你在这里所说的输入和输出到底是什么意思,但我已经包括了一个图像。你有没有考虑过使用哪一个-据我所知-提供你想要的功能?似乎你真的无法向其中添加样式或表单等。我希望能够使其非常可定制。可以将Mdl包与可排序表一起使用吗?这就成功了!事实上,由于资源已经是dict,我不必将列设置为dict,只需设置字符串列表。但您建议的排序函数正是我所要的。