chciałbym mieć pracy przykład podobny do tego: https://demo.shinyapps.io/029-row-selection/RStudio Shiny lista sprawdzanie wierszy w DataTables
Próbowałem przykład w moim Shiny serwer działa Shiny Server v1.1.0.10000
, packageVersion: 0.10.0
i Node.js v0.10.21
, ale to nie działa nawet jeśli załaduję pliki js i css ze strony internetowej. To po prostu nie wybiera wiersze z tabeli:
# ui.R
library(shiny)
shinyUI(fluidPage(
title = 'Row selection in DataTables',
tagList(
singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.2/js/jquery.dataTables.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.2/css/jquery.dataTables.min.css',type='text/css')))
),
sidebarLayout(
sidebarPanel(textOutput('rows_out')),
mainPanel(dataTableOutput('tbl')),
position = 'right'
)
))
# server.R
library(shiny)
shinyServer(function(input, output) {
output$tbl <- renderDataTable(
mtcars,
options = list(pageLength = 10),
callback = "function(table) {
table.on('click.dt', 'tr', function() {
$(this).toggleClass('selected');
Shiny.onInputChange('rows',
table.rows('.selected').indexes().toArray());
});
}"
)
output$rows_out <- renderText({
paste(c('You selected these rows on the page:', input$rows),
collapse = ' ')
})
})
Potem starał się zrobić to z innego przykładu, który został przy użyciu przycisków radiowych do ponownego sortowania wierszy.
W moim zmodyfikowanym przykładzie chcę utworzyć listę identyfikatorów z zaznaczonych pól wyboru w tabeli tabeli danych widocznej na stronie. Np. Wybierając kilka wierszy z pierwszych 5, chcę, aby mój tekst był: 1,3,4
odpowiadający kolumnie mymtcars$id
dodanej do mtcars. Następnie planuję powiązać akcję z wartościami pola tekstowego.
Mam go prawie w tym przykładzie, ale zaznaczenie pól nie powoduje aktualizacji listy w polu tekstowym. W przeciwieństwie do przykładu shinyapp, chciałbym, aby moje checkboxy zachowały status wyboru, jeśli tabela zostanie wykorzystana. Może to być trudna część i nie jestem pewien, jak to zrobić. Chciałbym również dodać pole tekstowe "Wybierz/Anuluj wszystkie" w lewym górnym rogu tabeli, które zaznacza/odznacza wszystkie pola w tabeli. Jakieś pomysły?
# server.R
library(shiny)
mymtcars = mtcars
mymtcars$id = 1:nrow(mtcars)
shinyServer(function(input, output, session) {
rowSelect <- reactive({
if (is.null(input[["row"]])) {
paste(sort(unique(rep(0,nrow(mymtcars)))),sep=',')
} else {
paste(sort(unique(input[["row"]])),sep=',')
}
})
observe({
updateTextInput(session, "collection_txt",
value = rowSelect()
,label = "Foo:"
)
})
# sorted columns are colored now because CSS are attached to them
output$mytable = renderDataTable({
addCheckboxButtons <- paste0('<input type="checkbox" name="row', mymtcars$id, '" value="', mymtcars$id, '">',"")
#Display table with checkbox buttons
cbind(Pick=addCheckboxButtons, mymtcars[, input$show_vars, drop=FALSE])
}, options = list(bSortClasses = TRUE, aLengthMenu = c(5, 25, 50), iDisplayLength = 25))
})
# ui.R
library(shiny)
mymtcars = mtcars
mymtcars$id = 1:nrow(mtcars)
shinyUI(pageWithSidebar(
headerPanel('Examples of DataTables'),
sidebarPanel(
checkboxGroupInput('show_vars', 'Columns to show:', names(mymtcars),
selected = names(mymtcars))
),
mainPanel(
dataTableOutput("mytable")
,textInput("collection_txt",label="Foo")
)
)
)
Skończyło się na użyciu drugiego przykładu, który działał świetnie bez konieczności aktualizacji mojego oprogramowania. – 719016
Czy dane wejściowe [["wiersze"]] są wartościami wybranego rzędu/s? Ponieważ mam podobny przykład i nie mogę uzyskać wartości zaznaczonych wierszy. Plz wyjaśnić. – OmaymaS