rpivottable:下拉列表在错误的位置打开

rpivottable: drop down lists open in wrong position

单击分组类别附近的下拉箭头时,相应的列表会在页面顶部打开。 (起初我认为它根本不起作用。)。正确位置在箭头旁边,如图所示。

rmarkdown 可重现示例:

---
title: "rpivottable_test"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown


`r stringi::stri_rand_lipsum(10)`


```{r cars}
library(rpivotTable)

data(mtcars)

```

## Including Plots

You can also embed plots, for example:

```{r pressure, echo=FALSE}
rpivotTable(mtcars,rows="gear", cols=c("cyl","carb"),width="100%", height="400px")
```

这是会话信息:

> sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19043)

Matrix products: default

locale:
[1] LC_COLLATE=Greek_Greece.1253 
[2] LC_CTYPE=Greek_Greece.1253   
[3] LC_MONETARY=Greek_Greece.1253
[4] LC_NUMERIC=C                 
[5] LC_TIME=Greek_Greece.1253    

attached base packages:
[1] stats     graphics  grDevices utils    
[5] datasets  methods   base     

other attached packages:
[1] rpivotTable_0.3.0

loaded via a namespace (and not attached):
[1] htmlwidgets_1.5.4 compiler_4.1.2   
[3] fastmap_1.1.0     htmltools_0.5.2  
[5] tools_4.1.2       knitr_1.36       
[7] digest_0.6.28     xfun_0.27        
[9] rlang_0.4.12 

** WIP 答案,不再进行更新时将删除。 **

定义问题。

从当前陈述的问题中不完全清楚,但有您的可重现示例(它展示了不正确的视觉格式),然后是屏幕截图视觉(它展示了正确的视觉风格)。

作为参考,正确的视觉风格来自包 vignette here


TLDR - 有效的答案

---
title: "rpivottable_test"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)

```

## R Markdown


`r stringi::stri_rand_lipsum(10)`


```{r cars, echo}
library(rpivotTable)

data(mtcars)

piv <- rpivotTable(mtcars,rows="gear", cols=c("cyl","carb"), elementId = "pvtTable")
htmlwidgets::saveWidget(piv, "pivot.html")
```

## Including Plots

You can also embed plots, for example:


## Answer

```{r pivot, echo=FALSE}
htmltools::includeHTML('pivot.html')
```

说明

  • 含糊地挥手*

所以,这就是我的不足之处,我并不真正理解为什么,因为从表面上看,到目前为止一切看起来都一样。

我调查的事情:

  • htmltools&htmlwidgets的版本
  • pvtUI & pvtFilterBox div 和 css 类
  • Rmarkdown/knitr
  • 的html渲染选项
  • 使用 runtime: shiny 呈现文档并使用 renderRpivotTable({ }) 调用包装 RpivotTable 定义
  • elementId 选项因为 css 可能从意外的基本 elementId 中孤立出来??
  • ??
  • 当前的工作理论 - 来自 Vignette 源代码行 907 中 Rmd 的无效样式标签在示例 Rmd?
  • 中编织成 link

所以。如果您对 Knitr、html 或与上述相关的其他主题有任何想法,请发表评论!

我希望我能在有人问到这个问题时找到它。很抱歉这么久才给您答复。

所以未来的修复 - 我会将问题和我提出的解决方案发送给 rpivotTable 的 Github 维护者。

现在,您可以使用

devtools::install_github("fraupflaume/rpivotTable")

我知道它与元素 leftright 的创建有关。当我查看是否还有其他人遇到此问题时,我发现那些使用带有 pivottable.js 的 React JS 的人在 2018 年针对一个非常相似的问题提交了一张罚单。我并没有花很多时间去寻找它们究竟改变了什么,但它确实告诉我我需要查看那个 JS 包中的东西。

所以我 fork 了 rpivotTable 仓库并修改了位于

的 js 文件

rpivotTable/inst/htmlwidgets/lib/pivottable/pivot.min.js

附加点击功能后,它使用的是 position(),它为您提供 父项中的位置。显然,当它呈现时,它正在使用它作为页面位置。

我将该函数 position() 更改为 offset() 哇!有效。

在我的代码库中,脚本被“美化”了(由 Atom 的美化包提供)。如果您想查看它,您会在该脚本的第 745 行看到此更改。

我在图片中使用了你的 RMD 代码,但我在“George.Dontas”中添加了 names(mtcars)[10]