Разрешить условное редактирование ячеек в rHandsonTable в R блестящий - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть Rhandsontable в R Shiny. Эта таблица имеет 5 столбцов. Я ищу функциональность, в которой, если я редактирую столбец 1, я не смогу редактировать столбец 2, и наоборот, то есть пользователь не должен иметь возможность редактировать оба столбца (столбец 1 и столбец 2) одновременно. Остальные столбцы не должны быть затронуты.

Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 13 января 2019

Вы можете достичь того, что вы хотите, соответственно отобразив Handsontables. Вы можете использовать наблюдающее событие, которое проверяет изменения в handsontable в зависимости от измененного столбца и устанавливает желаемые столбцы для чтения только. Для этого я предлагаю использовать реактивные значения и таким образом вы можете получить столбец, который был изменен просто by column_index = input $ hot $ changes $ changes [[1]] [[2]].

Надеюсь, это поможет.

library(rhandsontable)
library(shiny)


ui <- fluidPage(
  mainPanel(
    rHandsontableOutput("hot")
  )
)

server = function(input, output, session){

  df <- data.frame(a = rnorm(10), b = rnorm(10))
  values <- reactiveValues(data = df)


  observeEvent(
    input$hot$changes$changes, # observe any changes in the cells of the rhandsontable
    {

      column_index =input$hot$changes$changes[[1]][[2]] # get the index of the column that was changed
      values$data <- hot_to_r(input$hot) 
      if(column_index == 1){
        output$hot <- renderRHandsontable({
          rhandsontable(values$data) %>%
            hot_col('a', readOnly = T)
        })
      }
      else{
        output$hot <- renderRHandsontable({
          rhandsontable(values$data) %>%
            hot_col('b', readOnly = T)
        })
      }

    }
  )

  output$hot <- renderRHandsontable({
    rhandsontable(values$data)
  })

}

shinyApp(ui, server)
...