在 R ShinyProxy 中,如何在用户使用 extensions = 'ColReorder' 重新排序后从 DT::datatable 获取列的顺序?
In R ShinyProxy, how do I get the order of columns from a DT::datatable after a user has re-ordered them using extensions = 'ColReorder'?
我在 ShinyProxy 中有一个 Shiny 应用程序,需要用户登录才能访问。我在应用程序中有一个 DT::datatable 允许用户重新排序列(大约有 20-30 列数据,所以重新排序它们很痛苦)。如果他们首先对列重新排序,然后使用任何 filters/slicers,则列将重新排序回默认值;如果他们离开应用程序并重新打开它,列将恢复为默认顺序。
我想给用户一个 "save column order" ActionButton,然后将每个用户的这些设置存储在 Redis 中,这样当他们使用过滤器 and/or 离开并重新进入应用程序时,他们有他们喜欢的列顺序而不是我设置的默认顺序 - 想让他们更容易!!
我发现这个网站 (https://rstudio.github.io/DT/shiny.html) 让我很接近,但没有雪茄。我在想它可能类似于 input$tableId_columns_all
或 input$tableId_columns
- 然而,那些没有 work/returned NA.
我已经尝试了大量的谷歌搜索,我发现大多数看起来他们能给我答案的东西都是 Python 或 jQuery,我认为这不会解决我的问题.
我愿意接受遵循我想到的 ActionButton + redis 方法或完全不同的想法的建议!我真的只是想在 ShinyProxy 中保存用户设置。
谢谢!!
我不知道你如何save/restore下订单,但你可以通过以下方式获得订单:
library(shiny)
library(DT)
js <- c(
"table.on('column-reorder', function(e, settings, details){",
" Shiny.setInputValue('colOrder', details.mapping);",
"});"
)
ui <- fluidPage(
br(),
DTOutput("tbl"),
br(),
verbatimTextOutput("columnsOrder")
)
server <- function(input, output, session){
output[["tbl"]] <- renderDT({
datatable(iris[1:5,], extensions = "ColReorder",
callback = JS(js),
options = list(
colReorder = TRUE
)
)
})
output[["columnsOrder"]] <- renderPrint({
input[["colOrder"]]
})
}
shinyApp(ui, server)
我在 ShinyProxy 中有一个 Shiny 应用程序,需要用户登录才能访问。我在应用程序中有一个 DT::datatable 允许用户重新排序列(大约有 20-30 列数据,所以重新排序它们很痛苦)。如果他们首先对列重新排序,然后使用任何 filters/slicers,则列将重新排序回默认值;如果他们离开应用程序并重新打开它,列将恢复为默认顺序。
我想给用户一个 "save column order" ActionButton,然后将每个用户的这些设置存储在 Redis 中,这样当他们使用过滤器 and/or 离开并重新进入应用程序时,他们有他们喜欢的列顺序而不是我设置的默认顺序 - 想让他们更容易!!
我发现这个网站 (https://rstudio.github.io/DT/shiny.html) 让我很接近,但没有雪茄。我在想它可能类似于 input$tableId_columns_all
或 input$tableId_columns
- 然而,那些没有 work/returned NA.
我已经尝试了大量的谷歌搜索,我发现大多数看起来他们能给我答案的东西都是 Python 或 jQuery,我认为这不会解决我的问题.
我愿意接受遵循我想到的 ActionButton + redis 方法或完全不同的想法的建议!我真的只是想在 ShinyProxy 中保存用户设置。
谢谢!!
我不知道你如何save/restore下订单,但你可以通过以下方式获得订单:
library(shiny)
library(DT)
js <- c(
"table.on('column-reorder', function(e, settings, details){",
" Shiny.setInputValue('colOrder', details.mapping);",
"});"
)
ui <- fluidPage(
br(),
DTOutput("tbl"),
br(),
verbatimTextOutput("columnsOrder")
)
server <- function(input, output, session){
output[["tbl"]] <- renderDT({
datatable(iris[1:5,], extensions = "ColReorder",
callback = JS(js),
options = list(
colReorder = TRUE
)
)
})
output[["columnsOrder"]] <- renderPrint({
input[["colOrder"]]
})
}
shinyApp(ui, server)