Olá pessoal, tudo bem?
Eu gostaria de saber como faço para ter o numero de cliques que dei em determinado botão utilizando shiny:
Abaixo meu codigo:
---
title: "Untitled"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
library(shinydashboard)
library(tidverse)
library(ggplot2)
library(mgcv)
dataset <- diamonds
Column {data-width=150}
Chart A
actionButton("action", "Action")
Column {data-width=350}
Chart B
ggplot() +
geom_point(data = tibble(x = c(30,40,50),y = c(58,68,78)), aes(x =x, y = y))
Chart C
reactive({
input$action
})
No codigo acima ele considera somente um clique. Há como obter essa informação?
Alguma ajuda?
Oi, Diogo
O valor que o widget actionButton
vai retornar para input$action
é justamente o número de cliques feitos no botão. Veja um exemplo aqui: Shiny - Widget Gallery
William acho q minha pergunta não foi muito clara.
O q eu quero é o seguinte:
Se eu clico 3 vezes ele me da o número 3. Ok
Se eu clico novamente 3 vezes ele acumula a soma e me da 6.
Eu gostaria q o input$action
“zerasse”. Entende?
Clico 3 vezes me dá 3
input$action
Zera
Clico 5 vezes me dá 5
input$action
Zera
E assim por diante…
Ah, entendi!
Nesse caso é mais complicado, porque você tem que determinar o que são “cliques seguidos” e contar esses cliques. Fiz uma solução aqui usando Sys.time()
e valores reativos. Defini que para serem seguidos, dois cliques precisam ter ocorrido com 0.5 segundo ou menos de intervalo.
library(shiny)
ui <- fluidPage(
h1("Conta o num. de cliques seguidos"),
br(),
actionButton("botao", "Clique aqui"),
br(),
br(),
textOutput("num_total_cliques")
)
server <- function(input, output, session) {
hora <- reactiveVal(value = Sys.time())
num_cliques <- reactiveVal(value = 0)
observeEvent(input$botao, {
tempo_entre_cliques <- Sys.time() - hora()
if (tempo_entre_cliques > 0.5) {
num_cliques(1)
} else {
num_cliques(num_cliques() + 1)
}
hora(Sys.time())
})
output$num_total_cliques <- renderText({
glue::glue("Cliques seguidos: {num_cliques()}")
})
}
shinyApp(ui, server)