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
}