Основная идея кода заключается в создании динамического / реактивного пользовательского интерфейса, который показывает выбранное пользователем количество блестящих виджетов.
Как мне нужно установить / определить входные данные (arg1, arg2) в invoke_map (arg1, arg2), чтобы заставить его работать - независимо от количества функций / inputwidgets и их различных аргументов для отображения нескольких пользовательских интерфейсов?
Код ниже работает, НО я хочу, чтобы он был реактивным (см .: FAILS но хотел):
#-----------------------------------------------------.
library(shiny)
library(shinyWidgets)
library(DT)
library(purrr)
library(dplyr)
library(data.table)
#-----------------someWidgetsAndTheirArguments---------.
inputWidget <- list("selectInput", "sliderInput", "textInput", "numericInput")
inpWidgArgs <- list(list(inputId = "inpUI01", label = "seInp01", choices = seq(1,20,1), selected = 10),
list(inputId = "inpUI02", label = "slInp02", min= 0, max = 100, value = c(25,75) ),
list(inputId = "inpUI03", label = "txInp03", value = "enter some text"),
list(inputId = "inpUI04", label = "nrInp04", value = 1000000) )
# underlying model has many inputs, some will require change, User is to select which
#----------------presetPickerInput---------------------
if (interactive()) {
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
pickerInput(inputId = "pkInp01",
label = "change nr & type of inputs to tweak",
choices = inputWidget,
selected = inputWidget[1:2],
multiple = TRUE,
options = list(`actions-box` = TRUE,
`selected-text-format`= "count",
`count-selected-text` = "{0} inputs of {1} selected") ),
uiOutput("inpUI"),
),
mainPanel(
dataTableOutput("table01")
)
)
)
#-----------------generateArguments4invoke_map----------.
server <- function(input, output, session) {
# dynamic fails = WANTED
pckdWdgt <- reactive(inputWidget[match(input$pkInp01, inputWidget)]) # FAILS but WANTED
wdgtArgs <- reactive(inpWidgArgs[match(input$pkInp01, inputWidget)]) # FAILS but WANTED
# static works but NOT wanted
pckdWdgt <- (inputWidget[match(inputWidget[1:2], inputWidget)]) # works but NOT wanted
wdgtArgs <- (inpWidgArgs[match(inputWidget[1:2], inputWidget)]) # works = NOT wanted
#------------------renderAsManyInputUisAsPicked------------
output$inpUI <- renderUI({
invoke_map(pckdWdgt, wdgtArgs) # FAILS because Arguments not in processable format?!
})
}
}
#-----------------------------------------------------
shinyApp(ui, server)
Любые предложения приветствуются