【问题标题】:How to extend time of active code highlight in a shiny app?如何在闪亮的应用程序中延长活动代码突出显示的时间?
【发布时间】:2019-04-04 16:41:11
【问题描述】:

我正在开发一个 Shiny 项目,其中 Shiny 应用程序包含大量代码。我想以交互方式调试应用程序的代码:

runApp("ShinyApp.R", launch.browser = TRUE, display.mode = "showcase")

display.mode = "showcase" 参数在我的浏览器中显示应用程序旁边的活动代码,并突出显示用户与应用程序交互的区域。这是一个很好的例子:https://shiny.rstudio.com/articles/action-buttons.html

这个答案中提到了另一个如何使用它的例子:How do I highlight active code in a shiny app?

我发现具有挑战性的是,因为我的应用程序的脚本包含超过 800 行代码,所以当它出现时我无法看到突出显示(它消失得太快)。正如这里提到的:https://shiny.rstudio.com/articles/display-modes.html,高亮显示会在片刻后消失。

我的问题是:

是否可以增加高亮区域消失的时间?

有没有办法强制侧边栏滚动到高亮出现的区域?

感谢您的任何建议或回答!

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    是的,是的,但是您必须编辑源代码并且它是 Javascript。需要修改的代码位于inst/www/shared/shiny-showcase.js。如果您想从那里开始,我已经在 my fork of Shiny 上进行了代码更改。

    关于高亮持续时间的第一个问题,由第 112 行的 JQuery highlight effect 处理:

    // End any previous highlight before starting this one
    jQuery(el)
      .stop(true, true)
      .effect("highlight", null, 5000);
    

    原来是 1600,也就是 1.6 秒,所以我在这里把它提高到 5 秒。您可以将其更改为您认为最好的任何内容。

    关于滚动到活动/突出显示的代码的第二个问题未包含在原始脚本中,但这样做的能力已融入网络元素并称为element.scrollIntoView()。我只是在高亮块之后立即插入了这段代码:

    // Scroll to highlighted element
    el.scrollIntoView({behavior: 'smooth'});
    

    el 是当前指向要突出显示的活动代码区域的变量名。

    这里是hosted working demo 正在实施的调整。

    【讨论】:

    • 感谢您的回答。我已经修改了我的包库中的相关源代码行并且它可以工作 - 我已经接受了你的回答。注意:如果有人需要查找其闪亮包的位置,只需在 R Studio 中运行 .libPaths()
    • 感谢您的精彩回答 :) 今天对我帮助很大!
    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    相关资源
    最近更新 更多