Как мне добавить виджет поиска в мое блестящее приложение?

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

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

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

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

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


person brian    schedule 25.04.2019    source источник


Ответы (1)


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

Поэтому вам нужно:

  • Выходные данные, представляющие собой таблицу или данные, отфильтрованные по входным данным (в данном случае 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, который включает функцию поиска с таблицей.

person Jaccar    schedule 25.04.2019
comment
Я хочу добавить таблицу данных с метаданными, у которых есть ссылки на веб-сайты, которые при нажатии открываются в новой вкладке. Большая проблема заключается в том, как включить гиперссылку на веб-сайт в слово, которое находится в таблице данных? - person brian; 02.05.2019
comment
Это отдельный вопрос. Этот ответ решил ваш первоначальный вопрос? Вот существующий ответ, который относится к вашему новому вопросу: stackoverflow .com/questions/28117556/ - person Jaccar; 02.05.2019