server.R 15.8 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 275 276 277 278 279 280 281
    insertUI(
      
      selector= "#viewpanel", #wo will ichs hinhaben
      ui= box(  title="Barchart",
                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
282
                print(plotname),
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
283 284 285 286 287 288 289 290
                plotOutput(plotname, height = 250))
    )
    
    
  })
  
  #DASHBOARD  
  #BAR VIEW
291
  
292 293 294 295 296 297 298 299 300 301 302 303 304 305
  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
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
  
  ## 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)
  
  
324 325 326 327 328 329
  
  
  #TIMELINE
  output$time_box <- renderUI({
    if(input$check_time)
      box(  title="Timeline",
330 331 332
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
333
            timevisOutput("time", height = 250)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
334
      )
335 336
  })
  
337 338
  #TODO: Timelineview
  output$time <- renderTimevis({
339
    print("TIME wird aufgerufen")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
340
    
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355
    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
356
    
357
  })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
358
  
359 360 361
  output$texttimeline <- renderText({
    "Check Timeline for getting a Timeline about CoCoQuest Tasks and Questions."
  })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
362 363
  
  
364 365 366 367 368 369 370 371
  
  #linechart
  output$line_box <- renderUI({
    if(input$check_line)
      box(  title="Linechart",
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
372 373 374
            selectInput("line_x", "x-axis", choices=colnames(coconut.df)),
            selectInput("line_y", "y-axis", choices=colnames(coconut.df)),
            #add_tooltip(data_tooltip, "hover"),
375 376 377 378 379 380
            plotOutput("line", height = 250))
  })
  
  #TODO: linechart View
  output$line <- renderPlot({
    print("LINE wird aufgerufen")
381 382 383 384
    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
385
    
386 387
  })
  
388
  # Scatterplot
389 390 391 392 393 394
  output$scat_box <- renderUI({
    if(input$check_scat)
      box(  title="Scatterplot",
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
395 396
            selectInput("scat_x", "x-axis", choices=colnames(coconut.df)),
            selectInput("scat_y", "y-axis", choices=colnames(coconut.df)),
397
            plotOutput("scat", height = 250))
398 399
  })
  
400 401
  #TODO: Scatterplot View
  output$scat <- renderPlot({
402 403
    data<- structure(list(V1=as.numeric(coconut.df[[input$scat_x]]), 
                          V2=as.numeric(coconut.df[[input$scat_y]])),
404 405 406
                     .Names=c("V1","V2"), row.names=c(NA,6L), class = "data.frame")
    print("SCAT wird aufgerufen")
    
407
    plot(data$V1,data$V2, type="p", xlab=input$scat_x, ylab=input$scat_y )
408 409 410
  })
  
  # Boxplot
411 412 413
  output$box_box <- renderUI({
    if(input$check_box)
      box(  title="Boxplot",
414 415 416
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
417
            selectInput("box_x", "x-axis", choices=colnames(coconut.df)),
418 419 420 421 422 423
            plotOutput("box", height = 250))
  })
  
  #TODO: Boxplot View
  output$box <- renderPlot({
    print("BOX wird aufgerufen")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
424 425 426
    data<- structure(list(V1=as.numeric(coconut.df[[input$box_x]])),
                     .Names=c("V1"), row.names=c(NA,6L), class = "data.frame")
    
427
    boxplot(data$V1, type="box", xlab=input$box_x )
428 429 430 431 432 433 434 435 436
  })
  
  #MAP
  output$map_box <- renderUI({
    if(input$check_map)
      box(  title="Map",
            status= "warning",
            solidHeader = TRUE,
            collapsible = TRUE,
437
            selectInput("map_data", "data", choices=colnames(coconut.df)),
438
            leafletOutput("map", height = 250))
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
439 440
  })
  
441
  # MAP VIEW 
442
  output$map <- renderLeaflet({
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468
    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
469 470
    x=1
    m <- addTiles(m)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
471 472 473

    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
474
    m
475 476
  })
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
477
  
478
  
479 480 481 482 483 484
  # 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
485
  
486
  #DownloadButton
487 488
  #TODO: MAKE IT WORK!
  observeEvent(input$screenshot,{
489 490
    #if(input$check_line|input$check_time|input$check_map|input$check_hist)
    #disable("screenshot")
491
    #webshot::install_phantomjs()
492
    
493
    cdat <<- session$clientData
494
    url <- paste0(cdat$url_hostname,":", cdat$url_port,"/")
495
    print(url)
496
    
497 498
    #URL <- "http://rstudio.github.io/leaflet/"
    #appshot("cocoVisR/", file = "dashboard.png", port = getOption("shiny.port"), envvars = NULL)
499
    #webshot(url,delay = 5.0)
500
    #knit("dashboard.png")
501 502 503
    #port <- cdat$url_port
    #mapshot(m, file="~/Rplot.png")
    
504
    #webshot(url, "dashboard.png", delay = 20.0) # does NOT WORK 
505 506 507 508 509
    #appdir <- system.file("examples", "01_hello", package="shiny")
    #print("appdir")
    #print(appdir)
    #appshot(appdir, "01_hello.png")
    
510
    #leaflet.print(m)
511 512 513 514 515 516
    
    
    
    
    
    
517 518
    
  })
519
  # url <- paste0(cdat$url_protocol,"//",cdat$url_hostname,":", cdat$url_port, cdat$url_pathname,cdat$url_search)
520
  #output$downButton <- downloadHandler(
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
521 522 523 524 525 526 527
  # filename="dashboard.png",
  #content=function(file){
  # observeEvent(input$downButton, {
  #appshot("cocoVisR/dashboard", file = "dashboard.png", port = getOption("shiny.port"), envvars = NULL)
  
  #}) 
  #}
528
  #)
529 530 531 532 533
  
  
  
  
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
534 535
  
  #SOME STUFF  
536 537
  
  
538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554
  #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
555
}