Как отключить реакцию двойного щелчка для указанных c столбцов в R Datatable - PullRequest
1 голос
/ 26 февраля 2020

Я работаю над DT в моем приложении Shiny, которое содержит объекты Shiny Input и некоторые редактируемые столбцы.

Вот воспроизводимый пример,


library(shiny)
library(DT)

ui <- fluidPage(
  fluidRow(
  DTOutput('table1')

  )
)

helper_fun <- function(FUN, len, id, ...) {
  inputs = character(len)
  for (i in seq_len(len)) {
    inputs[i] = as.character(FUN(paste0(id, i), selected = 1, ...))
  }
  inputs
}

server <- function(input, output, session) {
  output$table1 <- renderDT({
    dat <- data.frame(Name = c('A', 'B')
                      , column1 = helper_fun(FUN = selectInput, len = length(2), id = 'selector_', label = NULL, choices = c(1, 2),  width="100px") 
                      )
    dat
  }, editable = list(target = 'cell', disable = list(columns = c(2))), server = FALSE, escape = FALSE
  , options = list(preDrawCallback = JS('function() { Shiny.unbindAll(this.api().table().node()); }'), 
                   drawCallback = JS('function() { Shiny.bindAll(this.api().table().node()); } ')))
}

shinyApp(ui, server)

Я хотел бы иметь возможность редактировать один из столбцов и отключить редактирование столбцов с блестящими значениями ввода. Использование editable = list(target = 'cell', disable = list(column = c(2))) не дает желаемого эффекта, так как это отключает редактирование, но предоставляет базовый html при двойном щелчке по ячейке.

Как отключить эффект двойного щелчка для определенных столбцов?

1 Ответ

0 голосов
/ 27 февраля 2020

Вот способ:

CSS <- "
table tbody td:nth-child(3) {pointer-events: none;}
table tbody td:nth-child(3)>div {pointer-events: auto;}
"

ui <- fluidPage(
  tags$head(tags$style(HTML(CSS))),
  fluidRow(
    DTOutput('table1')
  )
)
...