Как вставить переключатель в блестящий интерфейс на основе другого переключателя ввода? - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь создать базовую пользовательскую форму в блестящем режиме, на основе которой мне нужно выполнить некоторые вычисления.Для того, чтобы я это сделал, нужно понимать материал и форму каждого изделия.Есть 2 материала, и каждый материал имеет две формы.

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

Есть два материала, которые пользователь может выбрать - Золотой или Серебряный.Переключатели для формы будут отображаться на основе пользовательского ввода для материала.Если они выбирают серебро, форма должна быть круглой или квадратной.Если они выбирают золото, форма должна быть либо «треугольник», либо «прямоугольник»

Заранее благодарим за помощь.

Я пытался использовать функцию insertUI вместе с оператором if, но не смог вставить кнопки по мере необходимости.

    library(shiny)

    library(shinydashboard)

    header <- dashboardHeader(title = "My Calculator")

    sidebar <- dashboardSidebar(

      sidebarMenu(

id = "tabs",

menuItem("Main Menu", tabName = "main_menu", icon = icon("dashboard")))

body <- dashboardBody( 
  tabItems(
    tabItem(tabName = "main_menu",
            h2("Please select a material and shape"), 
            hr(), 
            radioButtons(inputId = "material",
                         label = "Material: ",
                         choices = c("Silver" = "silver", 
                                     "Gold" = "gold"))
    ))



    ui <- dashboardPage(title = 'This is my Page title', header, sidebar, body, skin='blue')


    server <- function(input, output, session) { 



    }

Переключатели для формы будут отображаться в зависимости от пользовательского ввода материала.Если они выбирают серебро, форма должна быть круглой или квадратной.Если они выбирают золото, форма должна быть либо «треугольник», либо «прямоугольник»

1 Ответ

1 голос
/ 25 марта 2019

Вы можете использовать conditionalPanel().

Примечание: условие в JavaScript, поэтому будьте осторожны, если вы пишете другое условие, так как есть способы, отличающиеся от синтаксиса R.

Также обратите внимание, что это создает два отдельных входа (по одному на каждое серебро и золото), поэтому вам нужно будет включить это в любой вывод.

Это будет ваш новый body:

body <- dashboardBody( 
  tabItems(
    tabItem(tabName = "main_menu",
            h2("Please select a material and shape"), 
            hr(), 
            radioButtons(inputId = "material",
                         label = "Material: ",
                         choices = c("Silver" = "silver", 
                                     "Gold" = "gold")),
            conditionalPanel(condition = "input.material == 'silver'", 
                             radioButtons("silver_shape",
                                          label = "Shape:", 
                                          choices = c("Round", "Square"))),
            conditionalPanel(condition = "input.material == 'gold'", 
                             radioButtons("gold_shape",
                                          label = "Shape:", 
                                          choices = c("Triangle", "Rectangle")))
    ))
)
...