title: Action Button and Isolate seem to not work as expected in Shiny
body: <p>I've got a Shiny app that makes a plot according to user selection. As I only want a new plot after action button is selected, I've put plotting code inside "isolate". The result is that a new plot appears as soon as the action button is pressed, but sometime it also appears also without pressing on the button. In particular when I select subcategorized parameters that appears via a conditional panel ("Alpha", "Beta", "Gamma",...). In the original version also changing the date may cause the plot to be re-executed. Here's my code: what am I missing?</p>
  
  <pre><code>callingColorPlot &lt;- function(var) {
    listaMia&lt;- list("alpha" = 2, "beta" = 3, "gamma" = 4, "delta" = 5, "epsilon" = 6, "zeta" = 7, "eta" = 8)
    valori &lt;- (c(1:8))*10
    require(shiny)
    shinyApp(
      ui = fluidPage(
        titlePanel("Title"),
        sidebarLayout(
          sidebarPanel (position = "left", 
                        helpText(h4("Specificy:")), br(),       
                        selectInput("selectedColor", label = (strong("Select your color")), 
                                    choices = list( "Yellow selection", "Orange selection", "Blue selection", "Gray selection"), selected = ""),
                        conditionalPanel (
                          condition = "input.selectedColor == 'Yellow selection'",
                          selectInput("subCategory", label = (strong("Select sub categories")), choices = listaMia, selected="")
                        ),  
                        conditionalPanel (
                          condition = "input.selectedColor == 'Blue selection'",
                          checkboxGroupInput("letterCheckbox", label = strong("Select your letter"), 
                                             choices = listaMia, selected = "")
                        ), 
                        br(),
                        dateRangeInput("dates", label = (strong("Time Interval")), start='2012-01-02', end='2012-10-31', min='2012-01-02', max='2012-10-31'), 
                        sliderInput("sliderBegin", label = strong("Starting hour"), min = 0, max = 23, value = 0),
                        uiOutput("sliderInput"),
                        br(), actionButton("okButton", "Go")
          ),
          mainPanel(plotOutput("plotResult")))  
      ), 
      server = function(input, output, session) 
        {
        output$sliderInput &lt;- renderUI ({
          sliderInput("sliderFinal", label = strong("Final hour"), min = 0, max = 24, value = 24);           
        })     
        output$plotResult &lt;- renderPlot ( {
          input$okButton
          if (input$okButton == 0)
          return()              
           isolate ({ 
             plotWidth=c(430, 430, 430, 430, 430, 430, 430, 430)
             plotNames=c("1", "2", "3", "4", "5", "6", "7", "Tot")
            if (input$selectedColor == 'Yellow selection') { 
              color='yellow'
              xlabel="Yellow selection"
              mainTitle="Yellow selection"
            }else if (input$selectedColor == 'Orange selection') {
              color='orange'
              xlabel="Orange selection"
              mainTitle="Orange selection"  
            }else if (input$selectedColor == 'Blue selection') {              
              if (length(input$letterCheckbox)==0)
                return()
              color='darkblue'
              xlabel="Blue selection"
              mainTitle="Blue selection"
            }else if (input$selectedColor == 'Gray selection') {      
              color='darkgray'
              xlabel="Gray selection"
              mainTitle="Gray selection"
            } 
            mychart &lt;- barplot (valori, col = color, border='white'
                                , width=plotWidth, space=0.2
                                , xlab=xlabel, ylab="values", names.arg=plotNames
                                , ylim=c(0, 100), xlim=c(150, 3750), main=mainTitle)  
          }) 
        })
      })
  } 
  </code></pre>