Использование нескольких виджетов Rhandsontable в Shiny

После введения в Rhandsontable я пытаюсь раскрасить определенные строки в одном из моих виджетов rHandsontableOutput, используя следующий код:

DF = data.frame(val = 1:10, bool = TRUE, big = LETTERS[1:10],
            small = letters[1:10],
            dt = seq(from = Sys.Date(), by = "days", length.out = 10),
            stringsAsFactors = FALSE)
col_highlight = 2
row_highlight = c(5, 7)
rhandsontable(DF, col_highlight = col_highlight, 
          row_highlight = row_highlight,
          width = 550, height = 300) %>%
 hot_cols(renderer = "
   function(instance, td, row, col, prop, value, cellProperties) {
  Handsontable.renderers.TextRenderer.apply(this, arguments);

  tbl = this.HTMLWidgets.widgets[0]

  hcols = tbl.params.col_highlight
  hcols = hcols instanceof Array ? hcols : [hcols] 
  hrows = tbl.params.row_highlight
  hrows = hrows instanceof Array ? hrows : [hrows] 

  if (hcols.includes(col) && hrows.includes(row)) {
    td.style.background = 'red';
  }
  else if (hcols.includes(col)) {
    td.style.background = 'lightgreen';
  }
  else if (hrows.includes(row)) {
    td.style.background = 'pink';
  }

  return td;
 }")

Это прекрасно работает в Rstudio. Однако, как указано во введении:

При использовании этого подхода в блестящем приложении или в документе с более чем одним виджетом логика поиска виджета должна быть более устойчивой.

HTMLWidgets.widgets.filter(function(widget) {
   // this should match the table id specified in the shiny app
   return widget.name === "hot"
 })[0];

Мой вопрос, как я должен включить это в мой код?

Спасибо заранее.

0 ответов

Другие вопросы по тегам