R Shiny DT updateПоиск проблемы выбора - PullRequest
0 голосов
/ 13 февраля 2019

Кажется, есть некоторая проблема при использовании updateSearch для обновления поиска по столбцам по факторам в DT в Shiny App.Несмотря на то, что содержимое таблицы DT фильтруется правильно, при щелчке в поле выбора выбора выбранные значения не отображаются в поле в качестве введенных значений.

С другой стороны, при добавлении поиска в моментповторное рендеринг таблицы с помощью параметра searchCols = list (), похоже, что выбор поиска работает правильно и, как и ожидалось.

Ниже приведен пример, который воспроизводит это поведение.Вы можете увидеть это поведение, нажав на «Click Me!»и с помощью поля поиска имен столбцов выберите.

Есть идеи, как это исправить?

Спасибо.

library(DT)

server = shinyServer(function(input, output, session) {

    values <- reactiveValues()
    values$i <- 0

    mtcars2 = mtcars[,c("hp","mpg")]
    mtcars2$names <- as.factor(rownames(mtcars))
    output$x4 = DT::renderDataTable(mtcars2, server = TRUE, filter = "top", rownames = FALSE)

    dtp = dataTableProxy("x4")

    output$x5 = renderPrint({
        cat('Rows on the current page:\n\n')
        cat(input$x4_rows_current, sep = ', ')
        cat('\n\nAll rows:\n\n')
        cat(input$x4_rows_all, sep = ', ')
        cat('\n\nSelected rows:\n\n')
        cat(input$x4_rows_selected, sep = ', ')
        cat('\n\nSearch term:\n\n')
        cat(input$x4_search, sep = ', ')
        cat('\n\nColumn searches\n\n')
        cat(input$x4_search_columns, sep = ', ')
        cat('\n\nButton clicked\n\n')
        cat(values$i, sep = ', ')
        cat('\n\nLast action\n\n')
        cat(values$last, sep = ', ')
    })

    observeEvent(input$mybutton,{
        values$i <- values$i + 1

        if (all(input$x4_search_columns == "")) {
            values$last <- "Input vals"
            updateSearch(dtp, keywords = list(global = "", columns = c("","", '["Mazda RX4","Hornet 4 Drive"]')))
        } else {
            values$last <- "Clear vals"
            updateSearch(dtp, keywords = list(global = "", columns = ""))
        }
    })
})


ui = fluidPage(
    title = 'DataTables Information',
    fluidRow(
        column(6, DT::dataTableOutput('x4')),
        column(6, verbatimTextOutput('x5'))
    ),
    actionButton("mybutton", "Click Me!")
)

shinyApp(ui = ui, server = server)
...