我正在查看上一个问题 Collapse rowGroup Shiny 以及提供的解决方案。
library(shiny)
library(DT)
ui <- fluidPage(# Application title
titlePanel("Collapse/Expand table"),
mainPanel(DTOutput("my_table")))
callback_js <- JS(
"table.on('click', 'tr.dtrg-group', function () {",
" var rowsCollapse = $(this).nextUntil('.dtrg-group');",
" $(rowsCollapse).toggleClass('hidden');",
"});",
"table.one('init', () => $('#my_table .dtrg-group').trigger('click'))"
)
server <- function(input, output) {
output$my_table <- DT::renderDT({
datatable(
mtcars[1:15, 1:5],
extensions = 'RowGroup',
options = list(rowGroup = list(dataSrc = 2), pageLength = 20),
callback = callback_js,
selection = 'none'
)
})
}
# Run the application
shinyApp(ui = ui, server = server)
我设法增强了 JS,使该表的唤醒视图折叠起来。此示例中的数据基于 dataSrc = 2 进行折叠,该 dataSrc = 2 对应于 mtcards 表的第二列,即“cyl”列。我需要什么:当表格折叠时,我需要能够看到每个气缸类别的汽车数量。我怎样才能做到这一点?
这是一个示例,其中通过编辑相应的
innerHTML
将每个类别的计数写入折叠的行组中。您可以通过将以下 JS
添加到回调中来获得此信息。
table.on('init', () => $('#my_table .dtrg-group').each(function(i, obj) {
var grpcount = $(this).nextUntil('.dtrg-group').length.toString();
this.innerHTML = this.innerHTML.replace('</th>', ', count: ' + grpcount + '</th>');
}));"
library(shiny)
library(DT)
ui <- fluidPage(# Application title
titlePanel("Collapse/Expand table"),
mainPanel(DTOutput("my_table")))
callback_js <- JS(
"table.on('click', 'tr.dtrg-group', function () {",
" var rowsCollapse = $(this).nextUntil('.dtrg-group');",
" $(rowsCollapse).toggleClass('hidden');",
"});",
"table.one('init', () => $('#my_table .dtrg-group').trigger('click'))",
"table.on('init', () => $('#my_table .dtrg-group').each(function(i, obj) {",
" var grpcount = $(this).nextUntil('.dtrg-group').length.toString();",
" this.innerHTML = this.innerHTML.replace('</th>', ', count: ' + grpcount + '</th>');",
"}));"
)
server <- function(input, output) {
output$my_table <- DT::renderDT({
datatable(
mtcars[1:15, 1:5],
extensions = 'RowGroup',
options = list(
rowGroup = list(dataSrc = 2),
pageLength = 20
),
callback = callback_js,
selection = 'none'
)
})
}
# Run the application
shinyApp(ui = ui, server = server)