ho ricevuto una pagina di server RStudio lucido con DataTable, e ho avuto TableTools e ColReorder lavorare nell'esempio che segue, ma ColVis (Show/hide columns
pulsante) non si comporta nello stesso modo come l'esempio in http://datatables.net/extensions/colvis/:R DataTable lucidi comportamento ColVis
Quando si fa clic sul pulsante Show/hide columns
, l'elenco si mescola con i valori nella tabella sottostante e non riesco a far scomparire l'elenco facendo nuovamente clic sul pulsante o facendo clic in qualsiasi altro punto della pagina (di nuovo, l'esempio nella pagina dei datatables si comporta correttamente).
Inoltre, sono confuso su come utilizzare sDom
per ordinare i diversi elementi nella tabella. Vorrei che il pulsante Show/hide columns
fosse in alto a destra anziché in alto a sinistra. Inoltre, non sono sicuro di come ordinare i diversi elementi nello sDom
della tabella in modo che dopo aver modificato l'ordine delle colonne, salvando in CSV/Excel o nascondendo alcune colonne mi verrà fornito il nuovo layout di tabella anziché quello originale.
Qualche idea?
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")
)
)
)
)
)
})
#
Inoltre, c'è un problema con la colonna di ordinamento e la colonna di riordino: se uno sorta quindi riordina le colonne e le specie di nuovo , le intestazioni delle colonne sono capovolte. Ad esempio, ordina per profondità di colonna, quindi sposta la colonna uno a sinistra, quindi fai di nuovo clic sull'intestazione per ordinare, ora abbiamo la profondità dell'intestazione con il contenuto della colonna sbagliata. Vedere snapshot:
Hai solo bisogno l'opzione 'sDom' per questa libreria . Allora il widget dovrebbe essere visualizzato correttamente. Tuttavia, il widget cambia gli oggetti nel DOM, quindi probabilmente dovrai incorporare le chiamate a 'Shiny.unbindAll()' e 'Shiny.bindAll()' vedi https://groups.google.com/forum/#!msg/shiny- discutere/IE6aQfKXd1I/M_IpbLUUG9AJ – jdharrison
dove dovrebbero essere fatte le chiamate 'Shiny.unbindAll()' e 'Shiny.bindAll()' relative alla tabella? – 719016