library(shiny)
library(DT)
shinyServer(function(input, output, session) {
# add CSS style 'cursor: pointer' to the 0-th column (i.e. row names)
output$x1 = DT::renderDataTable({
datatable(
cars, selection = 'none', class = 'cell-border strip hover'
) %>% formatStyle(0, cursor = 'pointer')
})
observeEvent(input$x1_cell_clicked, {
info = input$x1_cell_clicked
# do nothing if not clicked yet, or the clicked cell is not in the 1st column
if (is.null(info$value) || info$col != 0) return()
updateTabsetPanel(session, 'x0', selected = 'Plot')
updateTextInput(session, 'x2', value = info$value)
})
# highlight the point of the selected cell
output$x3 = renderPlot({
par(mar = c(4, 4, 1, .1))
plot(cars)
id = input$x2
if (id != '') points(cars[id, , drop = FALSE], pch = 19, cex = 2)
})
})
library(shiny)
navbarPage(
title = 'Interaction with Table Cells', id = 'x0',
tabPanel('Table', DT::dataTableOutput('x1')),
tabPanel('Plot', textInput('x2', 'Row ID'), plotOutput('x3'))
)