在鼠标悬停弹出窗口中显示 r Shiny actionButton Title

Display r Shiny actionButton Title in mouseover popup

我研究了如何在 mouseover 时显示 actionButton 标题。我了解 javascript,但不确定如何解决此问题。

mouseover 上,我希望显示 ButtonTitle 而不是 html 代码本身。我将不胜感激解决此问题的任何帮助或想法。下面是 POC 代码:

library(shiny)
library(DT)
library(dplyr)

shinyApp(
  ui = fluidPage(
    DT::dataTableOutput("table")
  ),
  server = function(input, output) {

  # create a summary table
    summary_iris <- group_by(iris, Species) %>%
      summarise(Count = n())

    summary_iris$Species <- levels(summary_iris$Species)

    shinyInput <- function(FUN, len, id, label, ...) {
      inputs <- character(len)

      for (i in seq_len(len)) {
        label <- summary_iris$Species[i]
        inputs[i] <- as.character(FUN(paste0(id, i),label=label, ...))
      }
      inputs
    }

    output$table <- DT::renderDataTable({
      DT <- summary_iris %>%
        mutate(Species = shinyInput(actionButton,
                                    nrow(summary_iris), 'button_', label = Species, class="bttn-unite",
                                    onclick = 'Shiny.onInputChange(\"select_button\",  this.id)'))
      DT::datatable(DT, rownames = FALSE, escape = FALSE,
                    options = list(rowCallback = JS(
                      "function(row, data) {",
                      "var full_text = data[0]",
                      "$('td:eq(0)', row).attr('title', full_text);",
                      "}")))
    })
  }
)

再次感谢您的帮助、指点或我在研究过程中遗漏的示例。

如何使按钮看起来像 Unite Button on this site?这并不重要,但我也在努力解决这个问题。

您可以使用正则表达式来提取文本:

rowCallback = JS(
  "function(row, data) {",
  "  var r = />(.*)</;",
  "  var full_text = r.exec(data[0])[1]",
  "  $('td:eq(0)', row).attr('title', full_text);",
  "}")

或者你可以用jQuery将字符串变成HTML对象,然后提取文本:

rowCallback = JS(
  "function(row, data) {",
  "  var full_text = $(data[0]).text();",
  "  $('td:eq(0)', row).attr('title', full_text);",
  "}")