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

library(shiny)
3 4 5 6 7 8 9 10 11 12 13 14 15
library(jsonlite)       # to handle the json file data correctly
library(DT)             # to render the data-tables correctely 
#library(webshot)       # corrently not in use should work for the downloadbutton
#library(knitr)         # supposed to do Dynamic Report Generation in R
library(leaflet)        # to render the map --> instead of google
#library(mapview)       # not in use but could be used for map instead of leaflet 
#library(ggplot2)       # not in use but for rendering plots
library(timevis)        # for rendering the fancy timeline
#library(plotly)        # not in use but for rendering plots
library(Cairo)          #creating the pdf for download
library(grDevices)      # also necessary for the download
library(anytime)        # for correctly parsing unixtimestamps into readable date and time formats
library(shinydashboard) # creating the structure / dashboard structure-items
16

17
server <- function(input, output, session) {
Stephanie's avatar
Stephanie committed
18
  set.seed(122)
19
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
20 21
  
  #Continue to data page  
22 23 24
  observeEvent(input$dataSite, {
    
    updateTabItems(session, "tabs",selected = "data")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
25
    
26
  })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
27
  #DATA PAGE
28
  
29
  
30
  
31
  #CoConUT Data import 
32 33
  output$nut <- renderDataTable({
    inFile <- input$nut
34 35
    if (is.null(inFile))
      return(NULL)
36
    
37
    #loading CoConUT data
38
    json_data_coco <- fromJSON(paste(inFile$datapath, sep = ""), flatten = TRUE)
39
    print("1")
40
    coconut.df <<- json_data_coco[["data"]]
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
41
    
42
    lastCoConUT <<- inFile$name
43
    #print("coconut:")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
44
    
45
    #coconut.df$timestamp <- format(coconut.df$timestamp, format="%d-%B-%Y %H:%M:%S")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
46
    
47
    
48
    #print(coconut.df)
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 97 98 99
    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
100 101
    
    
102
    # setting the table style
103
    datatable(
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
104 105 106 107 108 109 110 111 112 113 114
      cbind(coconut.df), 
      options = list(
        searching = TRUE,
        autoWidth = TRUE,
        rownames = FALSE,
        scroller = TRUE,
        scrollX = TRUE,
        scrollY = "500px",
        fixedHeader = TRUE,
        class = 'cell-border stripe'
      )
115
    )
116
  })
117 118 119 120 121 122 123
  #last coconut_name
  output$lastLoadedNut<- renderText({
    if (is.null(input$nut))
      return(NULL)
    else lastCoConUT
  })
  
124 125
  #CoCoQuest Data import
  output$quest <- renderDataTable({
126 127 128 129
    inFile <- input$quest
    if (is.null(inFile))
      return(NULL)
    
130 131
    #loading CoCoQuest data
    json_data_quest <<- fromJSON(paste(inFile$datapath, sep = ""), flatten = TRUE)
132
    
133
    lastCoCoQuest <<- inFile$name
134
    totalST <<- c(anytime(as.numeric(json_data_quest$startTime)/1000))
135 136
    print(json_data_quest)
    
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
137
    
138
    #unix  parsed
139
    dat <- do.call(rbind, json_data_quest$tasks$data)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
140
    
141
    endtimes <<- c(dat$endtime)
142
    
143
    parsedEndtimes <<- anytime(endtimes/1000)
144 145
    #endtimes <<- format(dat$endtime, format="%d-%B-%Y %H:%M:%S")
    print("endtime quest")
146
    print(parsedEndtimes)
147
    tasks <- rep(1:length(json_data_quest$tasks$data), sapply(json_data_quest$tasks$data, nrow))
148 149
    #questions 
    #print("Questions:", questions)
150
    together <<- c(tasks, endtimes)
151 152
    print("together")
    print(together)
153
    all <- rbind(together)
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
154
    
155
    #setting the table style
156
    datatable(
157
      cbind(tasks, endtimes),
158
      options = list(
159 160
        searching = FALSE,
        rownames = TRUE,
161
        class = 'cell-border stripe'
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
162
      )
163 164
    )
  })
165 166 167 168 169 170 171
  
  #last cocoquest_name
  output$lastLoadedQuest <- renderText({
    if (is.null(input$quest))
      return(NULL)
    else lastCoCoQuest
  })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
172
  
173
  #cocoQuest Starttime
174 175 176
  output$totalStarttime <- renderText({
    if (is.null(input$quest))
      return(NULL)
177
    else {
178
      format(totalST, format="%d-%B-%Y %H:%M:%S")
179 180
      
    }
181
  })
182
  
183 184
  #Continue to view page  
  observeEvent(input$viewSite, {
185
    
186
    updateTabItems(session, "tabs",selected = "views")
187 188 189
    
  })
  
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
190
  #View PAGE
191 192
  
  #Title Input
193
  output$title <- renderText({ input$title })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
194
  
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
  # #BARCHART selectinputs
  # output$input_hist_x <- renderUI({
  #   if (is.null(input$nut))
  #     return(NULL)
  #   selectInput("bar_x", "x-axis:", choices = colnames(coconut.df)) 
  #   })
  # 
  # output$input_hist_y <- renderUI({
  #   if (is.null(input$nut))
  #     return(NULL)
  #   selectInput("bar_y", "y-axis:", choices = colnames(coconut.df)) 
  #   })
  # 
  # 
  # #TIMELINE selectinput--> do not need it
  # 
  # # output$input_time_data <- renderUI({
  # #   if (is.null(input$nut))
  # #     return(NULL)
  # #   selectInput("input_time_data", "x-axis:", choices = colnames(coconut.df))
  # # })
  # # 
  # # output$input_time_y <- renderUI({
  # #   if (is.null(input$nut))
  # #     return(NULL)
  # #   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) 
  # # })
  # 
  # #LINECHART selectinput x
  # output$input_line_x <- renderUI({
225 226
  #   if (is.null(input$nut))
  #     return(NULL)
227
  #   selectInput("line_x", "x-axis", choices=colnames(coconut.df))  
228 229
  # })
  # 
230 231
  # #LINECHART selectinput y
  # output$input_line_y <- renderUI({
232 233
  #   if (is.null(input$nut))
  #     return(NULL)
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
  #   selectInput("line_y", "y-axis", choices=colnames(coconut.df))  })
  # 
  # 
  # #SCATTERPLOT selectinput x
  # output$input_scat_x <- renderUI({
  #   if (is.null(input$nut))
  #     return(NULL)
  #   selectInput("scat_x", "x-axis", choices=colnames(coconut.df))  
  # })
  # 
  # #SCATTERPLOT selectinput y
  # output$input_scat_y <- renderUI({
  #   if (is.null(input$nut))
  #     return(NULL)
  #   selectInput("scat_y", "y-axis", choices=colnames(coconut.df))  
  # })
  # 
  # #BOXPLOT selectinput x
  # output$input_box_x <- renderUI({
  #   if (is.null(input$nut))
  #     return(NULL)
  #   selectInput("box_x", "data", choices=colnames(coconut.df))  
  # })
  # 
  # #BOXPLOT selectinput y
  # output$input_box_y <- renderUI({
  #   if (is.null(input$nut))
  #     return(NULL)
  #   selectInput("box_y", "y-axis", choices=colnames(coconut.df))  
  # })
  # 
  # 
  # #MAP selectinput
  # output$input_map <- renderUI({
  #   if (is.null(input$nut))
  #     return(NULL)
  #   selectInput("map_data", "data", choices=colnames(coconut.df))  
271 272 273
  # })
  
  
274 275 276 277
  #Continue to dashboard page  
  observeEvent(input$dashboardSite, {
    updateTabItems(session, "tabs",selected = "dashboard")
  })
278
  
279
  #For counting the plots and giving axis and plots individual names
280
  plotCounter <<- 0
281 282 283 284 285
  plotname <<- paste("plot", plotCounter, sep="")
  xplotname<<- paste("x",plotname,sep="")
  yplotname<<-paste("y",plotname, sep="")
  
  #BARCHART box insert
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
286 287
  observeEvent(input$check_hist, {
    
288
    #Setting names
289
    plotname<<-paste("plot", plotCounter, sep="")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
290
    plotCounter<<-plotCounter+1
291 292
    xplotname<<- paste("x",plotname,sep="")
    yplotname<<-paste("y",plotname, sep="")
293 294

    #Inserting box & Chart
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
295 296
    insertUI(
      selector= "#viewpanel", #wo will ichs hinhaben
297 298
      ui= box(  width = 12,
                title="Barchart",
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
299 300 301
                status= "warning",
                solidHeader = TRUE,
                collapsible = TRUE,
302 303 304
                selectInput(xplotname, "x-axis", choices=colnames(coconut.df)),
                selectInput(yplotname, "y-axis", choices=colnames(coconut.df)),
                plotOutput(plotname, height = 400))
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
305
    )
306
    local({ 
307
        # data handling
308 309 310 311
      output[[plotname]] <- renderPlot({
        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,10L), class = "data.frame")
312 313 314 315 316 317 318 319 320 321
        # New Bar-Plot
        barplot(data$V2,data$V1, 
                 ylab=input[[yplotname]],
                 xlab=input[[xplotname]],
                 names.arg = data$V1
        # NOTE: PLEASE COMMENT IN IF DATA SET WITH FEW DATA IS USED --> MAKES AXES BETTER READABLE
                 #,
                 #las=2
                 #axis.lty=1
                )
322 323
      })
    }) #Local end
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
324 325
  })
  
326 327
  #BARCHART text
  output$bar_explain <- renderText({
328
    "Here you can add a barchart. A bar chart uses bars to show comparisons between categories of data. If you was trying to compare the height of something then intuitvely you would represent this by using columns. After clicking on the add button, a box with dropdownfields and a barchart will apear. Please set your wanted data for the x-and y-axis. Also be aware, that once you created another chart you won't be able to change the data of your previous charts."
329 330
  })
  
331
  observeEvent(input$check_time, {
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
332
    
333 334 335 336 337 338 339 340 341 342 343 344 345 346 347
    # plotname<<-paste("plot", plotCounter, sep="")
    # plotCounter<<-plotCounter+1
    # xplotname<<- paste("x",plotname,sep="")
    # yplotname<<-paste("y",plotname, sep="")
   
    insertUI(
      #Inserting box and Chart
      selector= "#viewpanel", #wo will ichs hinhaben
      ui= box(  width = 12,
                title="Timeline",
                status= "warning",
                solidHeader = TRUE,
                collapsible = TRUE,
                timevisOutput("time", height = 250))
      
348
    )
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
349
    
350 351 352 353 354 355 356 357 358 359 360 361 362 363 364
      local({
      output$time <- renderTimevis({
        
        # data handling
        data <-  data.frame(
          id      = 1:length(parsedEndtimes),
          content= c(1:length(parsedEndtimes)),
          start   = c(anytime(totalST), head(parsedEndtimes, -1)),
          end     = parsedEndtimes
        )
        #New Timeline
        timevis(data)
        
      })
      })
365
  })
366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399

  # #TIMELINE insert box
  # output$time_box <- renderUI({
  #   if(input$check_time)
  #     box(  width = 12,
  #           title="Timeline",
  #           status= "warning",
  #           solidHeader = TRUE,
  #           collapsible = TRUE,
  #           timevisOutput("time", height = 175)
  #     )
  # })
  # 
  # #TIMELINE view
  # output$time <- renderTimevis({
  #   print("TIME wird aufgerufen")
  #   
  #   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
400
  
401
  #TIMELINE text
402
  output$texttimeline <- renderText({
403
  "Add Timeline for getting a Timeline about CoCoQuest Tasks and Questions.To see how long a the participant took for a certain task. Please note that the timeline is static, you can not show different types of data here. Also you can not add multiple charts here. "
404 405
  })
  
406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438
#LINECHART
  observeEvent(input$check_line, {
    #setting names
    plotname<<-paste("plot", plotCounter, sep="")
    plotCounter<<-plotCounter+1
    xplotname<<- paste("x",plotname,sep="")
    yplotname<<-paste("y",plotname, sep="")
   
    #inserting box and chart
    insertUI(
      selector= "#viewpanel", #wo will ichs hinhaben
      ui= box(  width = 12,
                title="Linechart",
                status= "warning",
                solidHeader = TRUE,
                collapsible = TRUE,
                selectInput(xplotname, "x-axis", choices=colnames(coconut.df)),
                selectInput(yplotname, "y-axis", choices=colnames(coconut.df)),
                plotOutput(plotname, height = 250))
      
    )
    local({ 
      
      output[[plotname]] <- renderPlot({
        #data handling
        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,10L), class = "data.frame")
        #new Linechart
        plot(data$V1,data$V2, type="l", ylab=input[[yplotname]], xlab=input[[xplotname]], las=2)
        
      })
    }) #Local end
439 440
  })
  
441 442
  #LINECHART text
  output$line_explain <- renderText({
443 444 445
    "Here you can add a linechart. After clicking on the add button, a box with dropdownfields and a linechart will apear. Please set your wanted data for the x-and y-axis. Also be aware, that once you created another chart you won't be able to change the data of your previous charts."
    
    
446 447
  })
  
448 449 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 476 477 478 479 480 481 482
#SCATTERPLOT
  observeEvent(input$check_scat, {
    #Setting names
    plotname<<-paste("plot", plotCounter, sep="")
    plotCounter<<-plotCounter+1
    xplotname<<- paste("x",plotname,sep="")
    yplotname<<-paste("y",plotname, sep="")

    # Inserting Box and Plot
    insertUI(
      selector= "#viewpanel", #wo will ichs hinhaben
      ui= box(  width = 12,
                title="Scatterplot",
                status= "warning",
                solidHeader = TRUE,
                collapsible = TRUE,
                selectInput(xplotname, "x-axis", choices=colnames(coconut.df)),
                selectInput(yplotname, "y-axis", choices=colnames(coconut.df)),
                plotOutput(plotname, height = 250))
      
    )
    local({ 
      
      output[[plotname]] <- renderPlot({
        print("hello itse mi")
        print(yplotname)
        #data handling 
        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,10L), class = "data.frame")
        #new scatterplot
        plot(data$V1,data$V2, type="p", ylab=input[[yplotname]], xlab=input[[xplotname]], las=2, axis.lty=1)
        
      })
    }) #Local end
483 484
  })
  
485
  
486 487
  #SCATTERPLOT text
  output$scat_explain <- renderText({
488
    "Here you can add a scatterplot. After clicking on the add button, a box with dropdownfields and a scatterolot will apear. Please set your wanted data for the x-and y-axis. Also be aware, that once you created another chart you won't be able to change the data of your previous charts."
489 490
  })
  
491
  
492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524
#BOXPLOT
  observeEvent(input$check_box, {
    #Setting names
    plotname<<-paste("plot", plotCounter, sep="")
    plotCounter<<-plotCounter+1
    xplotname<<- paste("x",plotname,sep="")
    yplotname<<-paste("y",plotname, sep="")

    #Inserting Box and plot
    insertUI(
      selector= "#viewpanel", #wo will ichs hinhaben
      ui= box(  width = 12,
                title="Boxplot",
                status= "warning",
                solidHeader = TRUE,
                collapsible = TRUE,
                selectInput(xplotname, "data", choices=colnames(coconut.df)),
                #selectInput(yplotname, "y-axis", choices=colnames(coconut.df)),
                plotOutput(plotname, height = 250))
      
    )
    local({ 
      
      output[[plotname]] <- renderPlot({
        
        #handling data
        data<- structure(list(V1=as.numeric(coconut.df[[input[[xplotname]]]])),
                         .Names=c("V1"), row.names=c(NA,10L), class = "data.frame")
        #new Boxplot
        boxplot(data$V1, type="box", xlab=input[[xplotname]])
        
      })
    }) #Local end
525 526
  })
  
527
  
528 529
  #BOXPLOT text
  output$box_explain <- renderText({
530 531
    "Here you can add a boxplot. After clicking on the add button, a box with a dropdownfield and a boxplot will apear. Please set your wanted data for the data. Also be aware, that once you created another chart you won't be able to change the data of your previous charts."
    
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
532 533
  })
  
534 535 536 537 538 539 540
#MAP
  observeEvent(input$check_map, {
    #Setting names
    plotname<<-paste("plot", plotCounter, sep="")
    plotCounter<<-plotCounter+1
    xplotname<<- paste("x",plotname,sep="")
    yplotname<<-paste("y",plotname, sep="")
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
541
    
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588
    #Inserting box and plot
    insertUI(
      selector= "#viewpanel", #wo will ichs hinhaben
      ui= box(  width = 12,
                title="Map",
                status= "warning",
                solidHeader = TRUE,
                collapsible = TRUE,
                selectInput(xplotname, "data", choices=colnames(coconut.df)),
                leafletOutput(plotname, height = 250))
      
    )
    local({ 
      
      output[[plotname]] <- renderLeaflet({
      #handling data
        data <- as.numeric(coconut.df[[input[[xplotname]]]])
        #getting max for normation
        max_data<<- max(data)
        c<-1
        
        #norming data
        for(c in 1:length(data)){
          data[c]<-(data[c]/max_data)*10
        }
        
        #encoding data
        colorData <-
          cut(
            data,
            c(0, 2, 5, 7, 10),
            include.lowest = T,
            lables = c('<2', '<5', '<7', '<10')
          )
        #color encoding data
        colorGrad <- colorFactor('RdYlGn', colorData) 
        
        #new map
        m <<- leaflet()
        x=1
        m <<- addTiles(m)
        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)
        m
        
      })
    }) #Local end
589 590
  })
  
591 592
  #MAP text
  output$map_explain <- renderText({
593 594 595
    "Here you can add a map.  After clicking on the add button, a box with dropdownfield and a map will apear. Please set your wanted data. The map will show the way the participant went, also the data you selected is going to be normalized (highest value=10).Also be aware, that once you created another chart you won't be able to change the data of your previous charts."

    })
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
596
  
597
  #TODO: TOOLTIP
598 599 600 601 602
  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
603
  
604
  #TODO: DownloadButton
605
  output$down.pdf <- downloadHandler(
606
    filename = "download.pdf",
607
    content = function(file) {
608
      CairoPDF(file = file, width=12, height=8)
609
      #boxplot(data$V1, type="box", xlab=input$box_x)
610 611
      #m
      #leafletOutput("map", height = 250)
612
      output$box 
613 614 615 616
      data<- structure(list(V1=as.numeric(coconut.df[[input$scat_x]]),
                            V2=as.numeric(coconut.df[[input$scat_y]])),
                       .Names=c("V1","V2"), row.names=c(NA,6L), class = "data.frame")
      plot(data$V1,data$V2, type="p", xlab=input$scat_x, ylab=input$scat_y )
617 618 619
      dev.off()
    })
  
620

621

622 623 624
  ################## SOME STUFF ################
  
  ##DOWNLOADBUTTON
625
  #observeEvent(input$screenshot,{
626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648
  #if(input$check_line|input$check_time|input$check_map|input$check_hist)
  #disable("screenshot")
  #webshot::install_phantomjs()
  
  # cdat <<- session$clientData
  # url <- paste0(cdat$url_hostname,":", cdat$url_port,"/")
  # print(url)
  
  #URL <- "http://rstudio.github.io/leaflet/"
  #appshot("cocoVisR/", file = "dashboard.png", port = getOption("shiny.port"), envvars = NULL)
  #webshot(url,delay = 5.0)
  #knit("dashboard.png")
  #port <- cdat$url_port
  #mapshot(m, file="~/Rplot.png")
  
  #webshot(url, "dashboard.png", delay = 20.0) # does NOT WORK 
  #appdir <- system.file("examples", "01_hello", package="shiny")
  #print("appdir")
  #print(appdir)
  #appshot(appdir, "01_hello.png")
  
  #leaflet.print(m)
  
649 650 651 652 653 654 655 656 657
  ##THIRD TRY
  # observeEvent(input$down.pdf, {
  #   
  #     pdf("www/myreport.pdf")
  #     plotinput()
  #     dev.off()
  #     tags$iframe(style="height:600px; width:100%", src="myreport.pdf")
  #   
  # })
658 659
  
  
660
  #})
661
  # url <- paste0(cdat$url_protocol,"//",cdat$url_hostname,":", cdat$url_port, cdat$url_pathname,cdat$url_search)
662
  #output$downButton <- downloadHandler(
Stephanie Wegscheidl's avatar
Stephanie Wegscheidl committed
663 664 665 666 667 668 669
  # filename="dashboard.png",
  #content=function(file){
  # observeEvent(input$downButton, {
  #appshot("cocoVisR/dashboard", file = "dashboard.png", port = getOption("shiny.port"), envvars = NULL)
  
  #}) 
  #}
670
  #)
671 672 673
  
  
  
674
  ##BARCHART
675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691
  #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
692
}