server.R 15.6 KB
Newer Older
Stephanie's avatar
Stephanie committed
1 2

library(shiny)
3
library(jsonlite)
4
library(DT)
5
library(webshot)
6
library(knitr)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
7
library(leaflet)
8
library(mapview)
9
library(ggplot2)
10
library(timevis)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
11
#library(plotly)
Stephanie's avatar
Stephanie committed
12

13

14

15
server <- function(input, output, session) {
Stephanie's avatar
Stephanie committed
16
  set.seed(122)
17
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
18 19
  
  #Continue to data page  
20 21 22
  observeEvent(input$dataSite, {
    
    updateTabItems(session, "tabs",selected = "data")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
23
    
24
  })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
25
  #DATA PAGE
26
  
27
  
28
  
29
  #CoConUT Data import 
30 31
  output$nut <- renderDataTable({
    inFile <- input$nut
32 33
    if (is.null(inFile))
      return(NULL)
34
    
35
    #loading CoConUT data
36
    json_data_coco <- fromJSON(paste(inFile$datapath, sep = ""), flatten = TRUE)
37
    coconut.df <<- json_data_coco[["data"]]
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
38
    
39
    lastCoConUT <<- inFile$name
40
    #print("coconut:")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
41
    
42
    #coconut.df$timestamp <- format(coconut.df$timestamp, format="%d-%B-%Y %H:%M:%S")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
43
    
44
    
45
    #print(coconut.df)
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
    if(is.null(coconut.df$timestamp)){}
    else{unixTime<<-coconut.df$timestamp}
    
    if(is.null(coconut.df$gps.latitude)){}
    else{latitude<<-coconut.df$gps.latitude}
    
    if(is.null(coconut.df$gps.longitude)){}
    else{longitude<<-coconut.df$gps.longitude}
    
    if(is.null(coconut.df$gps.speed)){}
    else{speed<<-coconut.df$gps.speed}
    
    if(is.null(coconut.df$gps.accuracy)){}
    else{gpsAcc<<-coconut.df$gps.accuracy}
    
    if(is.null(coconut.df$light.lux)){}
    else{lux<<-coconut.df$light.lux}
    
    if(is.null(coconut.df$acc.coordinates)){}
    else{accCoord<<-coconut.df$acc.coordinates}
    
    if(is.null(coconut.df$acc.accuracy)){}
    else{accAcc<<-coconut.df$acc.accuracy}
    
    if(is.null(coconut.df$bluetooth.numOfBTDevices)){}
    else{bluetooth<<-coconut.df$bluetooth.numOfBTDevices}
    
    if(is.null(coconut.df$ble.bpm)){}
    else{bleBpm<<-coconut.df$ble.bpm}
    
    if(is.null(coconut.df$ble.bpmlist)){}
    else{bleBpmList<<-coconut.df$ble.bpmlist}
    
    if(is.null(coconut.df$ble.hrv)){}
    else{bleHrv<<-coconut.df$ble.hrv}
    
    if(is.null(coconut.df$ble.hrvlist)){}
    else{bleHrvList<<-coconut.df$ble.hrvlist}
    
    if(is.null(coconut.df$activity.name)){}
    else{activityName<<-coconut.df$activity.name}
    
    if(is.null(coconut.df$activity.confidence)){}
    else{activityConf<<-coconut.df$activity.confidence}
    
    if(is.null(coconut.df$screen.status)){}
    else{screenstatus<<-coconut.df$screen.status}
    
    if(is.null(coconut.df$interaction.touch)){}
    else{touch<<-coconut.df$interaction.touch}
    
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
97 98
    
    
99
    # setting the table style
100
    datatable(
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
101 102 103 104 105 106 107 108 109 110 111
      cbind(coconut.df), 
      options = list(
        searching = TRUE,
        autoWidth = TRUE,
        rownames = FALSE,
        scroller = TRUE,
        scrollX = TRUE,
        scrollY = "500px",
        fixedHeader = TRUE,
        class = 'cell-border stripe'
      )
112
    )
113
  })
114 115 116 117 118 119 120
  #last coconut_name
  output$lastLoadedNut<- renderText({
    if (is.null(input$nut))
      return(NULL)
    else lastCoConUT
  })
  
121 122
  #CoCoQuest Data import
  output$quest <- renderDataTable({
123 124 125 126
    inFile <- input$quest
    if (is.null(inFile))
      return(NULL)
    
127 128
    #loading CoCoQuest data
    json_data_quest <<- fromJSON(paste(inFile$datapath, sep = ""), flatten = TRUE)
129
    
130
    lastCoCoQuest <<- inFile$name
131
    totalST <<- c(anytime(as.numeric(json_data_quest$startTime)/1000))
132 133
    print(json_data_quest)
    
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
134
    
135
    #unix  parsed
136
    dat <- do.call(rbind, json_data_quest$tasks$data)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
137
    
138
    endtimes <<- c(dat$endtime)
139
    
140
    parsedEndtimes <<- anytime(endtimes/1000)
141 142
    #endtimes <<- format(dat$endtime, format="%d-%B-%Y %H:%M:%S")
    print("endtime quest")
143
    print(parsedEndtimes)
144
    tasks <- rep(1:length(json_data_quest$tasks$data), sapply(json_data_quest$tasks$data, nrow))
145 146
    #questions 
    #print("Questions:", questions)
147
    together <<- c(tasks, endtimes)
148 149
    print("together")
    print(together)
150
    all <- rbind(together)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
151
    
152
    #setting the table style
153
    datatable(
154
      cbind(tasks, endtimes),
155
      options = list(
156 157
        searching = FALSE,
        rownames = TRUE,
158
        class = 'cell-border stripe'
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
159
      )
160 161
    )
  })
162 163 164 165 166 167 168
  
  #last cocoquest_name
  output$lastLoadedQuest <- renderText({
    if (is.null(input$quest))
      return(NULL)
    else lastCoCoQuest
  })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
169
  
170
  #cocoQuest Starttime
171 172 173
  output$totalStarttime <- renderText({
    if (is.null(input$quest))
      return(NULL)
174
    else {
175
      format(totalST, format="%d-%B-%Y %H:%M:%S")
176 177
      
    }
178
  })
179
  
180 181
  #Continue to view page  
  observeEvent(input$viewSite, {
182
    
183
    updateTabItems(session, "tabs",selected = "views")
184 185 186
    
  })
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
187
  #View PAGE
188 189
  
  #Title Input
190
  output$title <- renderText({ input$title })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
191
  
192
  #barchart
193
  output$input_hist_x <- renderUI({
194
    if (is.null(input$nut))
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
195
      return(NULL)
196
    selectInput("in1", "x-axis:", cbind("unixTime", "longitude", "latitude", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
197 198 199
  })
  
  output$input_hist_y <- renderUI({
200 201
    if (is.null(input$nut))
      return(NULL)
202
    selectInput("in2", "y-axis:", cbind("unixTime", "longitude", "latitude", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
203 204
  })
  
205
  
206
  #Timeline
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
207
  
208
  output$input_time_x <- renderUI({
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
209 210
    if (is.null(input$nut))
      return(NULL)
211
    selectInput("in3", "x-axis:", cbind("unixTime", "longitude", "latitude", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
212
  })
213
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
214
  output$input_time_y <- renderUI({
215 216
    if (is.null(input$nut))
      return(NULL)
217
    selectInput("in4", "y-axis:", cbind("unixTime", "longitude", "latitude", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
218 219
  })
  
220
  
221
  #Map
222
  output$input_map <- renderUI({
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
223 224 225 226
    if (is.null(input$nut))
      return(NULL)
    selectInput("in5", "Data:", cbind("unixTime", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
  })
227
  
228 229
  output$input_map_x <- renderUI({
    if (is.null(input$nut))
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
230
      return(NULL)
231 232 233 234 235 236 237 238
    selectInput("in5", "x-axis:", cbind("unixTime", "longitude", "latitude", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
  })
  
  output$input_map_y <- renderUI({
    if (is.null(input$nut))
      return(NULL)
    selectInput("in6", "y-axis:", cbind("unixTime", "longitude", "latitude", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
  })
239
  
240
  
241
  #linechart
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
242
  
243
  output$input_line_x <- renderUI({
244 245
    if (is.null(input$nut))
      return(NULL)
246
    selectInput("in7", "x-axis:", cbind("unixTime", "longitude", "latitude", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
247 248 249
  })
  
  output$input_line_y <- renderUI({
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
250
    if (is.null(input$nut))
251
      return(NULL)
252
    selectInput("in8", "y-axis:", cbind("unixTime", "longitude", "latitude", "speed", "gps.acc","lux", "light.acc","acc.coordinates", "acc.acc","bluetooth","ble.bpm","ble.bpmlist","ble.hrv","ble.hrvlist","activity.name", "acctivity.confidence","screen.status" ,"touch"),multiple=TRUE, selectize=TRUE) 
253
  })
254
  
255
  
256 257
  #Continue to dashboard page  
  observeEvent(input$dashboardSite, {
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
258
    
259
    updateTabItems(session, "tabs",selected = "dashboard")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
260
    
261
  })
262
  plotCounter <<- 0
263
  #ADD BARCHART BUTTON
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
264 265 266 267
  observeEvent(input$check_hist, {
    
    plotCounter<<-plotCounter+1
    print(plotCounter)
268
    plotname <<- paste("plot", plotCounter, sep="")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
269
    print(plotname)
270 271
    xplotname<<- paste("x",plotname,sep="")
    yplotname<<-paste("y",plotname, sep="")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
272 273 274
    insertUI(
      
      selector= "#viewpanel", #wo will ichs hinhaben
275 276
      ui= box(  width = 12,
                title="Barchart",
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
277 278 279 280 281 282
                status= "warning",
                solidHeader = TRUE,
                collapsible = TRUE,
                
                selectInput(xplotname, "x-axis", choices=colnames(coconut.df)),
                selectInput(yplotname, "y-axis", choices=colnames(coconut.df)),
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
283
                print(plotname),
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
284 285 286 287 288 289 290 291
                plotOutput(plotname, height = 250))
    )
    
    
  })
  
  #DASHBOARD  
  #BAR VIEW
292
  
293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
  # #local({     
  #   
  #   
  #   # 
  #   # output[[plotname]] <- renderPlot({
  #   #   print(plotname)
  #   # 
  #   #   data<- structure(list(V1=as.numeric(coconut.df[[input$xplotname]]),
  #   #                         V2=as.numeric(coconut.df[[input$yplotname]])),
  #   #                    .Names=c("V1","V2"), row.names=c(NA,6L), class = "data.frame")
  #   #   #Neues Plot
  #   #   barplot(data$V1,data$V2,
  #   #           ylab= input$yplotname,
  #   #           xlab=input$xplotname)
  #   # 
  #   # })
  # #})
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327
  
  ## ALTES PLOT
  #a=1
  
  #for(a in 1:length(coconut.df$bluetooth.numOfBTDevices)){
  
  #g <-geom_bar(mapping = NULL, data = , stat = "count",
  #             position = "stack", width = NULL, binwidth = NULL, na.rm = FALSE,
  #             show.legend = NA, inherit.aes = TRUE)
  
  #g <- ggplot(coconut.df, aes("timestamp","bluetooth"))
  #g + geom_bar()
  # a=a+1}
  
  #g
  #hist(bluetooth)
  
  
328 329 330 331 332
  
  
  #TIMELINE
  output$time_box <- renderUI({
    if(input$check_time)
333 334
      box(  width = 12,
            title="Timeline",
335 336 337
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
338
            timevisOutput("time", height = 150)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
339
      )
340 341
  })
  
342 343
  #TODO: Timelineview
  output$time <- renderTimevis({
344
    print("TIME wird aufgerufen")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
345
    
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
    print("Length:")
    print(length(parsedEndtimes))
    print("combined")
    print( c(anytime(totalST), head(parsedEndtimes, -1)))
    print("endtimes")
    print(parsedEndtimes)
    
    
    data <-  data.frame(
      id      = 1:length(parsedEndtimes),
      content= c(1:length(parsedEndtimes)),
      start   = c(anytime(totalST), head(parsedEndtimes, -1)),
      end     = parsedEndtimes
    )
    timevis(data)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
361
    
362
  })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
363
  
364 365 366
  output$texttimeline <- renderText({
    "Check Timeline for getting a Timeline about CoCoQuest Tasks and Questions."
  })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
367 368
  
  
369 370 371 372
  
  #linechart
  output$line_box <- renderUI({
    if(input$check_line)
373 374
      box(  width = 12,
            title="Linechart",
375 376 377
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
378
            
379
            #add_tooltip(data_tooltip, "hover"),
380 381 382 383 384 385
            plotOutput("line", height = 250))
  })
  
  #TODO: linechart View
  output$line <- renderPlot({
    print("LINE wird aufgerufen")
386 387 388 389
    data<- structure(list(V1=as.numeric(coconut.df[[input$line_x]]), 
                          V2=as.numeric(coconut.df[[input$line_y]])),
                     .Names=c("V1","V2"), row.names=c(NA,6L), class = "data.frame")
    plot(data$V1,data$V2, type="l", ylab=input$line_y, xlab=input$line_x)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
390
    
391 392
  })
  
393
  # Scatterplot
394 395
  output$scat_box <- renderUI({
    if(input$check_scat)
396 397
      box(  width = 12,
            title="Scatterplot",
398 399 400
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
401
           
402
            plotOutput("scat", height = 250))
403 404
  })
  
405 406
  #TODO: Scatterplot View
  output$scat <- renderPlot({
407 408
    data<- structure(list(V1=as.numeric(coconut.df[[input$scat_x]]), 
                          V2=as.numeric(coconut.df[[input$scat_y]])),
409 410 411
                     .Names=c("V1","V2"), row.names=c(NA,6L), class = "data.frame")
    print("SCAT wird aufgerufen")
    
412
    plot(data$V1,data$V2, type="p", xlab=input$scat_x, ylab=input$scat_y )
413 414 415
  })
  
  # Boxplot
416 417
  output$box_box <- renderUI({
    if(input$check_box)
418 419
      box(  width = 12,
            title="Boxplot",
420 421 422
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
423
            
424 425 426 427 428 429
            plotOutput("box", height = 250))
  })
  
  #TODO: Boxplot View
  output$box <- renderPlot({
    print("BOX wird aufgerufen")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
430 431 432
    data<- structure(list(V1=as.numeric(coconut.df[[input$box_x]])),
                     .Names=c("V1"), row.names=c(NA,6L), class = "data.frame")
    
433
    boxplot(data$V1, type="box", xlab=input$box_x )
434 435 436 437 438
  })
  
  #MAP
  output$map_box <- renderUI({
    if(input$check_map)
439 440
      box(  width = 12,
            title="Map",
441 442 443
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
444
           
445
            leafletOutput("map", height = 250))
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
446 447
  })
  
448
  # MAP VIEW 
449
  output$map <- renderLeaflet({
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475
    print("MAP wird aufgerufen")
    data <- as.numeric(coconut.df[[input$map_data]])
    max_data<<- max(data)
    
    c<-1
    for(c in 1:length(data)){
      data[c]<-(data[c]/max_data)*10
    }
    
    colorData <-
      cut(
        data,
        c(0, 2, 5, 7, 10),
        include.lowest = T,
        lables = c('<2', '<5', '<7', '<10')
      )
    print("colorData")
    print(colorData)
    
    colorGrad <- colorFactor('RdYlGn', colorData) 
    
    print("colorGrad")
    print(colorGrad(colorData))
    
    
    m <- leaflet()
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
476 477
    x=1
    m <- addTiles(m)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
478 479 480

    m<-addCircleMarkers(m,lng=as.numeric(coconut.df$gps.longitude), lat=as.numeric(coconut.df$gps.latitude), radius = data, color = colorGrad(colorData)) #addPolylines does not work
    m<-addLegend(m, 'bottomright', pal=colorGrad, values=colorData, title=' ',opacity=1)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
481
    m
482 483
  })
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
484
  
485
  
486 487 488 489 490 491
  # TOOLTIP
  data_tooltip <- function(x){
    if(is.null(x)) return(NULL)
    if(is.null(x$ID)) return(NULL)
    paste0(coconut.df[[input$line_x]])
  }
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
492
  
493
  #DownloadButton
494 495
  #TODO: MAKE IT WORK!
  observeEvent(input$screenshot,{
496 497
    #if(input$check_line|input$check_time|input$check_map|input$check_hist)
    #disable("screenshot")
498
    #webshot::install_phantomjs()
499
    
500
    cdat <<- session$clientData
501
    url <- paste0(cdat$url_hostname,":", cdat$url_port,"/")
502
    print(url)
503
    
504 505
    #URL <- "http://rstudio.github.io/leaflet/"
    #appshot("cocoVisR/", file = "dashboard.png", port = getOption("shiny.port"), envvars = NULL)
506
    #webshot(url,delay = 5.0)
507
    #knit("dashboard.png")
508 509 510
    #port <- cdat$url_port
    #mapshot(m, file="~/Rplot.png")
    
511
    #webshot(url, "dashboard.png", delay = 20.0) # does NOT WORK 
512 513 514 515 516
    #appdir <- system.file("examples", "01_hello", package="shiny")
    #print("appdir")
    #print(appdir)
    #appshot(appdir, "01_hello.png")
    
517
    #leaflet.print(m)
518 519 520 521 522 523
    
    
    
    
    
    
524 525
    
  })
526
  # url <- paste0(cdat$url_protocol,"//",cdat$url_hostname,":", cdat$url_port, cdat$url_pathname,cdat$url_search)
527
  #output$downButton <- downloadHandler(
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
528 529 530 531 532 533 534
  # filename="dashboard.png",
  #content=function(file){
  # observeEvent(input$downButton, {
  #appshot("cocoVisR/dashboard", file = "dashboard.png", port = getOption("shiny.port"), envvars = NULL)
  
  #}) 
  #}
535
  #)
536 537 538 539 540
  
  
  
  
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
541 542
  
  #SOME STUFF  
543 544
  
  
545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561
  #histdata <- rnorm(500)
  
  #output$plot1 <- renderPlot({
  #data <- histdata[seq_len(input$slider)]
  #hist(data)
  #})
  
  ##MAP 
  
  #m <- leaflet()
  #m <- addTiles(m)
  #x=1
  #for(x in 1:2019){
  #m <- addMarkers(m,lng=longitude[x], lat=latitude[x]) #addPolylines does not work
  #x=x+1}
  #m
  #}
Stephanie's avatar
Stephanie committed
562
}