rhandsontable formatting renderer
https://jrowen.github.io/rhandsontable/#formatting
https://cran.r-project.org/web/packages/shinyjs/vignettes/shinyjs-extend.html
http://onesixx.com/ggplot-ggplot_build/
groupOfColor <- ggplot_build(p)$data[[1]][, 1] %>% unique
http://onesixx.com/rhandsontable-2/
### DATA ---- MAT = matrix(runif(9, -1, 1), nrow = 3, dimnames = list(LETTERS[1:3], LETTERS[1:3])) diag(MAT) = 1 MAT[upper.tri(MAT)] = MAT[lower.tri(MAT)] DF <- data.frame(MAT) ### Color ---- groupOfColor <- c("#F8766D", "#00BA38", "#619CFF") ### Make Javascript ---- jsColor_Header <- "function(instance, td, row, col, prop, value, cellProperties){ Handsontable.renderers.NumericRenderer.apply(this, arguments); if(col==0){ " # temp <- NULL # for (i in seq_along(groupOfColor)-1){ # temp[i] <- str_c( " if(row==",i,") { td.style.background = '", groupOfColor[i], "';} ","\n" ) # } # jsColor_Main <- str_c(temp,collapse = " ") # jsColor_Main <- str_c(unlist(lapply(0:(length(groupOfColor)-1), # function(x)str_c( " if(row==",x,") { td.style.background = '", groupOfColor[x+1], "';} ","\n" ))), collapse=" ") jsColor_Main <- sapply(0:(length(groupOfColor)-1), function(x) str_c("if(row==",x,") {td.style.background='", groupOfColor[x+1], "';}","\n")) %>% str_c(collapse=" ") jsColor_Footer <- "}}" jsColor <- str_c(jsColor_Header, jsColor_Main, jsColor_Footer) # jsColor <- " # shinyjs.backgroundCol = function(instance, td, row, col, prop, value, cellProperties){ # Handsontable.renderers.NumericRenderer.apply(this, arguments); # if(col==0){ # if(row==0){td.style.background='#F8766D';} # if(row==1){td.style.background='#00BA38';} # if(row==2){td.style.background='#619CFF';} # } # }" # TABLE ---- rhandsontable(DF, readOnly = TRUE, width = 750, height = 300) %>% hot_cols(renderer = jsColor)
shiny
library(shiny) library(rhandsontable) ### Make Javascript ---- jsColor_Header <- "function(instance, td, row, col, prop, value, cellProperties){ Handsontable.renderers.NumericRenderer.apply(this, arguments); if(col==0){ " jsColor_Main <- sapply(0:(length(groupOfColor)-1), function(x) str_c("if(row==",x,") {td.style.background='", groupOfColor[x+1], "';}","\n")) %>% str_c(collapse=" ") jsColor_Footer <- "}}" jsColor <- str_c(jsColor_Header, jsColor_Main, jsColor_Footer) ui <- fluidPage( rHandsontableOutput("table") ) server <- function(input,output,session)({ ### DATA ---- MAT = matrix(runif(9, -1, 1), nrow = 3, dimnames = list(LETTERS[1:3], LETTERS[1:3])) diag(MAT) = 1 MAT[upper.tri(MAT)] = MAT[lower.tri(MAT)] DF <- data.frame(MAT) ### Color ---- groupOfColor <- c("#F8766D", "#00BA38", "#619CFF") output$table <- renderRHandsontable({ # TABLE ---- rhandsontable(DF, readOnly = TRUE, width = 750, height = 300) %>% hot_cols(renderer = jsColor) }) }) shinyApp(ui,server)