-
Notifications
You must be signed in to change notification settings - Fork 81
Description
Hello, thanks for this awesome package! I'm doing a lot of work with list-cols and struct-cols with custom cell and aggregate render functions. It's all working great, except when I try to sort by these columns.
To remedy this, what would be really nice is the ability to have sortCell and sortAggregated options in my colDef as Javascript comparator functions. For example, the following would sort a list-col by the number of elements in the column:
df <- tibble(
a = list(
list(1, 2, 3),
list(1),
list(1, 2, 3, 4),
list(1, 2),
list(2),
)
)
reactable(
df,
columns = list(
a = colDef(
sortCell = JS("
function(a, b) {
return a.length - b.length;
}
")
)
)
)Similarly, the following would sort a struct-col by the "sortkey" property:
df <- tibble(
a = list(
list(sortkey = 1, foo = "hello"),
list(sortkey = 10, foo = "world"),
list(sortkey = 2, foo = "foo"),
list(sortkey = 10, foo = "bar"),
list(sortkey = 8, foo = "baz")
)
)
reactable(
df,
columns = list(
a = colDef(
sortCell = JS("
function(a, b) {
return a.sortkey - b.sortkey;
},
")
cell = JS("
function(cellInfo) {
return cellInfo.foo;
}
")
)
)
)sortAggregated would work exactly the same way, but apply to aggregated cells.
Without sortCell and sortAggregated I am resorting to populating my reactable with my desired sortkeys, storing all my actual data in the .meta object, and then doing lookups in my cell and aggregated renderers... Quite a headache, as you can imagine!
Anyway, thanks again for the awesome pkg, and please let me know if there are any other approaches to do this I've overlooked!