Я пытаюсь использовать новые функции SearchPanes и Buttons из пакета DT для фильтрации / выбора строк (довольно больших) данных в блестящем приложении вместе с расширением Scroller, но у меня проблемы с панелями поиска: при использовании как SearchPanes, так и Scroller в области поиска отображаются только первые 10 уникальных значений.
Минимальный пример с набором данных gapminder формы пакета gapminder:
library(shiny)
library(DT)
library(magrittr)
library(gapminder)
shinyApp(
ui = fluidPage(
dataTableOutput('tbl')
),
server = function(input, output) {
output$tbl = renderDataTable(server=FALSE, {
datatable(gapminder,
rownames = FALSE,
colnames = c("Country", "Continent", "Year",
"Life Exp", "Population", "GDP per capita"),
extensions = c("SearchPanes", "Select", "Buttons", "Scroller"),
options = list(
dom = "Brtip",
buttons = list("searchPanes"),
language = list(searchPanes = list(collapse = "Filter Rows")),
scrollY = 500,
scroller = TRUE,
columnDefs = list(
list(searchPanes = list(show = FALSE), targets = c(3:5)),
list(searchPanes = list(controls = FALSE), targets = 0:2),
list(className = "dt-center", targets = 0:5)
)
),
selection="none"
) %>%
formatRound(4, 1) %>%
formatRound(5, 0) %>%
formatCurrency(6, digits = 0)
})
}
)
В областях поиска этого примера приложения варианты фильтрации только для «Страна» go от «Афганистан» до «Бельгия» ", хотя в наборе данных гораздо больше стран:
снимок экрана с проблемой SearchPanes в блестящем приложении
Однако, если я не использую расширение Scroller, проблема исчезает:
shinyApp(
ui = fluidPage(
dataTableOutput('tbl')
),
server = function(input, output) {
output$tbl = renderDataTable(server=FALSE, {
datatable(gapminder,
rownames = FALSE,
colnames = c("Country", "Continent", "Year",
"Life Exp", "Population", "GDP per capita"),
extensions = c("SearchPanes", "Select", "Buttons"),
options = list(
dom = "Brtip",
buttons = list("searchPanes"),
language = list(searchPanes = list(collapse = "Filter Rows")),
columnDefs = list(
list(searchPanes = list(show = FALSE), targets = c(3:5)),
list(searchPanes = list(controls = FALSE), targets = 0:2),
list(className = "dt-center", targets = 0:5)
)
),
selection="none"
) %>%
formatRound(4, 1) %>%
formatRound(5, 0) %>%
formatCurrency(6, digits = 0)
})
}
)
Проблема с SearchPanes исчезает, когда Scroller не используется
Я действительно хотел бы использовать расширение Scroller и расширение SearchPanes вместе. Кто-нибудь знает о решении этой проблемы?
Jonas