Как отобразить все, когда все выбрано в pickerinput - PullRequest
0 голосов
/ 20 января 2019

Ниже код работает нормально, единственное дополнение, которое я хочу, это отображать «Все», когда все выбрано, а все остальное работает как есть, то есть, если выбран 1 вариант, показывать 1/11 фруктов и т. Д.,Кто-нибудь может мне помочь с этим?

ui <- fluidPage(
  column(
    width = 4,
    pickerInput(
      inputId = "id", label = "Choices :",
      choices = c("Banana", "Blueberry", "Cherry", "Coconut", "Grapefruit",
                  "Kiwi", "Lemon", "Lime", "Mango", "Orange", "Papaya"),
      options = list(`actions-box` = TRUE, `selected-text-format` = "count > 0",
                     `count-selected-text` = "{0}/{1} fruits"),
      multiple = TRUE
    )
  )
)


server <- function(input, output) {
  output$res <- renderPrint({
    input$id
  })
}

shinyApp(ui = ui, server = server) 

1 Ответ

0 голосов
/ 21 января 2019

Я не знаю всех возможностей блестящих виджетов, но это, безусловно, может быть достигнуто путем отправки информации с сервера обратно в пользовательский интерфейс через пользовательские сообщения. Вот как я это сделал, хотя это выглядит довольно странно.

ui <- fluidPage(
  column(
    width = 4,
    pickerInput(
      inputId = "id", label = "Choices :",
      choices = c("Banana", "Blueberry", "Cherry", "Coconut", "Grapefruit",
                  "Kiwi", "Lemon", "Lime", "Mango", "Orange", "Papaya"),
      options = list(`actions-box` = TRUE, 
                     `selected-text-format` = "count > 0",
                     `count-selected-text` = "{0}/{1} fruits"
                     ),
      multiple = TRUE
    )
  ),
  singleton({
    tags$head(tags$script(
      "Shiny.addCustomMessageHandler(\"testmessage\",
                                    function(message) {
                                    var x = document.getElementsByClassName(\"filter-option pull-left\");
                                    x[0].innerHTML = message;
                                    }
      );"
    ))
  })
)


server <- function(input,output,session) {
  output$res <- renderPrint({
    input$id
  })

  numOptions = 11

  observe({
    if(length(input$id) == numOptions){
      session$sendCustomMessage(type = 'testmessage',
                                message = list("All"))
    }
  })
}

shinyApp(ui = ui, server = server) 

Здесь я проверяю, все ли элементы выбраны в наблюдателе в функции сервера. Если они есть, я запускаю простую функцию JavaScript в пользовательском интерфейсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...