2016-03-22 3 views
5

Ich baue ein R glänzend Dashboard und wenn ich meine Daten in eine Tabelle mit dem DT-Paket und renderdatatable(). Am Anfang jeder Spalte habe ich Filter, das Suchfeld ist zu schmal, um den Text zu sehen und eine Option auszuwählen. Hier ist ein Bild:R glänzend datatable Filter Box Größe zu schmal, um den Text zu sehen

enter image description here

Kennt jemand eine Möglichkeit, um die Breite zu erhöhen?

Hier ist mein Code für das Datatable-Code in der server.r:

output$table <- DT::renderDataTable(DT::datatable({  
    data <- rv$data 
    if (input$sour != "All") { 
     data <- data[data[,1] == input$sour,] 
    }else{data} 
    if (input$sour1 != "All") { 
     data <-data[data[,2] == input$sour1,] 
    }else{data} 
    if (input$tran != "All") { 
     data <-data[data[,3] == input$tran,] 
    }else{data} 
    },filter='top')) 

hier ist der Code in der ui.r:

tabItem(tabName = "ResultsTable", 
       fluidPage( 
       headerPanel(
        h1("List", align="center", style = "font-family: 'Verdana';font-weight: 800; line-height: 1.1; color: #151515;")), 
       # fluidRow(
       #  column(8, DT::dataTableOutput("table",width = "100%"),offset = 2)))), 
       #     # Create a new Row in the UI for selectInputs 
       fluidRow(

        column(4, 
         selectInput("sour", 
            "Name:", 
            c("All", 
             unique(as.character(df[,1])))) 
       ), 
        column(4, 
         selectInput("sour1", 
            "Number:", 
            c("All", 
             unique(as.character(df[,2])))) 
       ), 
        column(4, 
         selectInput("tran", 
            "Code:", 
            c("All", 
             unique(as.character(df[,3])))))), 
       # Create a new row for the table. 
       fluidRow(column(11, DT::dataTableOutput("table",width = "95%"))))) 

Ich versuchte dies, aber es hat nicht funktioniert:

output$table <- DT::renderDataTable(DT::datatable({  
    data <- rv$data 
    if (input$sour != "All") { 
     data <- data[data[,1] == input$sour,] 
    }else{data} 
    if (input$sour1 != "All") { 
     data <-data[data[,2] == input$sour1,] 
    }else{data} 
    if (input$tran != "All") { 
     data <-data[data[,3] == input$tran,] 
    }else{data} 
    },filter='top',options = list(
    autoWidth = TRUE, 
    columnDefs = list(list(width = '200px', targets = "_all")) 
))) 

Antwort

1

löste ich dieses Problem mit CSS:

td[data-type="factor"] input { 
    width: 100px !important; 
} 

Setzen my.css Datei in www Unterverzeichnis und Link zu ihr:

input { 
    width: 100px !important; 
} 

Sie können auch nur diese Art zu factor Filter anwenden

shinyApp(
    ui = fluidPage(
     tags$head(
      tags$link(
       rel = "stylesheet", 
       type = "text/css", 
       href = "my.css") 
     ), 

     DT::dataTableOutput(...) 
    ) 
+0

Dies macht es so, dass die Auswahlfelder groß genug sind, aber es scheint, dass dies zu Problemen mit den Filtern führen kann, die mit den Spaltennamen kollidieren. –