0

[質問は昨日、 https: //groups.google.com/d/msg/shiny-discuss/1UmzvZJwM54/gdMmX7QQ-eIJ にも投稿されましたが、これまでのところ回答はありません]

私は、いくつかのジャーナル記事http://spark.rstudio.com/ttso/alt/の生のaltmetricデータを表とrCharts (NVD3)チャートの両方として表示するShinyアプリに取り組んできました

サンプルデータを含む私のコードhttps://gist.github.com/tts/6990101

ここまではうまくいきましたが、http://impactstory.org/api-docsで説明されている JavaScript ウィジェットをテーブルに含めようとすると、問題が発生しました。この HTML の例httpのように、ウィジェット自体は問題なく動作します。://users.tkk.fi/sonkkila/alt/arts.html - しかし、私の Shiny テーブルでは、それらが表示される最後の (IS) 列は空です。

テーブルをサニタイズしないままにしておくと、HTML コードがそこにあることがわかりますが、サニタイズすると消えてしまいます。server.R の renderTable コード: https://gist.github.com/tts/6990101#file-server-r-L69-L85

HTML ソースから、ImpactStory スクリプトがページの上部にあることもわかります。

すべてのポインタは大歓迎です!

免責事項: 私は R と Shiny でしばらく遊んでいますが、自分自身を JavaScript/CSS の初心者だと考えているため、ここで明らかな何かが欠けている可能性があります。

編集: 明確にするために: もちろん、テキスト要素の値がないため、サニタイズされた HTML コードはその時点で消えます。a) 異なる JS スクリプト間に衝突があるか、異なる順序で来る必要があるか (ImpactStory に問い合わせる必要がある)、b) xtable() が出力を生成する方法に問題があるか、c) Shiny が impactstory.js スクリプトと通信する方法がわからない、または d) Shiny がスクリプトをまったく認識しない。カスタム出力コンポーネントを作成する必要がありますか?

EDIT2: 問題は、反応的に出力されたテーブルが JavaScript を認識しないという事実にあります。テスト済み: ImpactStory JS が記事について知る必要があるすべての属性を含む非動的 HTML コードを ui.R に手動で追加すると、ウィジェットは正常にレンダリングされます。また、server.R に、出力されるデータ フレームのスクリプト要素を追加すると、ウィジェットがレンダリングされますが、それを停止することはなく、ループが発生します :) 必要なのはここで質問されているのと同様、質問番号 2 で

4

1 に答える 1

0

さて、私はきれいではありませんが、今のところはうまくいく1つの解決策を見つけました.

renderTable は xtable を使用して HTML テーブルをレンダリングします。その際、独自のサニタイズ関数を定義できます。 http://cran.r-project.org/web/packages/xtable/vignettes/xtableGallery.pdf (p. 7)を参照してください。

ここでは、列ヘッダー 'Widget' をスクリプトを定義する文字列に置き換えるだけです。

output$table <- renderTable({  
   ...
  }, include.rownames = FALSE, sanitize.text.function = function(s) sub("Widget", "<script type=\"text/javascript\" src=\"http://impactstory.org/embed/v1/impactstory.js\"></script>", s))

理由はまだわかりませんが、最初はダブル ウィジェットのセットがあります。

お待ち頂きまして、ありがとうございます。

于 2013-10-20T12:34:51.960 に答える