【问题标题】:DT shiny R tooltip and hide columnDT 闪亮的 R 工具提示和隐藏列
【发布时间】:2017-03-06 08:33:28
【问题描述】:

我正在尝试对闪亮 R 中的 DT 数据表做两件事。

我的代码(来自 github 的示例)如下:

library("shiny")
library("shinydashboard")
library("datasets")
library("DT")

header <- dashboardHeader()

sidebar <- dashboardSidebar()

body <- dashboardBody(
  DT::dataTableOutput("mtcarsTable")
)

shinyApp(
  ui = dashboardPage(header, sidebar, body),
  server = function(input, output) {

    output$mtcarsTable <- renderDataTable({
      DT::datatable(datasets::mtcars, 
                    options = list(rowCallback = JS('
                                                    function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
                                                    // Bold and green cells for conditions
                                                    if (parseFloat(aData[4]) >= 200)
                                                    $("td:eq(3)", nRow).css("font-weight", "bold");
                                                    if (parseFloat(aData[4]) >= 100)
                                                    $("td:eq(3)", nRow).css("background-color", "#9BF59B");
                                                    }')
                      )
                    )
  })
  }
                    )

如您所见,我正在评估第 4 列,为单元格提供背景颜色以及定义它是否应该为粗体。

是否可以隐藏第 4 列?我只是想评价它,我不想展示它。

我的另一个问题是是否可以仅向具有绿色背景的单元格添加工具提示?我看到我应该使用回调,但我不知道怎么做,而且我不是 javascript 专家。

提前感谢您!

【问题讨论】:

  • 要隐藏第 4 列,您可以使用 datasets::mtcars[,-3] 而不是 datasets::mtcars
  • 我可以使用 columnDefs = list(list(targets = 4, visible=FALSE)) 隐藏列。我想要隐藏的列必须放在我想要让 JS 成功应用的列之后

标签: javascript css r shiny dt


【解决方案1】:

是的,可以仅向具有绿色背景的单元格添加工具提示。我们必须在下面使用javascript:

DT::datatable(datasets::mtcars, 
              options = list(rowCallback = JS(
                "function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
                "// Bold and green cells for conditions",
                "if (parseFloat(aData[4]) >= 200)",
                "$('td:eq(3)', nRow).css('font-weight', 'bold');",
                "if (parseFloat(aData[4]) >= 100){",
                "$('td:eq(3)', nRow).css('background-color', '#9BF59B');",
                "var full_text = aData[3]",
                "$('td:eq(3)', nRow).attr('title', full_text);",
                "}",
                "}")
              )
)

[编辑]:

为了向工具提示添加格式,我又添加了几行,它仅适用于 shinyApp 而不是 DT 数据表。请看下面的代码:

header <- dashboardHeader()

sidebar <- dashboardSidebar()

body <- dashboardBody(
  DT::dataTableOutput("mtcarsTable")
)

shinyApp(
  ui = dashboardPage(header, sidebar, body),
  server = function(input, output) {

    output$mtcarsTable <- renderDataTable({
      DT::datatable(datasets::mtcars, 
                    options = list(rowCallback = JS(
                      "function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
                      "// Bold and green cells for conditions",
                      "if (parseFloat(aData[4]) >= 200)",
                      "$('td:eq(3)', nRow).css('font-weight', 'bold');",
                      "if (parseFloat(aData[4]) >= 100){",
                      "$('td:eq(3)', nRow).css('background-color', '#9BF59B');",
                      "var full_text = aData[3]",
                      "$('td:eq(3)', nRow).attr('title', full_text);",
                      "//Code for formatting tooltip",
                      "$('td:eq(3)', nRow).tooltip({",
                        "'delay': 0,",
                        "'track': true,",
                        "'fade': 250,",
                      "});",


                      "}",
                      "}")
                    )
      )

    })
  }
)

希望这会有所帮助。

【讨论】:

  • @SBiasta 有什么方法可以编辑工具提示框吗?
  • 您要编辑工具提示中的文本吗?为此,您可以将 var full_text = aData[3] 更改为 var full_text ='The text you want'
  • @SBiasta 不,我指的是窗户。我可以编辑尺寸、颜色、...吗?有这方面的文档吗?
  • 是的,我认为可以使用 css 更改大小和颜色。这个link 建议您可以更改工具提示属性。
  • @SBiasta 好的,这似乎是我想要的,但是如何在 datatable R 函数中添加这个 html 和 css 函数?
猜你喜欢
  • 1970-01-01
  • 2017-03-15
  • 2020-02-18
  • 2013-05-03
  • 1970-01-01
  • 2021-09-02
  • 2016-01-02
  • 2017-07-25
相关资源
最近更新 更多