R 闪亮的 DataTables ColVis 行为

2023-11-27

我得到了一个带有 DataTables 的 RStudio Shiny 服务器页面,并且我得到了 TableTools 和 ColReorder 在下面的示例中工作,但是 ColVis (Show/hide columns按钮)的行为方式与示例中的不同http://datatables.net/extensions/colvis/ :

当点击Show/hide columns按钮,该列表与下面表格中的值混合在一起,并且我无法通过再次单击该按钮或单击页面中的其他任何位置来使列表消失(同样,数据表页面中的示例行为正确)。

enter image description here

另外,我对使用感到困惑sDom对表中的不同元素进行排序。我想要Show/hide columns按钮位于右上角而不是左上角。我也不确定如何排序中的不同元素sDom以便在更改列的顺序后,保存到 CSV/Excel 或隐藏某些列将为我提供新的表格布局,而不是原始的表格布局。

有任何想法吗?

ui.R

shinyUI(pageWithSidebar(

h1('Diamonds DataTable with TableTools'),
        tagList(
                  singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$script(src='//cdn.datatables.net/colreorder/1.1.1/js/dataTables.colReorder.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$script(src='//cdn.datatables.net/colvis/1.1.0/js/dataTables.colVis.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
                  singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
                  singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');")))
                ),
        dataTableOutput("mytable")
      )
)

server.R

shinyServer(function(input, output, session) {
output$mytable = renderDataTable({
          diamonds[,1:6]
      }, options = list(
               "sDom" = 'RMDCT<"clear">lfrtip',
               "oTableTools" = list(
                       "sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
                       "aButtons" = list(
                                 "copy",
                                 "print",
                                 list("sExtends" = "collection",
                                                     "sButtonText" = "Save",
                                                     "aButtons" = c("csv","xls")
                                                )
                               )
                     )
             )
    )
})
#

此外,列排序和列重新排序也存在问题: 如果先排序,然后重新排序列并再次排序,则列标题会翻转。例如,按列深度排序,然后将第一列向左移动,然后再次单击标题进行排序,现在我们得到了标题深度,其中内容来自错误的列。查看快照:

enter image description here


一些注意事项:

当前的 data.table 版本与闪亮的 atm 不兼容。我们需要1.9.4版本。然后我们还需要预1.1.0的版本colvis。不幸的是,这引用了旧版本的 jQuery,它发出了对jQuery.browser。所以参考这个jQuery.browser需要删除它出现在第 856 到 859 行。 sDom 属性也有点棘手,它没有出现在新的 data.table 中,被替换为dom。文档位于http://legacy.datatables.net/usage/options#sDom。我们将 colVis 内容添加到class="cvclear"使用这个片段<"cvclear"C>。将其放在顶部是通过将其放在开头来完成的sDom陈述。这是可行的,但是我们需要将其右对齐。通常这可以通过添加来完成align = "right"到班级,但因为班级是通过sDom调用时我们必须使用 HTML5 csstext-align:right。我们添加这个使用tags$style.

所以上面应该允许我们使用colVis与目前的闪亮。当shiny升级到data.table时1.10.0那么我们应该能够使用当前的colVis插件文件和修复希望是不必要的。

以下对我有用:

ui.R

# get the colVis js file and delete lines 
library(RCurl)
write(getURL("https://raw.githubusercontent.com/openMF/mifosx-community-apps/master/IndividualLendingGeneralJavaScript/resources/libs/DataTables-1.9.4/extras/ColVis/media/js/ColVis.js")
      , file = 'www/colvis.js')
tf <- readLines("www/colvis.js")[-c(856:859)]
write(tf, file = "www/colvis.js")
shinyUI({
  pageWithSidebar(

    h1('Diamonds DataTable with TableTools'),
    tagList(
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdn.datatables.net/colreorder/1.1.1/js/dataTables.colReorder.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='colvis.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
      singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
      singleton(tags$head(tags$link(href='https://raw.githubusercontent.com/openMF/mifosx-community-apps/master/IndividualLendingGeneralJavaScript/resources/libs/DataTables-1.9.4/extras/ColVis/media/css/ColVis.css',rel='stylesheet',type='text/css'))),     
      singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');"))),
      singleton(tags$head(tags$link(href='https://raw.githubusercontent.com/DataTables/ColVis/18b52dfdd7255ffe96a92aadc16cadd70e3e174a/media/css/ColVis.css',rel='stylesheet',type='text/css')))  
      , tags$head(
        tags$style(HTML("
                        .cvclear{
                         text-align:right}")
        )
      )
    ),
    dataTableOutput("mytable")
  )
})

server.R

library(shiny)
library(ggplot2)

shinyServer(function(input, output, session) {
  output$mytable = renderDataTable({
    diamonds[,1:6]
  }, options = list(
    "sDom" = 'RMD<"cvclear"C><"clear"T>lfrtip',
    "oTableTools" = list(
      "sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
      "aButtons" = list(
        "copy",
        "print",
        list("sExtends" = "collection",
             "sButtonText" = "Save",
             "aButtons" = c("csv","xls")
        )
      )
    )
  )
  )
}
)

您可以在以下位置查看该应用程序:

http://128.199.255.233:3838/userApps/john/cvtestapp/

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 闪亮的 DataTables ColVis 行为 的相关文章

随机推荐

  • CFMessagePort 和沙箱

    我正在调整 MacOS 应用程序以使用沙箱 它使用一个辅助应用程序 同一包中的 exe 当我尝试在控制台中使用 拒绝 mach lookup 消息调用 CFMessagePortCreateRemote 时 该应用程序会失败 我可以看到co
  • PHP mb_ereg_replace 未替换,而 preg_replace 按预期工作

    我正在尝试将字符串中所有非单词字符替换为空字符串 除了空格 并将所有多个空格放在一起作为一个空格 以下代码执行此操作 cleanedString preg replace w name cleanedString preg replace
  • 将 numpy 中数组元素的所有组合相乘

    注意 我对 只需使用 for 循环进行操作 之类的答案不感兴趣 我想以 numpyish 的方式进行操作 我是 Python 初学者 我想使用 numpy ndarray 执行以下操作 给定一个数字序列t和另一个数字序列b 对于每一个t i
  • Asyncio 检测断开连接挂起

    我在 Python 3 4 中使用 Asyncio 我将尝试解释到目前为止我正在做的事情以及我 认为 导致问题的原因 一方面 我有一个具有阻塞操作的 UDP 连接框架 我将从该流中获取的数据创建为 SSE 格式传递给客户端的 json 这一
  • 从 Brocfile 的构建中排除文件夹

    有没有办法从 Brocfile 或任何其他地方 的构建中排除文件夹 用例是打包 我有一个由 pod 内的子应用程序组成的应用程序 例如 app modules components app modules app1 app modules
  • jquery中有没有办法将点击事件绑定到div的左边框?

    我有一个div div div 有没有办法将点击事件绑定到这个div的左边框 提前致谢 div height 100px border 4px solid black padding 10px 请尝试这个方法 div click funct
  • Python 中的浏览文件或目录对话框

    我正在用 Python 做一个小项目 我想浏览文件或目录以获取它们的路径 我正在使用 Tkinter 但只能找到一个文件浏览器 filename tkFileDialog askopenfilename parent root title
  • Read.csv() 抛出错误

    我一直在尝试读取 Excel 文件 但似乎有问题 该文件以 Excel 格式存储在 Documents 文件夹中 这些是我收到的错误消息 table lt read csv file choose header T sep t Warnin
  • 使用 MongoDB 制作类似 Twitter 的时间线

    我需要的 假设您正在使用 MongoDB 并且有一个名为users 每个用户都有一个 以下 数组 其中包含 user id他所关注的人的信息 然后你就有了另一个收藏statuses 每个状态包含 id它的作者 如何向某个用户显示他所关注的人
  • Netty 4 中的缓冲区所有权:如何管理缓冲区生命周期?

    我一直在尝试编写一个 HTTP 客户端来同时获取多个提要 最多 1k 同时也是学习 Netty 4 的练习 我的问题是 是否有关于新 ByteBuf 基础设施如何工作的很好的解释 谁 拥有 它们 它们如何共享 是吗 ChannelPipel
  • 如何设置热图中的中心颜色

    我想在seaborn 中绘制热图 我的代码如下 plt rcParams font size 13 plt rcParams font weight bold my dpi 96 fig ax plt subplots figsize 80
  • C# 代表现实世界的用法 [重复]

    这个问题在这里已经有答案了 我之前问过一个关于委托的问题 是否有人有一个必须使用委托的场景 这如何改进我的 C 代码 正如我使用它的许多场景一样 我似乎总是能够围绕它进行编程 每当您使用策略模式或者观察者模式 委托使您的工作比使用接口更容易
  • 在没有 Apple Developer Program (Xcode 7) 的情况下在 iOS 上安装应用程序

    6 月 8 日 Apple 宣布通过 Xcode 7 每个人都可以在自己的设备上安装他们开发的任何应用程序 而无需 Apple 开发者计划证书 Apple 开发者网站称您只需使用 Apple ID 登录即可 我已经在 Xcode 上做到了这
  • GroupMe 如何验证我的号码?

    我正在开发一个 iPhone 应用程序 我需要用户的电话号码 根据我读到的内容 例如这里 在 iOS 中以编程方式获取自己的电话号码 设备的电话号码在您的应用程序容器中不可用 我总是让用户输入他或她自己的号码 但是 当我前几天加入 Grou
  • OpenCL 中零拷贝的访问路径

    我对零拷贝到底是如何工作的有点困惑 1 想要确认以下内容对应于opencl中的零复制 CPU SYSTEM RAM c3 X lt gt PCI E c2 X PCI E CPU directly accessing GPU memory
  • Heroku:如何部署客户端和服务器在不同端口上运行的节点应用程序?

    我有一个 Nodejs API 作为服务器 React Redux 应用程序作为客户端 位于一个 git 项目中 https github com lafisrap fcc nightlife git 我想使用 heroku cli 将其部
  • 非静态方法需要一个目标

    我有一个控制器操作 可以在本地和生产中的 Firefox 以及本地 IE 上正常工作 但不能在生产中的 IE 上工作 这是我的控制器操作 public ActionResult MNPurchase CalculationViewModel
  • maven 使用 --add-exports 运行和构建

    我尝试在 Win 10 计算机上使用 InteliJ 和 Maven 运行我的应用程序 如果我跑 mvn clean javafx run 我的 GUI 启动 但如果我使用 org controlsfx control textfield
  • 如何使用 gson/retrofit 获取对象数组?

    我之前用过gson自动转换为pojo的 但现在我尝试使用改造将 api 结果转换为对象 只要 json 具有命名对象数组 就没有问题 e g items name foo name bar public class AnItem Strin
  • R 闪亮的 DataTables ColVis 行为

    我得到了一个带有 DataTables 的 RStudio Shiny 服务器页面 并且我得到了 TableTools 和 ColReorder 在下面的示例中工作 但是 ColVis Show hide columns按钮 的行为方式与示