R Shiny: редактировать столбец, используя модальное всплывающее окно - PullRequest
0 голосов
/ 02 апреля 2019

Я хотел бы иметь возможность редактировать только один столбец в таблице данных, используя модальное окно с выбранным входом. Я хочу, чтобы выбранное значение в модале было сохранено в таблице (и сохранено, когда пользователь изменяет страницу в datatable). Есть ли способ сделать это в блестящей? Вот воспроизводимый пример с тем, что я сделал до сих пор. Заранее спасибо:)

library("shiny")
library("datasets")
library("DT")
library("shinyBS")

ui = shinyUI(fluidPage(
  useShinyjs(),
  verbatimTextOutput("selections"),
  DT::dataTableOutput("mtcarsTable"),
  bsModal("mtCarsModal", "My Modal", "",  htmlOutput("my_numbers"), 
          actionButton("save_changes","Save changes"), size = "small")
))

on_click_js = "
Shiny.onInputChange('mydata', '%s');
$('#mtCarsModal').modal('show')
"

convert_to_link = function(x) {
  as.character(tags$a(href = "#", onclick = sprintf(on_click_js,x), x))
}

shinyApp(
  ui = ui,
  server = function(input, output, session) {


    output$my_numbers <- renderUI({
      selectInput("my_numbers", "", c(1,2,3,4,5,input$mydata ), selected=input$mydata) 
    })

    mtcarsLinked <- reactive({   
      mtcars$mpg <- sapply(
        datasets::mtcars$mpg,convert_to_link)
      return(mtcars)
    })

    output$mtcarsTable <- DT::renderDataTable({
      DT::datatable(mtcarsLinked(), 
                    class = 'compact',
                    escape = FALSE, selection='multiple'
      )
    })

    output$selections <- renderText(input$my_numbers)

  }
)
...