Проблема Shiny selectInput (множественный = ИСТИНА) с мобильными устройствами - PullRequest
1 голос
/ 19 апреля 2020

Я разработал приборную панель для наблюдения за случаями covid-19 в Бразилии, используя глянцевую и гибкую панель. Работает нормально, но не на мобильных устройствах (по крайней мере, на некоторых из них). На боковой панели есть selectinput() с multiple=TRUE, и проблема в том, что каждый раз, когда мобильный пользователь пытается выбрать значение для обновления графиков, отображается экранная клавиатура и перед выбором выбирается все приложение. правильное использование, которое нужно пользователю, чтобы выбрать состояния и нажать кнопку «Atualizar» для обновления).

Я попытался решить эту проблему, продублировав раздел боковой панели, и использовать {.no-mobile} для первого и {.mobile) для второго и использование multiple=FALSE в этом втором selectinput (). К сожалению, это не сработает, и оба раздела были показаны перекрывающимися.

Я думал о другом способе (и я не знаю, как это сделать), используя что-то вроде multiple=ifelse("is mobile test",FALSE,TRUE).

Мои вопросы: есть ли способ проверить, является ли браузер мобильным? Есть ли другой способ решить эту проблему?

Любая помощь будет высоко оценена.

Ссылка на приложение (код встраивания): https://costafilho.shinyapps.io/monitor_covid19/

Проект Github: https://github.com/sergiocostafh/monitor_covid19

Проблематично c строка:

selectInput("estado",h3("Estados"),choices = est_nome, selected = "Sao Paulo", multiple = TRUE)

1 Ответ

1 голос
/ 21 апреля 2020

Не могли бы вы попробовать это приложение на вашем мобильном телефоне:

library(shiny)

js <- '
function(){
  $(".selectize-input input").attr("readonly", "readonly");
}
'

shinyApp(
  ui = fluidPage(
    selectizeInput("variable", "Variable:",
                   c("Cylinders" = "cyl",
                     "Transmission" = "am",
                     "Gears" = "gear"),
                   multiple = TRUE,
                   options = list(onInitialize = I(js))
    ),
    tableOutput("data")
  ),
  server = function(input, output) {
    output$data <- renderTable({
      mtcars[, c("mpg", input$variable), drop = FALSE]
    }, rownames = TRUE)
  }
)

Клавиатура не должна появляться.

...