rhandsontable: условное окрашивание строк в зависимости от значения ячейки - PullRequest
1 голос
/ 19 марта 2020

Дорогие Rhandsontable гуру,

в моем приложении r Shiny В настоящее время у меня есть Rhandsontable с 9 столбцами, который ведет себя так: если последний столбец таблицы («Комментарии») содержит строку «пропущено», то эта строка получает желтый фон (td.style.background = 'yellow').

Вопрос: Кроме того, я хочу, чтобы любая строка была выделена зеленым фоном, если последний столбец ('Комментарии') содержит строку ' прочее »(см. закомментированный код для row_highlight2).

Обратите внимание, что в последнем столбце никогда не будет строк: «пропущено» и «прочее».

Я не знаю, как добавить второе условие. Большое спасибо за вашу помощь!

    output$session_table <- renderRHandsontable({
        req(input$select_a_person)
        person_nr <- which(person_names_reactive$names %in% input$select_a_person)
        row_highlight = which(grepl("[M|m][I|i][S|s]|[S|s][E|e][D|d]",
                                    sessions_reactive$sessions[[person_nr]]$Comments)) - 1
        # row_highlight2 = which(grepl("[V|v][S|s][E|e]|[E|e]",
        #                             sessions_reactive$sessions[[person_nr]]$Comments)) - 1

        col_highlight = c(5, 8) - 1
        rhandsontable(
            sessions_reactive$sessions[[person_nr]], 
            row_highlight = row_highlight, col_highlight = col_highlight,
            width = 1000, height = 500) %>% 
            hot_rows(fixedRowsTop = 1) %>%

          hot_col("P. Owes", format = "$0,000.00", language = "en-US") %>%
          hot_col("I. Owes", format = "$0,000.00", language = "en-US") %>% 

            hot_table(highlightCol = TRUE, highlightRow = TRUE) %>% 
            hot_validate_numeric(cols = c(3, 5), min = 0, max = 500) %>% 
            hot_col(c(1, 3, 5, 6, 8), valign = 'htCenter') %>%
            hot_cols(renderer = "
            function (instance, td, row, col, prop, value, cellProperties) {
                     Handsontable.renderers.NumericRenderer.apply(this, arguments);

                     if (instance.params) {
                       hrows = instance.params.row_highlight
                       hrows = hrows instanceof Array ? hrows : [hrows]
                       hcols = instance.params.col_highlight
                       hcols = hcols instanceof Array ? hcols : [hcols]

                       if (hrows.includes(row)) {
                         td.style.background = 'yellow' 
                       }

                       if (hcols.includes(col)) {
                         td.style.fontWeight = 'bold'
                         td.style.color = '#fc0f03'
                       }
                     }
            }")

    })
...