Shiny - наблюдать за событием появляется без щелчка - PullRequest
0 голосов
/ 29 июня 2018

Я хотел бы разработать приложение с двумя кнопками: 1. Рассчитать 2. Обновить

Когда я нажимаю кнопку «Рассчитать», появляется вторая кнопка. Когда я нажимаю на вторую кнопку, появляется предложение: «Le resultat est ...». Кнопка обновления очистит веб-страницу. Теперь страница чиста и отображаются только две начальные кнопки: «Рассчитать» и «Обновить».

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

Вопрос: Как я могу получить предложение «Le resultat est ...» только после нажатия на вторую кнопку?

Ниже моего кода:

library(shiny)
data_Modele <- deval_Shiny

ui <- fluidPage(
  actionButton("runif", "Uniform"),
  actionButton("reset", "Clear"),
  uiOutput("plot")
)

server <- function(input, output){

  v <- reactiveValues(data = NULL)

  observeEvent(input$runif, {
    v$data <- round(runif(1, min=1, max=nrow(deval_Shiny)),digits = 0)

    output$Button<- renderUI({
    actionButton("button", "click me")
  })
  })

  observeEvent(input$reset, {
    v$data <- NULL
  }) 

  observeEvent(input$button, {
  output$Reponse <- renderText(paste0("Le resultat est :",v$data))
  })


  output$plot <- renderUI({
    if (is.null(v$data)) return()

    tagList(
     uiOutput("Button"),
     uiOutput("Reponse")
    )
  })
}

shinyApp(ui, server)

Заранее благодарю за помощь:)

J.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вы можете использовать функции shinyjs и show и hide:

library(shiny)
library(shinyjs)

deval_Shiny <- mtcars
data_Modele <- deval_Shiny

ui <- fluidPage(
  useShinyjs(),
  actionButton("runif", "Uniform"),
  actionButton("reset", "Clear"),br(),
  actionButton("button", "click me"),
  textOutput("Reponse")
)

server <- function(input, output){

  observe({
    hide("button")
    hide("Reponse")
  })

  v <- reactiveValues(data = NULL)

  observeEvent(input$runif,{
    show("button")
    v$data <- round(runif(1, min=1, max=nrow(deval_Shiny)),digits = 0)
  })

  observeEvent(input$reset, {
    hide("button")
    hide("Reponse")
  }) 

  output$Reponse <- renderText(paste0("Le resultat est :",v$data))

  observeEvent(input$button, {
    show("Reponse")
  })
}

shinyApp(ui, server)

enter image description here

0 голосов
/ 29 июня 2018

Если вы хотите, чтобы ваш uiOutputs вел себя отдельно, я бы посоветовал не связывать их вместе внутри output$plot. Поэтому, если вам не нужно, чтобы они были вместе, я бы добавил переменную show_response, чтобы контролировать, хотите ли вы отображать ответ или нет.

library(shiny)

ui <- fluidPage(
  actionButton("runif", "Uniform"),
  actionButton("reset", "Clear"),
  uiOutput("Button"),
  uiOutput("Reponse")
)

server <- function(input, output){

  v <- reactiveValues(data = NULL)
  show_response <- reactiveValues(state = FALSE)

  observeEvent(input$runif, {
    v$data <- round(runif(1, min = 1, max = 100), digits = 0)
  })

  observeEvent(input$reset, {
    v$data <- NULL
    show_response$state <- FALSE
  }) 

  observeEvent(input$button, {
    show_response$state <- TRUE
  })

  output$Button <- renderUI({
    req(v$data) 
    actionButton("button", "click me")
  })

  output$Reponse <- renderText({
    req(show_response$state)
    paste0("Le resultat est :", v$data)
  })

}

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