Is there any way to get a tooltip for each and every cell in datatable in r shiny? There are so many ways to get the hover row or column. But I could not find a way to get both row and column index and show a different hover tooltip for each and every cell. Can anyone modify the following code?
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
dataTableOutput('table'),
verbatimTextOutput('hoverIndex'),
),
server = function(server, input, output) {
output$hoverIndex <- renderText({
UI_out <- input$hoverIndexJS
return(paste("hover column info", UI_out))
})
output$table <- renderDataTable({
DT_out <- data.frame(`A` = 1:5, `B` = 11:15, `C` = LETTERS[1:5])
DT_out <- datatable(DT_out
,rownames = F
,callback = JS("
/* code for columns on hover */
table.on('mouseenter', 'td', function() {
var td = $(this);
var col = table.cell( this ).index().columnVisible;
var row = table.cell( this ).index().row;
$('td[row][col]).attr('title', row+col);
Shiny.onInputChange('hoverIndexJS', info_out);
});"
)
)
return(DT_out)
})
}
)
Is there any way to get a tooltip for each and every cell in datatable in r shiny? There are so many ways to get the hover row or column. But I could not find a way to get both row and column index and show a different hover tooltip for each and every cell. Can anyone modify the following code?
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
dataTableOutput('table'),
verbatimTextOutput('hoverIndex'),
),
server = function(server, input, output) {
output$hoverIndex <- renderText({
UI_out <- input$hoverIndexJS
return(paste("hover column info", UI_out))
})
output$table <- renderDataTable({
DT_out <- data.frame(`A` = 1:5, `B` = 11:15, `C` = LETTERS[1:5])
DT_out <- datatable(DT_out
,rownames = F
,callback = JS("
/* code for columns on hover */
table.on('mouseenter', 'td', function() {
var td = $(this);
var col = table.cell( this ).index().columnVisible;
var row = table.cell( this ).index().row;
$('td[row][col]).attr('title', row+col);
Shiny.onInputChange('hoverIndexJS', info_out);
});"
)
)
return(DT_out)
})
}
)
Share
Improve this question
asked Feb 21, 2018 at 4:10
JaliyaJaliya
3475 silver badges20 bronze badges
1
- Actually I want show a value from a different table in this table on hover . – Jaliya Commented Feb 21, 2018 at 5:18
1 Answer
Reset to default 7It is entirely possible, but you messed up the callback
code.
There was a typo in there, which failed the whole script. Additionally, you have to know that the callback should return the table object in order to work. If you dont, the table won't even be drawn.
Here is a corrected version with lighter logic.
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
dataTableOutput('table'),
verbatimTextOutput('hoverIndex')
),
server = function(server, input, output) {
output$hoverIndex <- renderText({
paste("hover column info", input$hoverIndexJS)
})
output$table <- renderDataTable({
datatable(data.frame(`A` = 1:5, `B` = 11:15, `C` = LETTERS[1:5]),
rownames = F,
callback = JS("
table.on('mouseenter', 'td', function() {
Shiny.onInputChange('hoverIndexJS', this.innerHTML);
});
return table;
")
)
})
}
)
Edit
Answering the ment, below is a version with two tables. But it is kind of cheap way to do it.
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
dataTableOutput('tableWithHoverEffect'),
dataTableOutput('tableWithHoverData')
),
server = function(session, input, output) {
observeEvent(input$hoveredCellInfo, {
info <- input$hoveredCellInfo
content <- as.character(table2[info$row, info$column])
})
table1 <- data.frame(A = 1:5, B = 11:15, C = LETTERS[1:5])
table2 <- data.frame(D = 10:14, E = LETTERS[6:10], F = c(T, F, F, T, T))
output$tableWithHoverEffect <- renderDataTable({
datatable(table1, rownames = F,
callback = JS("
table.on('mouseenter', 'tbody td', function() {
var column = $(this).index();
var row = $(this).parent().index();
var dataFromOtherTable = $('#tableWithHoverData').find('tbody tr').eq(row).find('td').eq(column).text();
this.setAttribute('title', dataFromOtherTable);
});
return table;
")
)
})
output$tableWithHoverData <- renderDataTable({
datatable(table2, rownames = F)
})
}
)
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744377805a4571272.html
评论列表(0条)