Javascript 在R中的数据表中添加工具提示
我正在尝试使用JS script attr函数添加工具提示,说明编写的脚本没有给出所需的结果(为datatable的第1列添加工具提示)。由于我是新的JS脚本,因此无法调试错误,有人能告诉我为什么下面的代码没有给出正确的结果吗。下面是一段代码:Javascript 在R中的数据表中添加工具提示,javascript,r,shiny,dt,Javascript,R,Shiny,Dt,我正在尝试使用JS script attr函数添加工具提示,说明编写的脚本没有给出所需的结果(为datatable的第1列添加工具提示)。由于我是新的JS脚本,因此无法调试错误,有人能告诉我为什么下面的代码没有给出正确的结果吗。下面是一段代码: library(shiny) library(DT) shinyApp( ui = fluidPage( DT::dataTableOutput("table2") ), server = function(input, output) { ou
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
DT::dataTableOutput("table2")
),
server = function(input, output) {
output$table2<-DT::renderDataTable({
responseDataFilter2_home<-iris[,c(4,3,1)]
displayableData<-as.data.frame(responseDataFilter2_home, stringAsFactors = FALSe, row.names = NULL)
},server = TRUE, selection = 'single',callback = JS("table.on('dblclick.dt', 'td', function(nRow, aData){
var row=table.cell(this).index().row;
var full_text = aData[1] + ','+ aData[2]
$('td:eq(1)', nRow).attr('title', full_text);
Shiny.onInputChange('rows_home',[row, Math.random()]);});
table.on('click.dt', 'td', function(nRow, aData) {
var k=table.cell(this).index().row;
var full_text = aData[1] + ','+ aData[2]
$('td:eq(1)', nRow).attr('title', full_text);
if(table.rows('.selected').indexes().toArray()!= '' && table.rows('.selected').indexes().toArray() ==k){
k=-1;}
Shiny.onInputChange('rows_up_home',[k, Math.random()]);
});"),
escape=FALSE,options=list(paging=FALSE,searching = FALSE,ordering=FALSE,scrollY = 400,scrollCollapse=TRUE,
columnDefs = list(list(width = '800%', targets = c(1)))),rownames=FALSE,colnames="Name")
}
)
库(闪亮)
图书馆(DT)
shinyApp(
ui=fluidPage(
DT::dataTableOutput(“表2”)
),
服务器=功能(输入、输出){
输出$table2您可以从这个最小的工作示例开始:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
DT::dataTableOutput("table2")
),
server = function(input, output) {
output$table2<-DT::renderDataTable({
responseDataFilter2_home<-iris[,c(4,3,1)]
displayableData<-DT::datatable(responseDataFilter2_home,options = list(rowCallback = JS(
"function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
"var full_text = aData[1] + ','+ aData[2]",
"$('td:eq(1)', nRow).attr('title', full_text);",
"}")
))#, stringAsFactors = FALSe, row.names = NULL)
},server = TRUE, selection = 'single', escape=FALSE,options=list(paging=FALSE,searching = FALSE,ordering=FALSE,scrollY = 400,scrollCollapse=TRUE,
columnDefs = list(list(width = '800%', targets = c(1)))),rownames=FALSE,colnames="Name")
}
)
库(闪亮)
图书馆(DT)
shinyApp(
ui=fluidPage(
DT::dataTableOutput(“表2”)
),
服务器=功能(输入、输出){
输出$table2您可以从这个最小的工作示例开始:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
DT::dataTableOutput("table2")
),
server = function(input, output) {
output$table2<-DT::renderDataTable({
responseDataFilter2_home<-iris[,c(4,3,1)]
displayableData<-DT::datatable(responseDataFilter2_home,options = list(rowCallback = JS(
"function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
"var full_text = aData[1] + ','+ aData[2]",
"$('td:eq(1)', nRow).attr('title', full_text);",
"}")
))#, stringAsFactors = FALSe, row.names = NULL)
},server = TRUE, selection = 'single', escape=FALSE,options=list(paging=FALSE,searching = FALSE,ordering=FALSE,scrollY = 400,scrollCollapse=TRUE,
columnDefs = list(list(width = '800%', targets = c(1)))),rownames=FALSE,colnames="Name")
}
)
库(闪亮)
图书馆(DT)
shinyApp(
ui=fluidPage(
DT::dataTableOutput(“表2”)
),
服务器=功能(输入、输出){
output$table2我用我在本文中给出的答案修改了您的代码,这样您就可以在不影响JS代码其他部分的情况下获得工具提示:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
DT::dataTableOutput("table2")
),
server = function(input, output) {
output$table2<-DT::renderDataTable({
responseDataFilter2_home<-iris[,c(4,3,1)]
displayableData<-DT::datatable(data = as.data.frame(responseDataFilter2_home, stringAsFactors = FALSE, row.names = NULL),rownames = FALSE,
escape = FALSE, selection = 'single', callback = JS("table.on('dblclick.dt', 'td', function(nRow, aData){
var row=table.cell(this).index().row;
var full_text = aData[1] + ','+ aData[2]
$('td:eq(1)', nRow).attr('title', full_text);
Shiny.onInputChange('rows_home',[row, Math.random()]);});
table.on('click.dt', 'td', function(nRow, aData) {
var k=table.cell(this).index().row;
var full_text = aData[1] + ','+ aData[2]
$('td:eq(1)', nRow).attr('title', full_text);
if(table.rows('.selected').indexes().toArray()!= '' && table.rows('.selected').indexes().toArray() ==k){
k=-1;}
Shiny.onInputChange('rows_up_home',[k, Math.random()]);
});"),
options = list(rowCallback = JS(
"function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
"var full_text = aData[0] + ','+ aData[1];",
"$('td:eq(0)', nRow).attr('title', full_text);",
"}"),paging=FALSE,searching = FALSE,ordering=FALSE,scrollY = 400,scrollCollapse=TRUE,
columnDefs = list(list(width = '800%', targets = c(1))),colnames="Name") )
})
})
库(闪亮)
图书馆(DT)
shinyApp(
ui=fluidPage(
DT::dataTableOutput(“表2”)
),
服务器=功能(输入、输出){
output$table2我用我在本文中给出的答案修改了您的代码,这样您就可以在不影响JS代码其他部分的情况下获得工具提示:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
DT::dataTableOutput("table2")
),
server = function(input, output) {
output$table2<-DT::renderDataTable({
responseDataFilter2_home<-iris[,c(4,3,1)]
displayableData<-DT::datatable(data = as.data.frame(responseDataFilter2_home, stringAsFactors = FALSE, row.names = NULL),rownames = FALSE,
escape = FALSE, selection = 'single', callback = JS("table.on('dblclick.dt', 'td', function(nRow, aData){
var row=table.cell(this).index().row;
var full_text = aData[1] + ','+ aData[2]
$('td:eq(1)', nRow).attr('title', full_text);
Shiny.onInputChange('rows_home',[row, Math.random()]);});
table.on('click.dt', 'td', function(nRow, aData) {
var k=table.cell(this).index().row;
var full_text = aData[1] + ','+ aData[2]
$('td:eq(1)', nRow).attr('title', full_text);
if(table.rows('.selected').indexes().toArray()!= '' && table.rows('.selected').indexes().toArray() ==k){
k=-1;}
Shiny.onInputChange('rows_up_home',[k, Math.random()]);
});"),
options = list(rowCallback = JS(
"function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
"var full_text = aData[0] + ','+ aData[1];",
"$('td:eq(0)', nRow).attr('title', full_text);",
"}"),paging=FALSE,searching = FALSE,ordering=FALSE,scrollY = 400,scrollCollapse=TRUE,
columnDefs = list(list(width = '800%', targets = c(1))),colnames="Name") )
})
})
库(闪亮)
图书馆(DT)
shinyApp(
ui=fluidPage(
DT::dataTableOutput(“表2”)
),
服务器=功能(输入、输出){
输出$table2请您解释一下您到底想在工具提示中显示什么?@SBista我正在尝试将col1和col2串联起来,并通过保持JS脚本的其他部分不变来显示与col1中的工具提示相同的内容,因为它们是为其他功能设计的。您能解释一下您到底想显示什么吗在你的工具提示中?@SBista我试图将col1和col2串联起来,并通过保持JS脚本的其他部分不变来显示与col1中的工具提示相同的内容,因为它们是为其他功能而设计的。谢谢你的建议。当我尝试将其与现有代码中的现有JS元素集成时,工具提示不起作用。并且这就是我的原始代码的问题-其他东西可以工作,但工具提示不起作用。有什么解决方法吗?除了添加工具提示之外,你还想做什么?你的代码对于工具提示很好,但是我需要将工具提示与已经编写的JS脚本集成,因为我遇到了这个问题。谢谢你的帮助您的努力。感谢您的建议。当我尝试将此与现有代码中的现有JS元素集成时,工具提示不起作用。这就是我的原始代码的问题-其他东西起作用,但工具提示不起作用。有什么解决方法吗?除了添加工具提示之外,您还想做什么al code?你的代码对工具提示很好,但我需要将工具提示与已经编写的JS脚本集成,因为我遇到了问题。感谢你的努力。谢谢你。这很有帮助。只需再查询一次-因为显示的表有3列-4,3,1。现在,如果我需要在col1上使用col 2和col 5的工具提示,那么对于相同的表,可以做什么呢?实际的表will dispaly col-4,3,1 only,但工具提示的串联将有2和5。以iris表为例。由于您仅提取了列4,3和1的数据,datatable将无法访问列2和列5的值。为此,我想最好的方法是在显示时隐藏不需要的列,而不是提取列从iris
到responseDataFilter2\u home
。谢谢。明白了。要动态隐藏cols,我们可以添加此代码-columnDefs=list(list(width='800%,visible=FALSE,targets=c(3,4)))谢谢。这很有帮助。只需再进行一次查询-因为显示的表有3列-4,3,1。现在,如果我需要在col1上有col 2和col 5的工具提示,那么同样的解决方法是什么。实际的表将只显示col-4,3,1,但工具提示的串联将有2和5。以iris表为例。因为您已经提取了4,3和1o列的数据仅此而已,datatable将无法访问第2列和第5列的值。为此,我想最好的方法是在显示时隐藏不需要的列,而不是将列从iris
提取到responseDataFilter2\u home
。谢谢。明白了。要动态隐藏列,我们可以添加此代码-columnDefs=list(list(宽度=800%,可见=FALSE,目标=c(3,4)))