我发现 timevis 包对于显示时间段非常有用,并且它按预期工作以显示我的数据。
我使用 addCustomTime() 函数添加了一条可拖动的垂直线,这也很好用,但是,我发现我无法获取该线的当前值。
底层 js 小部件公开了与元素交互的函数,但我无法成功访问它们。我试图使用 shinyjs 来捕捉时间线发出的事件,但我也无法让它工作。
我在 R 和闪亮方面相当舒服,但在 js 方面非常新手,所以我怀疑我只是错过了这个技巧。
在我的 ui.R 中,我创建了一个 timevisOutput 对象:
fluidPage(
timevisOutput("timeline")
)
我正在尝试收听“timechanged”事件:http: //visjs.org/docs/timeline/#Events
当我在 server.R 中添加带有 shinyjs 的侦听器时,我能够看到“mouseenter”事件,但“timechanged”处理程序似乎没有触发:
onevent("mouseenter", "timeline", print("timeline: mouseenter"))
onevent("timechanged", "timeline", print("Saw timechanged!"))
visjs 文档有这个关于“如何监听选择事件”的片段:
timeline.on('select', function (properties) {
alert('selected items: ' + properties.items);
});
我尝试在 shinyjs::extendShinyjs() 调用中添加它,但这也不起作用。我添加了一个示例来监听有效的 keydown 事件:
$(document).keypress(function(e) { alert('Key pressed: ' + e.which); });
所以这让我觉得我没有正确引用时间线对象。那里的 $(document) 让我觉得我不知道如何正确获取时间线元素。
由于我可以看到时间轴的 mouseenter 事件,但看不到它的 timechanged 事件,我认为我需要 .on() 调用,但是,我认为我没有正确引用时间轴元素/。
在@timelyportfolio 的第一个回复之后:
那是一篇很棒的文章,谢谢!我能够确认事件的外观;我已经能够收听 _selected 事件,但很高兴看到。
我正在尝试获取自定义时间值,它在图表中使用可拖动的线,添加如下:
addCustomTime("mytimevis", Sys.Date(), "CustomTimeId")
底层 javascript 小部件 ( http://visjs.org/docs/timeline ) 的文档显示了一个事件 ("timechanged") 和一个方法 ("getCustomTime()") 以访问其值,但我没有'在跟踪中看不到事件,我也无法弄清楚如何使方法调用起作用。
“timechanged”事件没有出现在跟踪中,这让我觉得我需要从小部件的文档中调用 .on() 才能启用该事件:
timeline.on('select', function (properties) {
alert('selected items: ' + properties.items);
});
我一直在努力使该方法调用起作用,因为理想情况下我想捕捉它的变化,而且如果我能让它工作,我应该能够让 getCustomTime() 方法也能工作!