2016-01-19 39 views
0

我開發了一個R shiny應用程序,使用優秀的DT包來處理數據表。其中一個表使用styleColorbar輔助函數,它在表格單元格中產生與每個單元格的值成比例的彩色條。DT包:styleColorbar()不適用於Android平板電腦

在Windows中運行的Chrome和Firefox中運行良好,但在Chrome上運行Chrome瀏覽器或在Sony Experia Android平板電腦上運行本機瀏覽器時,不會顯示彩條。

這裏的演示網頁也是如此:https://rstudio.github.io/DT/functions.html。 所以我不認爲這是我使用代碼的具體問題。

該函數基本上是一個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平板電腦上測試過,因此不確定問題所在。

回答

0

我在Github上提出了同樣的問題,可以在這裏找到易輝的回覆:https://github.com/rstudio/DT/issues/222。他認爲這個問題可以通過使用-webkit-來解決。其他在線信息也表明,這應該適用於較舊的Android系統。我會在這裏發佈自己的代碼,以幫助他人:

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

我不知道如何檢測手機的Android版本是從R內的系統上運行,但這是另外一個問題。

相關問題