Задержка и истечение срока действия shinyBS :: bsTooltip

Можно ли отложить всплывающую подсказку и истечь через несколько секунд?

require(shiny)
require(shinyBS)

shinyApp(ui = fluidPage(
  shinyjs::useShinyjs(),
  bsTooltip(id = 'input', title = "Lets delay this appearing for 1s and force disappear after 5s", 
    placement = "bottom", trigger = "hover", options = list(delay = list(show=1000, hide=3000))),

  sidebarLayout(
    sidebarPanel(
      selectInput(inputId = 'input', label = 'input', choices = c('cats','dogs'))
    ),
    mainPanel()
  )
)
, server = function(input, output){})

введите описание изображения здесь


person geotheory    schedule 24.11.2017    source источник


Ответы (2)


shinyBS::bsTooltip не удается должным образом сериализовать вложенные options списки в https://github.com/ebailey78/shinyBS/blob/shinyBS3/R/Tooltips_and_Popovers.R#L129.

Объект options в конечном итоге выглядит как { delay: "list(show = 1000, hide = 3000)" }

К сожалению, похоже, что shinyBS больше не поддерживается или стоит отправить исправление.

Я предлагаю обходной путь - использовать shinyBS::addTooltip, который правильно сериализует options.

require(shiny)
require(shinyBS)

shinyApp(
  ui = fluidPage(
    # shinyjs::useShinyjs(),
    shinyBS:::shinyBSDep,

    sidebarLayout(
      sidebarPanel(
        selectInput(inputId = 'input', label = 'input', choices = c('cats','dogs'))
      ),
      mainPanel()
    )
  ),
  server = function(input, output, session) {
    addTooltip(session, id = 'input', title = "Lets delay this appearing for 1s and force disappear after 5s",
               placement = "bottom", trigger = "hover", options = list(delay = list(show=1000, hide=3000)))
  }
)

Или просто используя Bootstrap напрямую.

person greg L    schedule 24.11.2017
comment
Ура, Грэг, я сделаю свою работу. - person geotheory; 24.11.2017

Я использовал типифай. Итак, мой код был таким:

tipify(
  element,
  title = "some title",
  options = list("delay" = 1000)
)

Проблема заключалась в следующем: задержка должна быть числовой, но функция createTooltipOrPopoverOnUI (https://github.com/ebailey78/shinyBS/blob/shinyBS3/R/Tooltips_and_Popovers.R) поместит кавычки вокруг всех аргументов:

options = paste0("{'", paste(names(options), options, sep = "': '", collapse = "', '"), "'}")

Итак, я сделал это: я не горжусь этим, но это сработало:

options = list("delay': 1000, 'it" = "sucks")
person Lukas    schedule 14.01.2019