library(patentsview)
library(dplyr)
library(visNetwork)
library(magrittr)
library(stringr)
library(knitr)
library(tidyverse)
library(readxl)
library(igraph)

#creating query for fetching Tencent's patent data
tencent_query <- 
  with_qfuns(
    and(
      contains(assignee_organization = "aeye"),
      contains(patent_type = "utility")
       )
            )

#querying Tencent's patent data
tencent_utility <- search_pv(
  query = tencent_query,
  endpoint = "patents",
  fields = c("patent_number", "patent_title", "cited_patent_number", "citedby_patent_number","assignee_organization", "patent_num_cited_by_us_patents"),
  all_pages = TRUE
)

#unnesting Tencent's patent data
tencent_lst <- unnest_pv_data(tencent_utility$data, pk = "patent_number")

pat_title <- function(title, number) {
  temp_title <- str_wrap(title)
  i <- gsub("\\n", "<br>", temp_title)
  paste0('<a href="https://patents.google.com/patent/US', number, '">', i, '</a>')
}

#visualization
edges <-
  tencent_lst$cited_patents %>%
  na.omit() %>% 
  semi_join(x = ., y = ., by = c("cited_patent_number" = "patent_number")) %>%
  set_colnames(c("from", "to"))

nodes <-
  tencent_lst$patents %>%
  mutate(
    id = patent_number,
    label = patent_number,
    title = pat_title(patent_title, patent_number)
  )

visNetwork(
  nodes = nodes, edges = edges, height = "1280px", width = "100%",
  main = "AYEY's Patent Portfolio"
) %>%
  visEdges(arrows = list(to = list(enabled = TRUE))) %>%
  visIgraphLayout()