Как я могу включить отключить кнопку действия на основе строки в строке R блестящий? - PullRequest
1 голос
/ 13 апреля 2020

Я создал приложение, которое позволяет пользователю выполнить запрос и получить результаты из rodb c. По умолчанию генерируемый в TextAreaInput запрос выбирается * из $ tableName. У меня есть кнопка действия 'Go' рядом с этим полем ввода, и когда я нажимаю go, запрос выполняется и результат выбирается в теле. Теперь я хочу, чтобы кнопка «Go» была включена только тогда, когда в запросе выбора есть предложение «когда». Короче говоря, пользователь должен иметь возможность выполнять только тогда, когда он включил в запрос предложение where. Я связал str_detect и grpl, но они, похоже, не работают. Помощь Эми очень ценится.

С уважением

body <- dashboardBody(
  fluidRow(
    width=12,
    column(
      width=11,
      textAreaInput2( inputId = "query",label = "Enter Query", width = "100%")
    ),
    column(
      width = 1,
      actionButton(inputId = "runQuery", label = "Go",style="width:70px",class="btn-lg"),
      class="align-middle",style = "height:100px;text-align:center;margin-top:25px;"
    ),style = "height:100px"
  ),
  dataTableOutput('table'),
  fluidRow(width = 12, column(
    width=10)
)

ui <- dashboardPage(skin = "green", header,sidebar, body)


server <- function(input, output, session) {
  resultTable <-  data.frame()
  observeEvent(input$tableName, {
    nQuery = paste("SELECT * FROM ",input$tableName,sep = "" )
    updateTextAreaInput(session, "query", value = nQuery)
  })
  observeEvent(input$runQuery, {
    resultTable <<- sqlQuery (channel = conn, query = input$query)
    output$table <- renderDataTable(resultTable)}
  )

1 Ответ

1 голос
/ 14 апреля 2020

shinyjs может включить / отключить кнопки для нас. grepl может сказать нам, содержит ли строка другую строку. Приведенный ниже минимальный пример показывает это в действии:

library(shiny)
library(shinyjs)

ui <- fluidPage(

    shinyjs::useShinyjs(),

    textAreaInput("txt_query", label = "Enter Query", width = "100%"),

    actionButton("btn_run", label = "Run Query")

)

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

    #Observe the query text box (runs when the query text box changes)
    observeEvent(input$txt_query, {

        #Check if the query contains the word 'when'
        if (grepl("when", input$txt_query) == TRUE) {

            #Enable the run button
            shinyjs::enable("btn_run")

        } else {

            #Disable the run button
            shinyjs::disable("btn_run")

        }

    })

}

shinyApp(ui, server)
...