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() 呼び出しでそれを追加しようとしましたが、それも機能しません。うまくいったキーダウンイベントをリッスンする例を追加しました:
$(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() メソッドも機能させることができるはずです!