Добавить полосу прокрутки для данных в блестящем при использовании wellPanel - PullRequest
1 голос
/ 28 февраля 2020

Я пытаюсь добавить полосу прокрутки X для данных, когда она обернута вокруг fixedPanel. См. Следующий пример:

library(shiny)
library(shinydashboard)
library(DT)

ui <- function(request) {
  dashboardPage(
    skin = "black",
    dashboardHeader(), 
    dashboardSidebar(disable = TRUE),
    dashboardBody(
      fluidRow(
        uiOutput("table")
      ),
      fluidRow(
        DT::dataTableOutput("data2")
      )
    )
  )
}

server <- function(input, output, session) {

  output[["data"]] <-
        DT::renderDataTable({
         cbind(iris, iris, iris, iris, iris)[1, ]
        }, 
        selection = "none",
        options = list(
          searching = FALSE,
          lengthChange = FALSE,
          paginate = FALSE,
          scroller = TRUE,
          scrollX = TRUE
        ))

      output[["table"]] <-
        renderUI({
          fixedPanel(
          wellPanel(div(style = 'overflow-x: scroll', DT::dataTableOutput("data"))),
              style = "z-index: 10;"
          )
        })

      output[["data2"]] <-
        DT::renderDataTable({
          cbind(iris, iris, iris, iris, iris)
        }, 
        options = list(
          scroller = TRUE,
          scrollX = TRUE,
          pageLength = 25
        ))
}

shinyApp(ui, server)

В противоположность я мог бы использовать блестящий объект box, и прокрутка работает, но тогда у меня нет этого элемента данных поверх другого пользовательского интерфейса (style = "z-index: 10;"), который Мне нужно в моем приложении:

      output[["table"]] <-
        renderUI({
          box(div(style = 'overflow-x: scroll', DT::dataTableOutput("data")),
              width = 12,
              style = "z-index: 10;") # this line doesn't work

        })

Можно ли объединить два? Я бы предпочел использовать fixedPanel, чем box, но мне нужны оба компонента из datatable: прокрутка и отображение поверх других выходов пользовательского интерфейса.

1 Ответ

1 голос
/ 28 февраля 2020

Смотрите это сообщение: { ссылка }

renderUI({
  fixedPanel(
    wellPanel(div(style = 'overflow-x: scroll', DT::dataTableOutput("data"))),
        style = "z-index: 10; left:0; right:0; overflow-y:hidden; overflow-xy:auto"
  )
})

, кажется, делает работу.

...