I have a situation where I need to display images and metrics in a compact table. The challenge is to show the images in a small size within the table, but allow users to hover over them for a larger view using a popover feature.
While I managed to resize the images in the table to 75px width, I'm struggling to implement the popover functionality with shiny. Any advice or guidance on how to achieve this would be greatly appreciated!
Below is a simplified example of the table:
library(shiny)
library(shinydashboard)
library(DT)
# Data ------------------------------------------------------------------
dt <- data.frame(rank = c(1, 2, 3, 4, 5),
image_url = c('https://images.unsplash.com/photo-1521671413015-ce2b0103c8c7?ixlib=rb-0.3.5&s=45547f67f01ffdcad0e33c8417b840a9&auto=format&fit=crop&w=667&q=80',
"https://images.unsplash.com/photo-1520699697851-3dc68aa3a474?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=ef15aee8bcb3f5928e5b31347adb6173&auto=format&fit=crop&w=400&q=80",
"https://images.unsplash.com/photo-1501925873391-c3cd73416c5b?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=379e4a0fffc6d11cd5794806681d0211&auto=format&fit=crop&w=750&q=80",
<br>
"https://images.unsplash.com/photo-1493019352063-500af484329e?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=f1e0ce442afdcaf2cdc4fde83012346e&auto=format&fit=crop&w=750&q=80",
"https://images.unsplash.com/photo-1422056551295-3b38e8a20462?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=3eb1f67f2b9c1c26435fc584a0a1f75d&auto=format&fit=crop&w=667&q=80")
)
img_dt <- dt %>%;
mutate(img = paste0("<img class = small-img src='", image_url, "'/>"))
# Dashboard ----------------------------------------------------------------
ui <- dashboardPage(
dashboardHeader(title = "Test"),
dashboardSidebar(),
dashboardBody(
tags$head(
tags$style(
HTML(
"img.small-img {
max-width: 75px;
}")
)
),
dataTableOutput("example_table")
)
)
server <- function(input, output) {
output$example_table <- renderDataTable({
img_dt},
escape = FALSE)
}
shinyApp(ui = ui, server = server)