2017-02-11 4 views
1

Beispiel:Shiny selectizeInput mit Funktion "entfernen all-at-once"

glänzendes Beispiel Nach app.R-Datei enthält eine selectizeInput UI. Die ausgewählten Elemente können mit entfernt werden.

enter image description here

library(shiny) 
library(dplyr) 

ui= fluidPage(
    sidebarLayout(
    sidebarPanel(
     selectizeInput(inputId= "cyl", label= "cyl", 
        choices= sort(unique(mtcars$cyl)), 
        selected= sort(unique(mtcars$cyl)), 
        multiple=T, 
        options = list(plugins= list('remove_button'))) 
    ), 
    mainPanel(
     tableOutput("tab") 
    ) 
) 
) 

server= function(input, output) { 
    df_filtered= reactive({ 
    mtcars %>% 
    {if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)} 
    }) 
    output$tab= renderTable(df_filtered()) 
} 

shinyApp(ui, server) 

Frage:

Gibt es eine selectize.js Option zugänglich in glänzend, die eine Funktion fügt "entfernen all-at-once" anstelle des „entfernen Sie eine "by-one" wie im Beispiel gezeigt?

Ich studierte die selectize.js docu aber steckte fest.

+0

Möchten Sie es in das Formular integriert haben oder wäre ein Button darunter ausreichend? – BigDataScientist

+0

@BigDataScientist Best-Case in das Formular integriert. – user2030503

+0

Wenn niemand mit einem integrierten Weg kommt, könnte ich mit der nicht-fancy Weg helfen;) – BigDataScientist

Antwort

1

ich glaube, der Weg um Lösung zu verwenden reset_button ist jedoch die selected= Option sollte auf Minium (eine Option?) Geändert werden, denn es ist der Reset-Wert ist

library(shiny) 
library(shinyjs) 
library(dplyr) 

ui= fluidPage(
    sidebarLayout(
    sidebarPanel(
     useShinyjs(), 
     div(id = "form", 
      selectizeInput(inputId = "cyl", 
         label = "cyl", 
         choices = sort(unique(mtcars$cyl)), 
         selected=sort(unique(mtcars$cyl))[1], multiple=TRUE)), 
      actionButton("reset_input", "Reset") 
    ), 
    mainPanel(
     tableOutput("tab") 
    ) 
) 
) 

server= function(input, output) { 

    observeEvent(input$reset_input, { 
    shinyjs::reset("form") 
    }) 

    df_filtered= reactive({ 
    mtcars %>% 
    {if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)} 
    }) 
    output$tab= renderTable(df_filtered()) 
} 

shinyApp(ui, server) 

Nach der Reset Taste drücken, alle selected Werte werden sofort gelöscht und der primäre Wert selectizeInput wird zurückgegeben.

+0

Thx viel. Diese Lösung ist in puncto Funktionalität machbar, leider fügt sie einen Knopf hinzu, den ich vermeiden muss. Ich suchte nach einer Lösung, die in die Form integriert ist. Danke trotzdem für deinen Beitrag und die verbrachte Zeit. – user2030503

Verwandte Themen