如何延长闪亮应用程序中活动代码突出显示的时间?

gof*_*idh 3 r shiny

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

runApp("ShinyApp.R", launch.browser = TRUE, display.mode = "showcase")
Run Code Online (Sandbox Code Playgroud)

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

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

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

我的问题是:

是否可以增加突出显示区域消失的时间?

有没有办法强制侧边栏滚动到突出显示的区域?

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

Nat*_*ate 5

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

对于关于突出显示持续时间的第一个问题,这是由第 112 行的JQuery 突出显示效果处理的:

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

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

关于滚动到活动/突出显示的代码的第二个问题未包含在原始脚本中,但该功能已烘焙到 Web 元素中并称为element.scrollIntoView(). 我刚刚在突出显示块之后立即插入了这段代码:

// Scroll to highlighted element
el.scrollIntoView({behavior: 'smooth'});
Run Code Online (Sandbox Code Playgroud)

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

这里是正在运行的调整的托管工作演示。