添加一个错误的弹出窗口,警告闪亮

Mar*_*ras 14 r shiny

有没有办法在Shiny中添加一个带有警告或其他消息的弹出窗口(一个可关闭的窗口)- 我用来构建我的Web应用程序的R包?

我一直在寻找,但没有任何结果.

Kev*_*hey 21

虽然我认为没有任何本机可用shiny,但您可以尝试添加jQueryUI到您的应用程序并使用Dialog小部件.见http://jqueryui.com/dialog/.

(不呢?)幸运的是,你将被迫编写一些JavaScript来使它工作.


按照@ GSee的建议,这是一个非常小的例子,说明如何使其发挥作用.

你需要下载jQueryUI并设置一个闪亮的项目,结构如下:

.
??? server.R
??? ui.R
??? www
    ??? css
    ?   ??? jquery-ui.css
    ??? images
    ?   ??? animated-overlay.gif
    ?   ??? ui-bg_flat_0_aaaaaa_40x100.png
    ?   ??? ui-bg_flat_75_ffffff_40x100.png
    ?   ??? ui-bg_glass_55_fbf9ee_1x400.png
    ?   ??? ui-bg_glass_65_ffffff_1x400.png
    ?   ??? ui-bg_glass_75_dadada_1x400.png
    ?   ??? ui-bg_glass_75_e6e6e6_1x400.png
    ?   ??? ui-bg_glass_95_fef1ec_1x400.png
    ?   ??? ui-bg_highlight-soft_75_cccccc_1x100.png
    ?   ??? ui-icons_222222_256x240.png
    ?   ??? ui-icons_2e83ff_256x240.png
    ?   ??? ui-icons_454545_256x240.png
    ?   ??? ui-icons_888888_256x240.png
    ?   ??? ui-icons_cd0a0a_256x240.png
    ??? js
        ??? jquery-ui.js
Run Code Online (Sandbox Code Playgroud)

(所有图像图标都是jQueryUI的一部分)

接下来,将一个名为scripts.js(或任何您喜欢的)的www/js文件添加到该文件夹,其中包含以下内容

$( function() {
  $("#dialog").dialog();
})
Run Code Online (Sandbox Code Playgroud)

这会调用jQueryUI dialog带有id的元素的初始值设定项dialog.

接下来,有一个server.Rui.R如下:

server.R
--------
library(shiny)
shinyServer( function(input, output, session) {

  ## a very unsafe, basic access to the R console
  output$dialog <- renderPrint({

    code <- input$console
    output <- eval( parse( text=code ) )
    return(output)

  })

})
Run Code Online (Sandbox Code Playgroud)

ui.R
----

library(shiny)

shinyUI(bootstrapPage(
  includeCSS("www/css/jquery-ui.css"),  

  includeScript("www/js/jquery-ui.js"),
  includeScript("www/js/scripts.js"),

  textInput("console", "Enter an R Command"),
  uiOutput("dialog")

))
Run Code Online (Sandbox Code Playgroud)

现在,如果你这样做runApp(),你应该看到评估你写入文本输入的任何代码的结果console出现在dialog框中.

现在,问题是,我们如何最小化它,或者仅在产生错误代码时显示它?我将不得不离开你,因为我认为这将是棘手的.一些选择:

  1. 弄清楚如何让我们的R代码发送或触发一些JavaScript来显示或隐藏元素.这里使用此暂时禁用按钮的示例(不是我的).

  2. 将(JavaScript)观察者或触发器附加到生成的输出,如果您看到错误(或输出以某种方式符合其他方式),则显示该框; 否则隐藏它.

  3. 生成实际的Shiny输入/输出对以根据需要处理行为.(http://rstudio.github.io/shiny/tutorial/#building-inputs上的简要教程)

如果你想从jQueryUI对话框中获得更多,你也可以在这里尝试扩展jQuery-dialogextend .

并且,免责声明:此处的控制台仅用于演示目的; 请不要将任何运行未经过处理的代码的闪亮应用程序放入野外!


小智 13

有一个新的R包 - shinyBS带来许多twitter引导功能,如闪亮的警报,工具提示,弹出窗口,模态对话框,进度条等...

shinyBS