только один из двух actionButtons отвечает блестящим - PullRequest
0 голосов
/ 01 мая 2020

У меня блестящий пример приложения, как показано ниже. Мне нужно иметь два selectInput элемента управления, и каждый selectInput отвечает только тогда, когда я нажимаю на кнопку действия.

Я обнаружил, что первое действие Кнопка applyNameFilter не отвечает вообще. Это не подсвечивается при наведении. Кнопка второго действия applyTimeFilter вроде бы в порядке.

Кто-нибудь знает почему? Это так странно ... Я понятия не имею, как это исправить и ищу здесь помощь. Большое спасибо.

library(shinydashboard)
library(shiny)
library(shinyWidgets)
library(shinyjs)
library(dplyr)


df = data.frame(Name = c('A', 'B', 'C', 'A', 'B', 'C'),
       Year = c('2020', '2020', '2020', '2019', '2019', '2019'),
       Value = c(12, 33, 44, 55, 22, 11))

ui <- dashboardPage(
    dashboardHeader(title = "Example" ),
    dashboardSidebar(
        sidebarMenu(
            menuItem("tab", tabName = "tab", icon = icon("globe"))
        ) 
    ), 
    dashboardBody(

        useShinyjs(),

        tabItems(

            tabItem(tabName = "tab",

                    div(id = 'timeAllFilters',
                        box( width=12, background = 'green',

                             selectizeInput(inputId = 'year', 
                                            label='Select Year',
                                          choices = c('', '2020', '2019'),
                                          multiple=FALSE,
                                          options = list(
                                              maxItems = 1,
                                              placeholder = '',
                                              onInitialize = I("function() { this.setValue(''); }"))),

                             actionBttn(
                                 inputId = 'applyTimeFilter',
                                 label = "Apply", 
                                 style = "gradient",
                                 color = "danger",
                                 icon = icon("") ),
                             actionBttn(
                                 inputId = 'clearTimeFilter',
                                 label = "Clear", 
                                 style = "gradient",
                                 color = "danger",
                                 icon = icon("") ) 
                        )  #box
                    ), #div


                    div(id = 'nameAllFilters',
                        dropdown(
                            tags$h3("Filters"),
                            selectizeInput(inputId = 'name', 
                                           label='Select Name',
                                           choices = c('','A', 'B'),
                                           multiple=FALSE,
                                           options = list(
                                               maxItems = 1,
                                               placeholder = '',
                                               onInitialize = I("function() { this.setValue(''); }"))),

                            actionBttn(
                                inputId = 'applyNameFilter',
                                label = "Apply", 
                                style = "gradient",
                                color = "danger",
                                icon = icon("") ),
                            actionBttn(
                                inputId = 'clearNameFilter',
                                label = "Clear", 
                                style = "gradient",
                                color = "danger",
                                icon = icon("") ) 
                        )  #dropdown
                    ), #div

                    dataTableOutput('table')
            ) #tabItem
        ) #tabItems
    ) #dashboardBody
) #dashboardPage


server <- function(input, output, session) {


    df1 = reactive({
        input$applyTimeFilter
        isolate( df %>% filter(Year %in% input$year) )
    })

    # clear time filters 
    observeEvent(input$clearTimeFilter, {
        reset("timeAllFilters")
    })


    df2 = reactive({
        input$applyNameFilter
        isolate ( df1() %>% filter(Name %in% input$name) )
    })

    # clear name filters 
    observeEvent(input$clearNameFilter, {
        reset("nameAllFilters")
    })

    output$table = renderDataTable({
        DT::datatable(df2())
    })
}

shinyApp(ui = ui, server = server)

1 Ответ

1 голос
/ 01 мая 2020

Кажется, проблема в том, что actionBttn находится внутри box(). Работает без проблем. Любой шанс, что вы могли бы найти другой способ получить тот же стиль без box()?

enter image description here

...