У меня есть страница сервера RStudio Shiny с DataTables, а в приведенном ниже примере работают TableTools и ColReorder, но ColVis (кнопка Show/hide columns
) ведет себя не так, как в примере в http://datatables.net/extensions/colvis/:
При нажатии кнопки Show/hide columns
список смешивается со значениями в таблице внизу, и я не могу заставить список исчезнуть, нажав кнопку еще раз или щелкнув где-нибудь еще на странице (опять же, пример на странице таблиц данных ведет себя правильно).
Кроме того, меня смущает использование sDom
для упорядочивания различных элементов в таблице. Я бы хотел, чтобы кнопка Show/hide columns
была вверху справа, а не вверху слева. Я также не уверен, как упорядочить различные элементы в sDom
таблицы, чтобы после изменения порядка столбцов, сохранения в CSV / Excel или скрытия некоторого столбца я получил новый макет таблицы вместо исходного.
Любые идеи?
ui.R
shinyUI(pageWithSidebar(
h1('Diamonds DataTable with TableTools'),
tagList(
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdn.datatables.net/colreorder/1.1.1/js/dataTables.colReorder.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdn.datatables.net/colvis/1.1.0/js/dataTables.colVis.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');")))
),
dataTableOutput("mytable")
)
)
server.R
shinyServer(function(input, output, session) {
output$mytable = renderDataTable({
diamonds[,1:6]
}, options = list(
"sDom" = 'RMDCT<"clear">lfrtip',
"oTableTools" = list(
"sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
"aButtons" = list(
"copy",
"print",
list("sExtends" = "collection",
"sButtonText" = "Save",
"aButtons" = c("csv","xls")
)
)
)
)
)
})
#
Кроме того, существует проблема с сортировкой столбцов и переупорядочиванием столбцов: если сортировать, затем переупорядочивать столбцы и снова сортировать, заголовки столбцов переворачиваются. Например, отсортируйте по глубине столбца, затем сдвиньте первый столбец влево, затем снова щелкните заголовок, чтобы отсортировать, теперь мы получили глубину заголовка с содержимым из неправильного столбца. См. Снимок:
sDom
. Тогда виджет должен отображаться правильно. Однако виджет изменяет объекты в DOM, поэтому вам, вероятно, потребуется включить вызовыShiny.unbindAll()
иShiny.bindAll()
, см. groups.google.com/forum / #! msg / shiny-Discussion / IE6aQfKXd1I / - person jdharrison   schedule 08.07.2014Shiny.unbindAll()
иShiny.bindAll()
вызовы относительно таблицы? - person 719016   schedule 09.07.2014