на первом экране не работают условные кнопки блестящего слайда - PullRequest
1 голос
/ 08 октября 2019

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

Когда я нажимаю кнопку «Далее» и затем возвращаюсь к первому экрану с помощью кнопки «Назад», условие работает, и я не могу идти вперед, пока не нажму хотя бы один параметр, но первыйвремя не работает таким образом.

Это нормальное поведение? Возможно ли установить другой тип условия в этом случае?

Я сделал небольшой пример, чтобы показать проблему:

library(shiny)
library(shinyglide)

ui <- fixedPage(
  titlePanel("shinyglide modal example"),
  sidebarLayout(
    sidebarPanel(
      p('Hello World')
      ),
    mainPanel()
    )
  )

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

  modal_controls <- glideControls(

    list(prevButton(),
         firstButton(class = "btn btn-danger",`data-dismiss`="modal","No, thanks !")),

    list(nextButton(),
         lastButton(class = "btn btn-success",`data-dismiss`="modal","Done"))

    )

  glide_modal <- modalDialog(

    title = "Startup assistant",easyClose = FALSE,footer = NULL,

    glide(custom_controls = modal_controls,

          screen(next_condition="input.options.length > 0",
                 p("First, please select an option"),
                 checkboxGroupInput("options", "Options", choices=c('a','b','c'),selected=NULL)
                 ),

          screen(p("Next, please select a number"),
                 numericInput("number", "Number", value = 1, min = 0)
                 ),

          screen(p("Thanks, we're all set !"))

          )

    )

  showModal(glide_modal)

}

shinyApp(ui, server)

1 Ответ

1 голос
/ 08 октября 2019

Док говорит, что glide работает в пользовательском интерфейсе. Вы можете использовать shinyBS::bsModal для создания модального в пользовательском интерфейсе, но для этого требуется кнопка для запуска модального режима (хотя вы можете использовать немного JavaScript для запуска модального режима при запуске).

library(shiny)
library(shinyglide)
library(shinyBS)

modal_controls <- glideControls(

  list(prevButton(),
       firstButton(class = "btn btn-danger",`data-dismiss`="modal","No, thanks !")),

  list(nextButton(),
       lastButton(class = "btn btn-success",`data-dismiss`="modal","Done"))

)

ui <- fixedPage(
  titlePanel("shinyglide modal example"),

  sidebarLayout(
    sidebarPanel(
      p('Hello World'), 
      actionButton("start", "Start")
    ),

    mainPanel(

      bsModal("glidemodal", "Startup assistant", trigger = "start",

              glide(custom_controls = modal_controls,

                    screen(next_condition = "input.options.length > 0",
                           p("First, please select an option"),
                           checkboxGroupInput("options", "Options", 
                                              choices=c('a','b','c'), selected=NULL)
                    ),

                    screen(p("Next, please select a number"),
                           numericInput("number", "Number", value = 1, min = 0)
                    ),

                    screen(p("Thanks, we're all set !"))

              )

      )
    )
  )
)

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

}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...