2017-12-12 18 views
1

'날짜'정보의 데이터 테이블에 배경색을 적용하려고합니다 : 녹색 = 최신, 노란색 = 오래됨, 빨간색 = 정말 오래됨. 기본적으로 '스타일 전체 테이블'히트 맵 예제는 다음과 같습니다. https://rstudio.github.io/DT/010-style.html반짝이 날짜 데이터 테이블의 styleInterval()이있는 배경색

내 코드는 대략 다음과 같습니다.

library(wakefield) 
library(shiny) 
library(DT) 

backlogTbl <- r_data_frame(n = 5, 
date_stamp, 
date_stamp, 
date_stamp, 
date_stamp) %>% 
r_na(prob=.25) 

backlogDT <- datatable(backlogTbl) %>% 
       formatStyle(names(backlogTbl), 
        backgroundColor = styleInterval(Sys.Date() - days(c(7,2)), 
        c("red", "yellow", "green"))) 

나는이 모든 null 이외의 배경 대신/녹색/황색 또는 적색이 값에 따라하지만 난 내 중단 점, 즉에 개별 셀을 비교할 때

backlogTbl[1,1] < Sys.Date() - days(c(7,2)) 

내가 볼 수의 녹색 실행하면 내가 정의한 간격 내에서 값은입니다.

홍채 데이터 세트를 제 코드로 통과하면 문제가 그것이 날짜 데이터라는 것을 의심스럽게합니다. 나는 명백한 무엇인가를 놓치고있는 것처럼 느낀다 ...

미리 감사하십시오!

답변

0

현재 지원되지 않는 것 같아서 GitHub issue을 만들었습니다.

해결 방법 한 가지 해결 방법은 날짜의 정수 버전을 보유하고 그 스타일을 기반으로하는 열을 만드는 것입니다. 그런 다음 정수 열을 숨 깁니다.

library(shiny) 
library(DT) 
library(tidyverse) 
library(lubridate) 

ui <- fluidPage(
    titlePanel("DateDemo"), 
    sidebarLayout(
    sidebarPanel(
    ), 
    mainPanel(
     DTOutput('tbl'), 
     width = 10, 
     height = "800px") 
) 
) 

server <- function(input, output) { 
    output$tbl <- 
    renderDT({ 
     splitDate <- as.Date("2018-02-02") 
     data_frame(ExampleDate = as.Date(c("2018-01-01","2019-01-01"))) %>% 
     mutate(ExampleDateInt = as.integer(ExampleDate)) %>% #make column with integer dates 
     datatable(options=list(columnDefs = list(list(visible=FALSE, targets=c(2))))) %>% #hide the integer column 
     formatStyle(columns = "ExampleDate", 
        valueColumns = "ExampleDateInt", 
        backgroundColor = styleInterval(as.integer(splitDate),c("#FB717E","#89EC6A"))) #format based on the integer column 
    }) 
} 
shinyApp(ui = ui, server = server)