Ifeanyi commited on
Commit
81645ef
·
verified ·
1 Parent(s): 60d30df

Update app.R

Browse files
Files changed (1) hide show
  1. app.R +33 -131
app.R CHANGED
@@ -1,141 +1,43 @@
1
  library(shiny)
2
- library(shinyalert)
3
  library(shinythemes)
4
- library(shinycssloaders)
5
- library(shinyjs)
6
- library(httr)
7
- library(bslib)
8
- library(thematic)
9
- library(gtrendsR)
10
- library(plotly)
11
- library(dplyr)
12
- library(ggplot2)
13
 
14
- options(spinner.color = "lightblue",
15
- spinner.color.background = "#ffffff",
16
- spinner.size = 2)
17
 
18
- my_theme <- bs_theme(
19
- bg = "#fdfefe",
20
- fg = "blue",
21
- primary = "red",
22
- base_font = font_google("PT Sans Caption"),
23
- "font-size-base" = "0.9rem",
24
- version = 5,
25
- "navbar-bg" = "blue"
 
 
 
 
 
 
26
  )
27
 
28
- thematic_shiny()
29
-
30
- ui <- list(useShinyjs(),navbarPage(windowTitle = "TrendChecker",
31
- title = strong("TrendChecker"),theme = my_theme,
32
- tabPanel(title = strong("Trend Over Time"),icon = icon("chart-line"),#firebaseUIContainer(),
33
- sidebarLayout(
34
- sidebarPanel(width = 3,actionButton("info",strong("About TrendChecker",icon("info"))),hr(),
35
- hidden(tags$div(id = "about",h5("TrendChecker is a web application that enables users to monitor the search popularity of any subject of interest over time,
36
- and across different countries by calling the Google trend api. Search hit of 100 is the indicator of optimum popularity, while other hits are measured relative to the optimum."))),h4(strong("Controls")),hr(),
37
- textInput("text",strong("Enter Search Term")),
38
- checkboxGroupInput("check",strong("Select Country(ies)"),choices = c("USA" = "US","UK" = "GB","Germany" = "DE","Netherlands" = "NL","Nigeria" = "NG","Japan" = "JP")),
39
- radioButtons("radio",strong("Choose Trend Source"),choices = c("Web","News","YouTube","Images")),
40
- radioButtons("time",strong("Select Time Frame"),choices = c("Last Hour","Last Four Hours","Last Day","Last Seven Days","Past 30 Days","Past 90 Days","Past 12 Months","Last Five Years")),
41
- actionButton("run",strong("Run Search"),icon("caret-right"))
42
- ),
43
- mainPanel(
44
- withSpinner(plotOutput("plot", width = "113%", height = "450px"),type = 8),
45
- downloadButton("plot_download","Download",icon = icon("download"))),
46
-
47
-
48
- ))
49
- ))
50
-
51
- # Define server logic required to run query
52
-
53
- server <- function(input, output,session) {
54
 
55
- ## APP info button toggle activation
56
-
57
- observeEvent(input$info,{
58
- toggle("about")
59
- })
60
-
61
-
62
- ## Create reactive input switch functionality
63
-
64
- check_input <- reactive(input$check)
65
-
66
-
67
- radio_input <- reactive(switch(input$radio,
68
- "Web" = "web",
69
- "News" = "news",
70
- "YouTube" = "youtube",
71
- "Images" = "images"))
72
-
73
- radio_time <- reactive(switch(input$time,
74
- "Last Hour" = "now 1-H",
75
- "Last Four Hours" = "now 4-H",
76
- "Last Day" = "now 1-d",
77
- "Last Seven Days" = "now 7-d",
78
- "Past 30 Days" = "today 1-m",
79
- "Past 90 Days" = "today 3-m",
80
- "Past 12 Months" = "today 12-m",
81
- "Last Five Years" = "today+5-y"))
82
-
83
-
84
-
85
- text_input <- reactive(input$text)
86
-
87
-
88
-
89
-
90
- ## Write the function
91
-
92
- trend <- function(){
93
-
94
- gt <- gtrends(keyword = text_input(),geo = check_input(),gprop = radio_input(),
95
- time = radio_time())
96
-
97
- p <- plot(gt)
98
-
99
- return(p)
100
  }
101
-
102
- ## Convert to reactive function
103
-
104
- trend2 <- eventReactive(input$run,{
105
- trend()
106
- })
107
-
108
- ## Create interactive plot
109
 
110
- output$plot <- renderPlot({
111
-
112
- withProgress(message = "Fetching data",
113
- detail = "This may take a while...",value = 0,{
114
-
115
- for (i in 1:40){
116
-
117
- incProgress(1/40)
118
- Sys.sleep(0.4)
119
- }
120
- })
121
-
122
- req(input$run)
123
- trend2()
124
-
125
- })
126
-
127
- output$plot_download <- downloadHandler(
128
- filename = function(){
129
- paste("graph",".jpg",sep = "")
130
- },
131
- content = function(file){
132
- jpeg(file)
133
- trend()
134
- dev.off()
135
- }
136
- )
137
-
138
- }
139
 
140
- # Run the application
141
- shinyApp(ui = ui, server = server)
 
1
  library(shiny)
 
2
  library(shinythemes)
3
+ library(GWalkR)
 
 
 
 
 
 
 
 
4
 
 
 
 
5
 
6
+ ui <- fluidPage(
7
+ title = "Data Explorer",
8
+ theme = shinytheme("cyborg"),
9
+
10
+ tags$h3(id = "title", tags$strong("Graphic-Walker Data Explorer"),style = "text-align:center;color:lightblue;"),
11
+ sidebarLayout(
12
+ sidebarPanel(width = 3, fileInput("target_upload",h5(strong("Click to Upload CSV File"),style = "color:lightblue;"),
13
+ accept = c("text/csv"),
14
+ placeholder = "No file selected"),
15
+ br(),br(),a(href = "https://github.com/Kanaries/GWalkR",h6("Learn More",style = "color:lightblue;"),target = "_blank",style = "text-decoration: none;")),
16
+ mainPanel(gwalkrOutput(outputId = "explorer",width = "114%")
17
+ )
18
+ )
19
+
20
  )
21
 
22
+ server <- function(input,output,session){
23
+ file_upload <- reactive({
24
+ inFile <- input$target_upload
25
+ if(is.null(inFile)){return(NULL)}
26
+ data <- read.csv(inFile$datapath,header = TRUE,sep = ",")
27
+ return(data)
28
+ })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
+ output$explorer <- renderGwalkr({
31
+ tryCatch(
32
+ {
33
+ gwalkr(file_upload())
34
+ },
35
+ error = function(e){
36
+ message("Could not display interface")
37
+ }
38
+ )
39
+ })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
 
 
 
 
 
 
 
 
41
 
42
+ shinyApp(ui,server)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43