2016-03-30 18 views
0

Kullanıcı bir tabsetPanel içindeki iki sekme arasında geçiş yaptığında fileInput kontrolünü sıfırlamam gerekir.Dosyayı temizleSatıcı sekmesinde bir sekme içindeki sekmelerin değiştirilmesi hakkında giriş kontrolü

Bu konuyla ilgili mevcut soruları inceledim, ancak bunları gereksinimlerime uyarlayamadım. how can I update a shiny fileInput object?

Net bir düğme veya yenileme düğmesine sahip değilim - anahtar açık sekmeleri bunu yapmalıdır. tersi -

Aşağıda "FixedwidthTab" adlı ilk sekmede ise dosya yüklemek ve ardından "DelimitedTab" denilen ikinci sekmesine geçebilirsiniz

fluidPage(
    fluidRow(column(width=10, 
    tabsetPanel(id="tabPanelOptions", 
     tabPanel(value="FixedwidthTab", "Fixed width", 
     br(), 
     fluidRow(column(width=12, fileInput('layoutfile', 'Upload Excel file to define layout', accept = '.xlsx'))) 
    ), 
     tabPanel(value="DelimitedTab", "Delimited", 
     br(), 
     fluidRow(column(width=5, textInput("separator", "Field separator:",","))), 
     fluidRow(
      column(width=5, checkboxInput("quotes","Quoted texts?",FALSE)), 
      column(width=5, checkboxInput("header","Files contains header (column names)",FALSE)) 
     ), 
     fluidRow(column(width=10, textInput("expcolumns", "Expected variables in file","27"))), 
     fluidRow(column(width=10, fileInput('headerfile', '(Optional) Upload CSV file to define attribute names', accept = c('text/csv','text/comma-separated-values', 'text/tab-separated-values', 'text/plain','.csv','.txt')))), 
     br(), 
     fluidRow(
      column(width=5,conditionalPanel(condition= "input.header == false",uiOutput("choose_columns"))), 
      column(width=5,conditionalPanel(condition= "input.header == false", uiOutput("rename_columns")))) 
     ) 
    ) 
    ) 
) 
) 

Kullanıcı benim ui.R olduğunu. Her iki sekmede de fileInput kontrolleri var ve sekme geçişinde sıfırlamak için onlara ihtiyacım var.

cevap

0

bu sizin için çalışıyor mu? fileInputs'u, ilgili sekme seçildiğinde fileInputs'u yeniden oluşturan bir sunucu tarafı işlenmiş UI ile değiştirdim. Aşağıda

bakınız kodu: Verdiğiniz cevap hakkında sorularınız varsa

shinyApp(
    ui = shinyUI(
    fluidPage(
     fluidRow(column(width=10, 
     tabsetPanel(id="tabPanelOptions", 
      tabPanel(value="FixedwidthTab", "Fixed width", 
      br(), 
      fluidRow(column(width=12, uiOutput("file1"))) 
     ), 
      tabPanel(value="DelimitedTab", "Delimited", 
      br(), 
      fluidRow(column(width=5, textInput("separator", "Field separator:",","))), 
      fluidRow(
       column(width=5, checkboxInput("quotes","Quoted texts?",FALSE)), 
       column(width=5, checkboxInput("header","Files contains header (column names)",FALSE)) 
      ), 
      fluidRow(column(width=10, textInput("expcolumns", "Expected variables in file","27"))), 
      fluidRow(column(width=10, uiOutput("file2"))), 
      br(), 
      fluidRow(
       column(width=5,conditionalPanel(condition= "input.header == false",uiOutput("choose_columns"))), 
       column(width=5,conditionalPanel(condition= "input.header == false", uiOutput("rename_columns"))) 
      ) 
     ) 
     ) 
    )) 
    ) 
), 

    server = function(input, output){ 

    output$file1 <- renderUI({ 
     if(input$tabPanelOptions == "FixedwidthTab"){ 
     fileInput('layoutfile', 'Upload Excel file to define layout', accept = '.xlsx') 
     } 
    }) 

    output$file2 <- renderUI({ 
     if(input$tabPanelOptions == "DelimitedTab"){ 
     fileInput('headerfile', '(Optional) Upload CSV file to define attribute names', 
     accept = c('text/csv','text/comma-separated-values','text/tab-separated-values', 
     'text/plain','.csv','.txt')) 
     } 
    }) 

    } 
) 

, isteyiniz!