DT闪亮的R工具提示和隐藏栏



我正在尝试在shiny 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专家。

提前感谢!

是的,可以只在具有绿色背景的单元格中添加工具提示。我们必须在下面使用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 datatable。请看下面的代码:

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,",
                      "});",

                      "}",
                      "}")
                    )
      )
    })
  }
)

最新更新