0

データテーブルを処理する優れたパッケージを使用して Rshinyアプリを開発しました。DTテーブルの 1 つは、styleColorbar各セルの値に比例してテーブル セルに色付きのバーを生成するヘルパー関数を使用します。

これは、Windows で実行されている Chrome および Firefox では問題なく動作しますが、Chrome または Sony Experia Android タブレットのネイティブ ブラウザで実行すると、色付きのバーが表示されません。

これは、 https ://rstudio.github.io/DT/functions.html のデモンストレーション Web ページにも当てはまります。したがって、コードの使用に固有の問題ではないと思います。

関数は基本的にJSラッパーです...そして私はJSの知識がまったくありません。

styleColorBar = function(data, color, angle=90) {
  rg = range(data, na.rm = TRUE, finite = TRUE)
  r1 = rg[1]; r2 = rg[2]; r = r2 - r1
  JS(sprintf(
    "isNaN(parseFloat(value)) || value <= %s ? '' : 'linear-gradient(%sdeg, transparent ' + (%s - value)/%s * 100 + '%%, %s ' + (%s - value)/%s * 100 + '%%)'",
  r1, angle, r2, r, color, r2, r
  ))
}

次のコンテキストで使用しています。

dat = DT::datatable(diversity,
      options = list(
        scrollX = TRUE, 
        scrollY = 400,
        autoWidth = TRUE,
        columnDefs = list(
          list(visible = FALSE, targets = hidden)
        )
      ),
      style = "bootstrap", 
      class = "table-striped table-compact", 
      extensions = c("FixedColumns"),
      )
       %>%
formatStyle(
      c(1),
      background = styleColorBar(c(0,diversity[,1]), 'olivedrab'),
      backgroundSize = '99% 90%',
      backgroundRepeat = 'no-repeat',
      backgroundPosition = 'center'
    ) 

何が間違っているのか、これが Android プラットフォームで機能するための回避策を誰かが提案できますか?

編集:これは、以前のバージョンの Android との互換性の問題がある線形勾配構文の問題である可能性があると思います。ただし、Android 4.1 タブレットでテストしたので、何が問題なのかわかりません。

4

1 に答える 1

0

私は Github で同じ質問をしました。yihui の回答はhttps://github.com/rstudio/DT/issues/222にあります。彼は、この問題は を使用することで解決できると考えてい-webkit-ます。他のオンライン情報も、これが古い Android システムで動作することを示唆しています。他の人を助けるために彼のコードをここに投稿します:

styleColorBar2 = function(...) {
  sub('linear-gradient', '-webkit-linear-gradient', styleColorBar(...))
}

R 内からシステムで実行されている Android のバージョンを検出する方法はわかりませんが、それは別の質問です。

于 2016-02-05T17:45:26.117 に答える