Проблема с DT SearchPanes: на панелях отображаются только первые 10 уникальных значений - PullRequest
2 голосов
/ 19 июня 2020

Я пытаюсь использовать новые функции 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

...