gpt4 book ai didi

javascript - 如何在 Shiny R 应用程序中设置 DataTables 行回调?

转载 作者:行者123 更新时间:2023-11-29 15:40:01 24 4
gpt4 key购买 nike

在 rCharts 中,可以使用特殊的字符串符号设置 DataTables 的 JS 回调:#!函数(par){...}!#。例如,让我们看一下以下 R 代码:

  #JS callback to truncate long strings in table cells and add a tooltip
callback = "#!
function (nRow) {
$('td', nRow).each(function (index) {
var maxChars = 80;
var unfilteredText = $(this).text();
if (unfilteredText.length > maxChars && maxChars > 3) {
$(this).attr('title', unfilteredText);
$(this).html(unfilteredText.substring(0, maxChars-4) + '...');
}
});
return nRow;
} !#"

result <- dTable(df, aaSorting = list(c(5, "desc")), sPaginationType="full_numbers",
fnRowCallback=callback)

在 Shiny DataTables 中这可能吗?

最佳答案

我只是偶然发现了这个问题,并且能够使用此处的信息以及来自 this post 的第 4.5 节的帮助。解决这个问题。为了让它工作,您只需执行以下操作:

library(DT)
long_strings = replicate(10, paste(sample(c(0:9, letters, LETTERS), 135, replace = TRUE), collapse = ""))
dat <- data.frame(x = 1:10,
y = month.abb[1:10],
z = long_strings,
stringsAsFactors = FALSE)
DT::datatable(dat,
options = list(
rowCallback = JS("function(row, data) {",
" var max_chars = 80, full_text = data[3];",
" if (full_text.length > max_chars) {",
" $('td:eq(3)', row).attr('title', full_text);",
" $('td:eq(3)', row).html(full_text.substring(0, max_chars - 4) + '...');",
" }",
"}")))

重要的是要注意,因为我们希望它在每行的基础上运行,所以我们使用 optionsinside 函数 rowCallback范围。这与可以在整个表上使用的 callback 函数形成对比,它是 DT::datatable 的参数。

另请注意,您不必在 data[3] 上调用 .text().innerHTML 或任何类似的东西]。返回的值是该单元格的文本值。

希望将来有人偶然发现它并发现它有益。

关于javascript - 如何在 Shiny R 应用程序中设置 DataTables 行回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com