为什么图标没有显示在 Shiny 应用程序的 DT::datatable 中?
Why are the icons not displaying in a DT::datatable in Shiny app?
我在 Shiny 应用程序的 DT::datatable
列中显示带有迷你图的图标时遇到了一些问题,即使我已经逃脱了 HTML。
编辑:删除了第二个问题。
library(shiny)
library(dplyr)
ui <- fluidPage(
htmlwidgets::getDependency('sparkline'),
DT::dataTableOutput("table")
)
server <- function(input, output) {
raw_data <- data.frame(date = 2000:2021,
value = sample(100:500, 22),
icon = as.character(icon("arrow-up")))
data <- raw_data %>%
group_by(icon) %>%
# Create the sparkline
summarise("value" = sparkline::spk_chr(c(value),
xvalues = date,
tooltipFormat = '{{x}}: {{y}}'))
output$table <- DT::renderDataTable({
cb <- htmlwidgets::JS('function(){debugger;HTMLWidgets.staticRender();}')
DT::datatable(data = data,
escape = FALSE,
options = list(drawCallback = cb))
})
}
shinyApp(ui, server)
默认情况下,shiny::icon
函数:
生成图标对应的HTML代码;
生成一个脚本标签,其中包含 font-awesome 图标库.
当您执行 as.character(icon(......
时,您只会获得 HTML 代码。 font-awesome 库未加载,这就是图标不显示的原因。
获取图标最简单的方法是使用glyphicon图标库,它包含在bootstrap中所以没有要加载的内容(因为 bootstrap 已加载到 Shiny 应用程序中):
as.character(icon("arrow-up", lib = "glyphicon"))
如果你真的想要一个 font-awesome 图标,有两种可能性:
包含带有 link
标签的 font-awesome 库;
或在您应用的其他地方使用 icon
函数,不使用 as.character
(您可以使用 display:none
CSS 属性 如果您不想看到此图标),如下所示。
# add inside ui
tags$span(icon("tag"), style = "display: none;")
我在 Shiny 应用程序的 DT::datatable
列中显示带有迷你图的图标时遇到了一些问题,即使我已经逃脱了 HTML。
编辑:删除了第二个问题。
library(shiny)
library(dplyr)
ui <- fluidPage(
htmlwidgets::getDependency('sparkline'),
DT::dataTableOutput("table")
)
server <- function(input, output) {
raw_data <- data.frame(date = 2000:2021,
value = sample(100:500, 22),
icon = as.character(icon("arrow-up")))
data <- raw_data %>%
group_by(icon) %>%
# Create the sparkline
summarise("value" = sparkline::spk_chr(c(value),
xvalues = date,
tooltipFormat = '{{x}}: {{y}}'))
output$table <- DT::renderDataTable({
cb <- htmlwidgets::JS('function(){debugger;HTMLWidgets.staticRender();}')
DT::datatable(data = data,
escape = FALSE,
options = list(drawCallback = cb))
})
}
shinyApp(ui, server)
默认情况下,shiny::icon
函数:
生成图标对应的HTML代码;
生成一个脚本标签,其中包含 font-awesome 图标库.
当您执行 as.character(icon(......
时,您只会获得 HTML 代码。 font-awesome 库未加载,这就是图标不显示的原因。
获取图标最简单的方法是使用glyphicon图标库,它包含在bootstrap中所以没有要加载的内容(因为 bootstrap 已加载到 Shiny 应用程序中):
as.character(icon("arrow-up", lib = "glyphicon"))
如果你真的想要一个 font-awesome 图标,有两种可能性:
包含带有
link
标签的 font-awesome 库;或在您应用的其他地方使用
icon
函数,不使用as.character
(您可以使用display:none
CSS 属性 如果您不想看到此图标),如下所示。
# add inside ui
tags$span(icon("tag"), style = "display: none;")