dom_oh
dom_oh

Reputation: 867

Stop functions starting in shiny until button pressed

I have begun to create a web app using shiny where a user enters a search term and tweets containing that term are returned.

When I load this app the searchTwitter function begins automatically and on the main panel there is the error: Error: You must enter a query.

The search term is entered in the textInput box and there is a submitButton. You can enter a term and it works fine but I don't want the error to be the first thing the user sees.

ui.R:

library(shiny)

shinyUI(pageWithSidebar(  
  headerPanel("Twitter Generator"),

  sidebarPanel(    
    textInput("search", "Search Twitter For:", value = ""),    
    submitButton("Search")
    ),  

  mainPanel(
    h3(textOutput("search")),
    tableOutput("view"), 
    )
))

server.R:

library(shiny)
library(twitteR)

shinyServer(function(input, output) {

  datasetInput <- reactive(function(){
    rawTweets <- twListToDF(searchTwitter(paste(input$search)))
    rawTweets$cleanText <- as.vector(sapply(rawTweets$text, CleanTweet))  
    rawTweets[, colnames(rawTweets) != "created"]    
  })

  output$search <- reactiveText(function() {
    input$search    
  })

  output$view <- reactiveTable(function() {   
    head(datasetInput())
  })

})

Thanks for your help

Upvotes: 2

Views: 2466

Answers (2)

wolfseeker
wolfseeker

Reputation: 1

mainPanel(

h3(textOutput("search")),

tableOutput("view") )

try it without the second ","

Upvotes: 0

Dirk is no longer here
Dirk is no longer here

Reputation: 368579

This is a logical request for and from your application design, and you should think through how to do it.

One easy way would be to add a tickbutton providing a true/false and to skip the actual twitter search if the value is FALSE. You may need to cache the previous value of rawTweets, or set it to NULL, or ...

Upvotes: 1

Related Questions