我正在一个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,突出显示会在几分钟后消失。
我的问题是:
是否可以增加时间直到突出显示的区域消失?
有没有一种方法可以迫使侧栏滚动到突出显示的区域?
谢谢您的任何建议或答案!
答案 0 :(得分:2)
是和是,但是您必须编辑源代码及其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秒。您可以将其更改为您认为最佳的位置。
您的第二个有关滚动到活动/突出显示的代码的问题未包含在原始脚本中,但它的功能已包含在Web元素中并称为element.scrollIntoView()
。我只是在突出显示块之后插入了这段代码:
// Scroll to highlighted element
el.scrollIntoView({behavior: 'smooth'});
el
是当前指向活动代码区域以突出显示的变量名。
这是进行中的调整中的hosted working demo。