R DataTables не отображают кнопки и меню длины одновременно - PullRequest
0 голосов
/ 04 октября 2018

Когда вы нажимаете вкладку DataTable 1, вы можете увидеть меню длины в верхней части, которое является основным пунктом этого вопроса.Бит, начинающийся с output$ex1 в сервере, кодирует эту таблицу данных.

enter image description here

На самом деле я хотел бы иметь кнопки для отображения и загрузки столбцовданные.Требуется небольшая модификация output$ex1 путем добавления аргумента buttons.Затем вы получите output$ex2.Но теперь я скучаю по меню длины.

enter image description here

Я подумал добавить pageLength = 5, lengthMenu = c(5, 10, 15, 20) к output$ex2, как видно из кода, начинающегося с output$ex3 решит эту проблему, и я смогу вернуть меню длины.Но третий вернул мне точно такой же стол, как второй.

enter image description here

1) Как у меня могут быть как кнопки, так и меню длины?

2) Как я могу расположить позициикнопки?Например, я бы хотел, чтобы кнопки для colvis находились над кнопками для загрузки.

3) Если вы посмотрите на код ниже, вы увидите, что Excel также включен в кнопки: buttons = c('colvis', 'copy', 'csv', 'excel', 'pdf', 'print') Нони в одной из последних 2 таблиц вы не видите кнопку для Excel.Кроме того, я не получаю сообщение об ошибке.

Буду признателен за любую помощь.

library(shiny)

ui <- navbarPage(
  title = 'DataTable Options',
  tabPanel('DataTable 1',  DT::dataTableOutput('ex1')),
  tabPanel('DataTable with Buttons 1',  DT::dataTableOutput('ex2')),
  tabPanel('DataTable with Buttons 2',  DT::dataTableOutput('ex3'))
)



server <- function(input, output) {


  output$ex1 <- DT::renderDataTable(
         DT::datatable(iris, 
              class = 'cell-border stripe', 
              filter = 'top',
              options = list(autoWidth = TRUE)))



  output$ex2 <- DT::renderDataTable(
         DT::datatable(iris, 
              class = 'cell-border stripe', 
              filter = 'top', extensions = 'Buttons', 
              options = list(autoWidth = TRUE, 
                             dom = 'Bfrtip', 
                             buttons = c('colvis', 'copy', 'csv', 'excel', 
                                         'pdf', 'print'))))


   output$ex3 <- DT::renderDataTable(
      DT::datatable(iris, 
              class = 'cell-border stripe', 
              filter = 'top', extensions = 'Buttons', 
              options = list(autoWidth = TRUE, 
                             pageLength = 5, lengthMenu = c(5, 10, 15, 20), 
                             dom = 'Bfrtip', 
                             buttons = c('colvis', 'copy', 'csv', 'excel', 
                                         'pdf', 'print'))))


  }


  shinyApp(ui = ui, server = server)

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Вам нужно добавить «l» (маленькая буква «L») к dom, что делает Blfrtip:

B - кнопки

l - управление вводом с изменением длины

f - вход фильтра

r - элемент отображения pRocessing

t - таблица

i - сводка информации таблицы

p - управление разбиением на страницы

Эти функции могут быть расположены с помощью следующей команды:

"dom": "<'row'<'col-md-3'B><'col-md-6'l><'col-md-3'f>><'row'<'col-md-12't>><'row'<'col-md-3'i><'col-md-6'><'col-md-3'p>>"

Так же, как мы делаем это в Bootstrap.

0 голосов
/ 05 октября 2018

Для отображения кнопок и длины меню вы должны изменить dom на 'Blfrtip'.

output$ex2 <- DT::renderDataTable(
    DT::datatable(iris, 
                  class = 'cell-border stripe', 
                  filter = 'top', extensions = 'Buttons', 
                  options = list(autoWidth = TRUE, 
                                 dom = 'Blfrtip', 
                                 buttons = c('colvis', 'copy', 'csv', 'excel', 'pdf', 'print'))))

Если вы откроете свое приложение в Chrome, вы увидите кнопку excel.Это одна из проблем, связанных с датами в соответствии с этой ссылкой.

Для позиционирования кнопок вам, скорее всего, придется внести изменения в их HTML-теги;что-то вроде этого .

...