#javascript #r #datatable #shiny #popup
#javascript #r #datatable #блестящий #всплывающее окно
Вопрос:
Я хотел бы иметь возможность редактировать только один столбец в таблице данных, используя модальный ввод с выбором. Я хочу, чтобы выбранное значение в модальном было сохранено в таблице (и сохранялось, когда пользователь меняет страницу в datatable). Есть ли какой-либо способ сделать это в shiny? Вот воспроизводимый пример того, что я сделал до сих пор. Заранее спасибо 🙂
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)
}
)
Комментарии:
1. Смотрите DT 0.4: Редактирование таблиц
2. Возможно, DTedit соответствует вашим потребностям.
3. Спасибо за предложение. Проблема с DTedit заключается в том, что он корректно работает только для выбора одной строки, в то время как я хочу выбрать несколько строк для дальнейшей обработки.
4. Я не понимаю, что вы хотите сделать с вводом select. Почему бы не использовать редактируемую таблицу?