Обновите данные с помощью selectInput и вставьте в базу данных. - PullRequest
0 голосов
/ 06 апреля 2019

Попытка использовать selectInput в форме.

  • выборки извлекаются из коллекции в mongodB.
  • когда пользователь заполняет форму и отправляет (которая вставляет в другую коллекцию в монго) данные в selectInput не фиксируются.
  • попытался сделать это reactive или использовать observeEvent /updateSelectInput на сервере, но не смог заставить его работать.

вот весь код:

library(shiny)
library(mongolite)
library(jsonlite)

# which fields get saved 
fieldsAll <- c("Name", "selectOne", "tags")

saveData <- function(data) {
  # Connect to the database
}

# load all responses into a data.frame
loadData <- function() {
  # Connect to the database
}

fetchData <- function() {
  # Connect to the database
}

shinyApp(
  ui = tagList(
    navbarPage(
      tabPanel("Technology",
               sidebarPanel(
                 textInput("Name",label ='Name:'),
                 selectInput('selectOne',
                             label ='Select One:',
                             choices=head(fetchData()),
                             selected = "",
                             multiple = FALSE),
                 selectizeInput("tags", "Tags:", NULL, multiple = TRUE, options=list(create=TRUE)),
                 actionButton("submit", "Submit", class = "btn-primary")
               ),
               mainPanel(
                 tabsetPanel(
                   tabPanel("Table",
                            uiOutput("adminPanelContainer")
                   )
                 )
               )
      )
    )
  ),
server = function(input, output, session) {

formData <- reactive({
  fieldsAll 
  data <- sapply(fieldsAll, function(x) input[[x]])
  data <- t(data)
  data 
})    

observeEvent(input$submit, {
  saveData(formData())
  },
)

# render the admin panel
output$adminPanelContainer <- renderUI({
    DT::dataTableOutput("responsesTable")
})

# Update the responses table whenever a new submission is made
responses_data <- reactive({
  input$submit
  data <- loadData()
  data
})

# Show the responses in the admin table
output$responsesTable <- DT::renderDataTable({
  DT::datatable(
    responses_data(),
    rownames = FALSE,
    options = list(searching = TRUE, lengthChange = FALSE)
  )
})
}
)

1 Ответ

0 голосов
/ 10 апреля 2019

добавление столбца в df с выбранным значением работает:

formData <- reactive({
 fieldsAll 
 data <- sapply(fieldsAll, function(x) input[[x]])
 data <- c(data,selectOne= input$selectOne)        #added line   
 data <- t(data)
 data 
})  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...