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

library(shiny)
3
library(jsonlite)
4
library(DT)
5
library(webshot)
Stephanie's avatar
Stephanie committed
6

Stephanie's avatar
Stephanie committed
7 8
server <- function(input, output) {
  set.seed(122)
9
  
10
  #CoConUT Data import and showing into data site 
11 12
  output$nut <- renderDataTable({
    inFile <- input$nut
13 14
    if (is.null(inFile))
      return(NULL)
15
    
16
    #loading CoConUT data
17
    json_data_coco <- fromJSON(paste(inFile$datapath, sep = ""), flatten = TRUE)
18
    coconut.df <<- json_data_coco[["data"]]
19 20
    
    lastCoConUT <<- inFile$name
21 22
    print("coconut:")
    print(coconut.df)
23 24
    
    
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 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
    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}

    
77
    # setting the table style
78 79 80 81 82 83 84 85 86 87 88 89 90
    datatable(
              cbind(coconut.df), 
              options = list(
                searching = TRUE,
                autoWidth = TRUE,
                rownames = FALSE,
                scroller = TRUE,
                scrollX = TRUE,
                scrollY = "500px",
                fixedHeader = TRUE,
                class = 'cell-border stripe'
              )
    )
91 92
    
    
93
  })
94 95
  
  output$lastLoadedNut<- renderText({
96 97 98
    if (is.null(input$nut))
      return(NULL)
    else lastCoConUT
99 100
    
  })
101

102
  
103 104

  output$questTimes <- renderDataTable({
105 106 107 108
    inFile <- input$quest
    if (is.null(inFile))
      return(NULL)
    
109 110
    #loading CoCoQuest data
    json_data_quest <<- fromJSON(paste(inFile$datapath, sep = ""), flatten = TRUE)
111
    
112
    lastCoCoQuest <<- inFile$name
113
    
114 115
    json_data_quest$unix_starttime <- as.numeric(json_data_quest$startTime)/1000
    json_data_quest$unix_endtime <- as.numeric(json_data_quest$endTime)/1000
116 117 118
    totalStarttime <<- anytime(json_data_quest$unix_starttime)
    totalEndtime <<- anytime(json_data_quest$unix_endtime)
    
119
    
120
    #unix  parsed
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
    dat <- do.call(rbind, json_data_quest$tasks$data)
  
    endtimes <<- c(anytime(dat$endtime/1000))
    tasks <- rep(1:length(json_data_quest$tasks$data), sapply(json_data_quest$tasks$data, nrow))
    #count<<-0
   # y <<-1
   # x<<-1
    #numOfTasks <<- if(tasks[x]!=y)
    #                {
    #                  count<<-count+1
    #                  y<<-y+1
    #                  x<<-x+1
    #}
    #else{x<<-x+1}
   
    together <<- c(tasks, endtimes)
    
    #all <<- matrix(c(tasks,endtimes),byrow=FALSE,nrow=length(tasks))
    all <- rbind(together)
140
    
141
  
142
    #setting the table style
143
    datatable(
144
      cbind(tasks, endtimes),
145
      options = list(
146 147
        searching = FALSE,
        rownames = TRUE,
148
        class = 'cell-border stripe'
149
     )
150 151 152
    )
  })
  
153 154 155 156 157
  #CoCOQuest Data import and showing into data site 
  output$lastLoadedQuest <- renderText({
    if (is.null(input$quest))
      return(NULL)
    else lastCoCoQuest
158
    
159 160 161 162 163 164 165 166
  })
  
  output$totalStarttime <- renderText({
    if (is.null(input$quest))
      return(NULL)
    else as.POSIXct(totalStarttime)
    print(totalStarttime)
  })
167 168
  
  
Stephanie's avatar
Stephanie committed
169
  #TODO: Getting HEADER out of json to select it
170
  
171
  #Not sure if so smart but it should work that way --> mit if schaun welches ausgewählt worden ist und die daten dann für dashboard ausgeben
172
  output$input_hist_x <- renderUI({
173 174 175
    if (is.null(input$nut))
      return(NULL)
    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) 
176 177 178
  })
  
  output$input_hist_y <- renderUI({
179 180 181
    if (is.null(input$nut))
      return(NULL)
    selectInput("in2", "y-axis:", as.list(coconut.df),multiple=TRUE, selectize=TRUE) 
182 183 184
  })
  
  output$input_time_x <- renderUI({
185 186 187
    if (is.null(input$nut))
      return(NULL)
    selectInput("in3", "x-axis:", as.list(coconut.df),multiple=TRUE, selectize=TRUE) 
188
  })
189
  
190
  output$input_time_y <- renderUI({
191 192 193
    if (is.null(input$nut))
      return(NULL)
    selectInput("in4", "y-axis:", as.list(coconut.df),multiple=TRUE, selectize=TRUE) 
194 195
  })
  
196
  output$input_map_x <- renderUI({
197 198 199
    if (is.null(input$nut))
      return(NULL)
    selectInput("in5", "x-axis:", as.list(coconut.df),multiple=TRUE, selectize=TRUE) 
200 201 202
  })
  
  output$input_map_y <- renderUI({
203 204 205
    if (is.null(input$nut))
      return(NULL)
    selectInput("in6", "y-axis:", as.list(coconut.df),multiple=TRUE, selectize=TRUE) 
206 207 208
  })
  
  output$input_line_x <- renderUI({
209 210 211
    if (is.null(input$nut))
      return(NULL)
    selectInput("in7", "x-axis:", as.list(coconut.df),multiple=TRUE, selectize=TRUE) 
212 213 214
  })
  
  output$input_line_y <- renderUI({
215 216 217
    if (is.null(input$nut))
      return(NULL)
    selectInput("in8", "y-axis:", as.list(coconut.df),multiple=TRUE, selectize=TRUE) 
218
  })
219
  
220
  
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
  output$download <- downloadHandler({
    filename=function(){
      dashbord.png
      paste("dashboard", "png", sep=".")
    }
    content=function(file){
      #open divice
      png(file)
      #create image
      appshot(cocoVisR, file = "dashboard.png", ..., port = getOption("shiny.port"), envvars = NULL)
      #close divice
      dev.off()
    }
    
  })
  
  
  #output$downButton <- downloadHandler(
   # filename="dashboard.png",
    #content=function(file){
     # observeEvent(input$downButton, {
      #appshot("cocoVisR/dashboard", file = "dashboard.png", port = getOption("shiny.port"), envvars = NULL)
 
      #}) 
    #}
  #)
  #appshot(cocoVisR, file = "dashboard.png", ..., port = getOption("shiny.port"),
  #envvars = NULL)
249
  
250
  
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267
  #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
268
}