Invoke_map имеет трудности с поиском аргументов при создании динамического интерфейса пользователя c - PullRequest
0 голосов
/ 03 марта 2020

Основная идея кода заключается в создании динамического / реактивного пользовательского интерфейса, который показывает выбранное пользователем количество блестящих виджетов.

Как мне нужно установить / определить входные данные (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)


Любые предложения приветствуются

...