Как добавить поисковый виджет в мое блестящее приложение? - PullRequest
1 голос
/ 25 апреля 2019

Я хочу иметь возможность добавить виджет поиска в свое приложение, ссылка: https://aquayaapps.shinyapps.io/big_data/, чтобы при вводе любого слова, например воды, выводились все слова, содержащие воду.

Пока что яЯ только смог добавить виджет поиска, но я не знаю, как включить интерактивность, например, когда я печатаю в строке поиска, отображаются результаты.

sidebarSearchForm(textId = "searchText", buttonId = "searchButton",label = "Search dataset",
                        icon = shiny::icon("search"))

Это пользовательский интерфейс, но я незнать, как сделать его интерактивным.

Панель поиска должна быть интерактивной, чтобы при вводе слова она выводила результаты поиска.

1 Ответ

1 голос
/ 25 апреля 2019

Это зависит от того, какой вывод вы хотите, но принцип будет таким же.Я предполагаю, что у вас есть какая-то таблица данных, и вам нужна любая строка, содержащая поисковый запрос.

Следовательно, вам необходимо:

  • Выход в виде таблицы или данных, отфильтрованный по входу (в данном случае input$searchText)
  • req(), еслиВы хотите, чтобы он показывался, только если вы нажали кнопку поиска

Вот довольно уродливый макет, но, надеюсь, вы поняли идею.

library(shiny)
library(shinydashboard)
library(data.table)

header <- dashboardHeader(title = "Search function")

sidebar <- dashboardSidebar(
  sidebarSearchForm(textId = "searchText", buttonId = "searchButton", 
                    label = "Search dataset", icon = shiny::icon("search"))
)

body <- dashboardBody(tableOutput("filtered_table"))

ui <- dashboardPage(title = 'Search', header, sidebar, body)


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

      example_data <- data.table(ID = 1:7, word = c("random", "words", "to", 
                                                    "test", "the", "search", "function")) 

      output$filtered_table <- renderTable({
        req(input$searchButton == TRUE)
        example_data[word %like% input$searchText]
      })

    }

    shinyApp(ui = ui, server = server)

РЕДАКТИРОВАТЬ: просто добавить, если вы хотите, чтобы видимые данные можно было просматривать, чтобы пользователи могли искать, если вы используете dataTableOuput и renderDataTable из пакета DT, который включает в себя функцию поиска сстол.

...