I have a Shiny app rendering a datatable within which I would like to incorporate 2 conditional formatting features
- Add commas to numbers greater than 1000
- Apply blue background to column 2 values when values column 2 values are >= 1.3x values in column 1. Apply red background when column 2 values are <= .7x values in column 1.
I asked a question about how to incorporate commas in this SO post. I I remove the rowcallback argument in the script below, the commas render properly. Similarly, if I comment out the dom and formatCurrency arguments, the highlighting conditional fomatting renders properly, as well.
js_cont_var_lookup <- reactive({
JS(
'function(nRow, aData) {
for (i=2; i < 3; i++) {
if (parseFloat(aData[i]) > aData[1]*(1.03)) {
$("td:eq(" + i + ")", nRow).css("background-color", "aqua");
}
}
for (i=2; i < 3; i++) {
if (parseFloat(aData[i]) < aData[1]*(.7)) {
$("td:eq(" + i + ")", nRow).css("background-color", "red");
}
}
}'
) # close JS
})
shinyApp(
ui = fluidPage(
DTOutput("dummy_data_table")
),
server = function(input, output) {
output$dummy_data_table <- DT::renderDataTable(
data.frame(A=c(100000, 200000, 300000), B=c(140000, 80000, 310000)) %>%
datatable(extensions = 'Buttons',
options = list(
pageLength = 50,
scrollX=TRUE,
dom = 'T<"clear">lBfrtip',
rowCallback = js_cont_var_lookup()
)
) %>%
formatCurrency(1:2, currency = "", interval = 3, mark = ",")
) # close renderDataTable
}
)
However, when I leave both in, the datatable hangs with a 'Processing' message.
from Displaying commas and conditional highlighting in Rshiny - not compatible
No comments:
Post a Comment