shinydashboard: создайте гиперссылку для каждого наблюдения в data.table, которая выполняет вызов API после нажатия на нее - PullRequest
0 голосов
/ 28 июня 2018

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

library(httr)
library(jsonlite)
library(openssl)
library(dplyr)

### retrieving filing history ####
company_num = 'FC013908'
key = 'my_key'
fh_path = paste0('/company/', str_to_upper(company_num), "/filing- history")
fh_url <- modify_url("https://api.companieshouse.gov.uk/", path = fh_path)
fh_test <- GET(fh_url, authenticate(key, "")) #status_code = 200
fh_parsed <- jsonlite::fromJSON(content(fh_test, "text",encoding = "utf-8"), flatten = TRUE)
docs <- fh_parsed$items

> glimpse(docs)
Observations: 25
Variables: 20
$ type                                    <chr> "AP01", "AP01", "CS01", "AA", "M...
$ action_date                             <chr> "2017-10-01", "2017-10-01", "201...
$ subcategory                             <chr> "appointments", "appointments", ...
$ category                                <chr> "officers", "officers", "confirm...
$ date                                    <chr> "2017-11-22", "2017-11-22", "201...
$ description                             <chr> "appoint-person-director-company...
$ pages                                   <int> 2, 2, 10, 36, 5, 38, 14, 1, 31, ...
$ barcode                                 <chr> "X6JPZWQX", "X6JPZ6G8", "X6A72QU...
$ transaction_id                          <chr> "MzE5MDc4MTA5NGFkaXF6a2N4", "MzE...
$ paper_filed                             <lgl> NA, NA, NA, TRUE, NA, TRUE, NA, ...
$ associated_filings                      <list> [NULL, NULL, NULL, NULL, NULL, ...
$ description_values.officer_name         <chr> "Mr Michael Anthony Norcott Thom...
$ description_values.appointment_date     <chr> "2017-10-01", "2017-10-01", NA, ...
$ description_values.made_up_date         <chr> NA, NA, "2017-07-07", "2017-04-0...
$ description_values.charge_number        <chr> NA, NA, NA, NA, "SC1500750001", ...
$ description_values.charge_creation_date <chr> NA, NA, NA, NA, "2017-04-28", NA...
$ description_values.termination_date     <chr> NA, NA, NA, NA, NA, NA, NA, "201...
$ description_values.description          <chr> NA, NA, NA, NA, NA, NA, NA, NA, ...
$ links.self                              <chr> "/company/SC150075/filing-histor...
$ links.document_metadata                 <chr> "https://frontend-doc-api.compan...

Теперь я хочу создать гиперссылку для всех links.document_metadata наблюдений (или кнопки действия рядом с каждым наблюдением, не имеет значения), чтобы сделать еще один вызов API, чтобы получить фактический документ и открыть его в браузере, но только после нажатия на . Весь необходимый код для совершения такого звонка вы можете найти здесь .

Я даже не уверен, как подойти к этому: если бы я хотел создать actionButton для каждого наблюдения, как бы я смог observeEvent для всех них? Кроме того, я мог бы вставить ссылку, используя tagList("URL link:", url), как предложено здесь , но таким образом мне нужно было бы выполнять вызовы API для каждого элемента в data.table, независимо от того, собирается ли кто-то щелкнуть по нему или нет, и это будет серьезно замедлить приложение. Есть идеи, как это сделать?

...