@@ -16,11 +16,33 @@ var TITELS = ["four/aLogic","four/aLogicNegative", "four/aLogicNegative1", "four
16
16
"two/bStructure" , "two/forArithmetic" , "two/forArray" , "special/forArr0" , "special/forArr1" ,
17
17
"special/forArr2" , "special/forArr3" , "special/forArr4" , "special/forArr5" , "special/forArr6" ] ;
18
18
19
+ var EXPERIMENTERS_TITELS = [ "id" ,
20
+ "start" ,
21
+ "timestamp" ,
22
+ "age" ,
23
+ "gender" ,
24
+ "selftaught" ,
25
+ "bafinised" ,
26
+ "bastarted" ,
27
+ "bastudied" ,
28
+ "mafinised" ,
29
+ "mastarted" ,
30
+ "mastudied" ,
31
+ "phdfinised" ,
32
+ "phdstarted" ,
33
+ "phdstudied" ,
34
+ "yearsofexperience" ,
35
+ "programminglanguages" ,
36
+ "assessselfprogrammingskills" ,
37
+ "firsttime" ,
38
+ "testplanid" ]
19
39
40
+ var END_OF_LINE_CSV = "\r\n" ;
20
41
var CORRECT_FILE_NAME = 'correct.csv' ;
21
42
var WRONG_FILE_NAME = 'wrong.csv' ;
43
+ var EXPERIMENTERS_FILE_NAME = 'experimenters.csv' ;
22
44
23
- var SELECT_EXPERIMENTERS_IDS_QUERY = 'SELECT ID from ' + EXPERIMENTERS_TABLE_NAME ;
45
+ var SELECT_EXPERIMENTERS_QUERY = 'SELECT * from ' + EXPERIMENTERS_TABLE_NAME ;
24
46
var SELECT_EXPERIMENTERS_ANSWERS_QUERY = 'SELECT * from ' + ANSWERS_TABLE_NAME + ' where userId = ' ;
25
47
26
48
var db ;
@@ -29,6 +51,7 @@ var experimentersIndex = -1;
29
51
30
52
var correctFileStream ;
31
53
var wrongFileStream ;
54
+ var experimentersFileStream ;
32
55
33
56
var createConnection = function ( ) {
34
57
var promise = new Promise ( function ( resolve , reject ) {
@@ -61,9 +84,9 @@ var closeConnection = function(what){
61
84
return promise ;
62
85
} ;
63
86
64
- var fetchExperimenterIds = function ( ) {
87
+ var fetchExperimenters = function ( ) {
65
88
var promise = new Promise ( function ( resolve , reject ) {
66
- db . query ( SELECT_EXPERIMENTERS_IDS_QUERY , function ( err , result ) {
89
+ db . query ( SELECT_EXPERIMENTERS_QUERY , function ( err , result ) {
67
90
if ( err ) {
68
91
console . log ( err ) ;
69
92
} else {
@@ -111,12 +134,31 @@ var getExperimenterAnswers = function(experimenter){
111
134
} ;
112
135
113
136
var writeExperimenterAnswers = function ( experimenter , answers ) {
114
- var correct = createCsvOutputForRanges ( experimenter , answers , function ( ans ) { return ans . rightanswer == ans . useranswer } ) ;
115
- var wrong = createCsvOutputForRanges ( experimenter , answers , function ( ans ) { return ans . rightanswer != ans . useranswer } ) ;
116
- correct += "\r\n" ;
117
- wrong += "\r\n" ;
118
- correctFileStream . write ( correct ) ;
119
- wrongFileStream . write ( wrong ) ;
137
+ var experimenterCvs = createCsvOutputForExperimenter ( experimenter ) ;
138
+ var correctCvs = createCsvOutputForRanges ( experimenter , answers , function ( ans ) { return ans . rightanswer == ans . useranswer } ) ;
139
+ var wrongCvs = createCsvOutputForRanges ( experimenter , answers , function ( ans ) { return ans . rightanswer != ans . useranswer } ) ;
140
+ experimentersFileStream . write ( experimenterCvs ) ;
141
+ correctFileStream . write ( correctCvs ) ;
142
+ wrongFileStream . write ( wrongCvs ) ;
143
+ } ;
144
+
145
+ var createCsvOutputForExperimenter = function ( experimenter , answers ) {
146
+ var csv = "" ;
147
+ for ( var i = 0 ; i < EXPERIMENTERS_TITELS . length ; i ++ ) {
148
+ var field = EXPERIMENTERS_TITELS [ i ] ;
149
+ var value = experimenter [ field ] ;
150
+ if ( typeof ( value ) != 'undefined' ) {
151
+ if ( Array . isArray ( value ) ) {
152
+ csv = csv + '"' + value . toString ( ) + '"' ;
153
+ }
154
+ else {
155
+ csv = csv + value ;
156
+ }
157
+ }
158
+ csv = csv + ',' ;
159
+ }
160
+ csv += END_OF_LINE_CSV ;
161
+ return csv ;
120
162
} ;
121
163
122
164
var getAnswerDurationByIndicator = function ( answers , indicator , questionId ) {
@@ -143,6 +185,7 @@ var createCsvOutputForRanges = function(experimenter, answers, indicator){
143
185
for ( var questionId = 100 ; questionId <= 106 ; questionId ++ ) {
144
186
output = output + ',' + getAnswerDurationByIndicator ( answers , indicator , questionId ) ;
145
187
}
188
+ output += END_OF_LINE_CSV ;
146
189
return output ;
147
190
} ;
148
191
@@ -178,6 +221,7 @@ var prepareFiles = function(){
178
221
var promise = new Promise ( function ( resolve , reject ) {
179
222
correctFileStream = fs . createWriteStream ( CORRECT_FILE_NAME , { 'flags' : 'a' } ) ;
180
223
wrongFileStream = fs . createWriteStream ( WRONG_FILE_NAME , { 'flags' : 'a' } ) ;
224
+ experimentersFileStream = fs . createWriteStream ( EXPERIMENTERS_FILE_NAME , { 'flags' : 'a' } ) ;
181
225
resolve ( ) ;
182
226
} ) ;
183
227
return promise ;
@@ -192,12 +236,36 @@ var closeFiles = function(){
192
236
return promise ;
193
237
} ;
194
238
239
+ var createCsvFromJsonKeys = function ( json ) {
240
+ var array = Object . keys ( json ) ;
241
+ var csv = createCsvFromArray ( array ) ;
242
+ return csv ;
243
+ } ;
244
+
245
+
246
+ var createCsvFromArray = function ( array ) {
247
+ var csv = array . join ( ) ;
248
+ csv += END_OF_LINE_CSV ;
249
+ return csv ;
250
+ } ;
251
+
252
+ var addTitlesToAnswerFiles = function ( ) {
253
+ var csvTitles = "," + createCsvFromArray ( TITELS ) ;
254
+ correctFileStream . write ( csvTitles ) ;
255
+ wrongFileStream . write ( csvTitles ) ;
256
+ } ;
257
+
258
+ var addTitlesToExperimentersFile = function ( ) {
259
+ var csvTitles = createCsvFromArray ( EXPERIMENTERS_TITELS ) ;
260
+ experimentersFileStream . write ( csvTitles ) ;
261
+ } ;
262
+
263
+
264
+
195
265
var addTitles = function ( ) {
196
266
var promise = new Promise ( function ( resolve , reject ) {
197
- var csvTitles = "," + TITELS . join ( ) ;
198
- csvTitles += "\r\n" ;
199
- correctFileStream . write ( csvTitles ) ;
200
- wrongFileStream . write ( csvTitles ) ;
267
+ addTitlesToAnswerFiles ( ) ;
268
+ addTitlesToExperimentersFile ( ) ;
201
269
resolve ( ) ;
202
270
} ) ;
203
271
return promise ;
@@ -206,7 +274,7 @@ var addTitles = function(){
206
274
Promise . all ( [
207
275
createConnection ( ) ,
208
276
prepareFiles ( )
209
- ] ) . then ( fetchExperimenterIds )
277
+ ] ) . then ( fetchExperimenters )
210
278
. then ( addTitles )
211
279
. then ( handleNextExperimenter )
212
280
. then ( closeFiles )
0 commit comments