我制作了一个闪亮的应用程序,它连接到远程数据库(PostgreSQL)来提取表格,以便在我的应用程序中显示,并使用表格中的值生成用户交互式图(箱线图、散点图、直方图)。
该应用程序的另一部分是在应用程序中呈现托管在网站(例如 GitHub)上的 HTML 文件。
这是我使用的代码的一部分:
output$genotyping <- renderUI({
if (creds_reactive()$user == "Admin") {
fluidPage(useShinyjs(),
titlePanel("Github HTML file"),
mainPanel(
h3("Click this button to display/hide the html file"),
br(),
br(),
actionButton("genotype", "Click me!"),
hidden(
div(id = 'text_div',
htmlOutput("includeHTML")
) )
)
) }
else {
mainPanel(
fluidRow(
align = "center",
h3("Sorry! You don't have the permissions required to view this content.")
)
)
}
})
request <- GET("link to html file")
github.html <-content(request, as ="text")
observeEvent(input$genotype, {
toggle('text_div')
output$includeHTML <- renderText({github.html})
})
Run Code Online (Sandbox Code Playgroud)
我正在使用这里的代码。然而,它已经过时了,Dropbox 已经删除了 HTML 渲染支持/禁用了一些 Java 功能,因此 HTML 文件无法加载,因此在我的代码中使用 Dropbox 链接会在我的应用程序中生成一个空白页面。因此,我使用 GitHub 来存储我的文件。文件本身相当大,因此 GitHub 本身无法渲染它。我使用了 github 生成的原始代码的链接以及 raw.githack 来呈现带有 URL 的文件。屏幕快速刷新后,这两个选项都能够在我的应用程序中呈现 HTML 文件。问题是,所有其他交互式表格和图表在加载到 HTML 文件后都无法使用。任何选项卡(来自 tabsetPanel)的字体都会变成红色,并且无法加载之前创建的任何表格和绘图。
我会将报告存储在本地驱动器/文件夹上,但这不太实用,因为这只是一份报告(还会有更多报告,而且我用来运行闪亮服务器的 EC2 实例会太满)。
编辑:我应该注意到,即使将它放在本地文件夹中并使用 includeHTML 也有与使用 URL 相同的问题,所以也许这只是在 Shiny 应用程序中渲染 HTML 的问题?
我也不太确定 http 请求如何与 GET 函数配合使用。是否创建一个新的连接来取代原来的连接?为什么我的绘图/表格在通过 URL 渲染到 HTML 文件后不再加载?我应该断开 GET 连接吗?
我还使用一个名为shinymanager的包来创建一个带有凭据和密码的安全应用程序登录,因此我有“if”语句来生成自定义的UI。这里还使用shinyJS来创建隐藏效果。按下按钮将显示/隐藏报告。
如果我还能提供什么,请告诉我。谢谢。
您是否尝试过使用 aniframe代替includeHTML?
像这样的事情应该这样做:
library(shiny)
addResourcePath("html", file.path(R.home(), "doc", "html"))
ui <- fluidPage(
tags$iframe(src="html/about.html", height="200px", width="100%", frameborder="0", scrolling="yes")
)
server <- function(input, output, session) {}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)