Skip to content

Commit 5e1243a

Browse files
committed
add EXPERIMENTERS analyzer
1 parent 8904d5e commit 5e1243a

File tree

1 file changed

+82
-14
lines changed

1 file changed

+82
-14
lines changed

resultsAnalysis/resultsAnalysis.js

+82-14
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,33 @@ var TITELS = ["four/aLogic","four/aLogicNegative", "four/aLogicNegative1", "four
1616
"two/bStructure", "two/forArithmetic", "two/forArray", "special/forArr0", "special/forArr1",
1717
"special/forArr2", "special/forArr3","special/forArr4","special/forArr5","special/forArr6"];
1818

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"]
1939

40+
var END_OF_LINE_CSV = "\r\n";
2041
var CORRECT_FILE_NAME = 'correct.csv';
2142
var WRONG_FILE_NAME = 'wrong.csv';
43+
var EXPERIMENTERS_FILE_NAME = 'experimenters.csv';
2244

23-
var SELECT_EXPERIMENTERS_IDS_QUERY = 'SELECT ID from ' + EXPERIMENTERS_TABLE_NAME;
45+
var SELECT_EXPERIMENTERS_QUERY = 'SELECT * from ' + EXPERIMENTERS_TABLE_NAME;
2446
var SELECT_EXPERIMENTERS_ANSWERS_QUERY = 'SELECT * from ' + ANSWERS_TABLE_NAME + ' where userId = ';
2547

2648
var db;
@@ -29,6 +51,7 @@ var experimentersIndex = -1;
2951

3052
var correctFileStream;
3153
var wrongFileStream;
54+
var experimentersFileStream;
3255

3356
var createConnection = function(){
3457
var promise = new Promise(function(resolve, reject) {
@@ -61,9 +84,9 @@ var closeConnection = function(what){
6184
return promise;
6285
};
6386

64-
var fetchExperimenterIds = function(){
87+
var fetchExperimenters = function(){
6588
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) {
6790
if (err) {
6891
console.log(err);
6992
}else {
@@ -111,12 +134,31 @@ var getExperimenterAnswers = function(experimenter){
111134
};
112135

113136
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;
120162
};
121163

122164
var getAnswerDurationByIndicator = function(answers, indicator, questionId){
@@ -143,6 +185,7 @@ var createCsvOutputForRanges = function(experimenter, answers, indicator){
143185
for(var questionId = 100; questionId <= 106; questionId++){
144186
output = output + ',' + getAnswerDurationByIndicator(answers, indicator, questionId);
145187
}
188+
output += END_OF_LINE_CSV;
146189
return output;
147190
};
148191

@@ -178,6 +221,7 @@ var prepareFiles = function(){
178221
var promise = new Promise(function(resolve, reject) {
179222
correctFileStream = fs.createWriteStream(CORRECT_FILE_NAME, {'flags': 'a'});
180223
wrongFileStream = fs.createWriteStream(WRONG_FILE_NAME, {'flags': 'a'});
224+
experimentersFileStream = fs.createWriteStream(EXPERIMENTERS_FILE_NAME, {'flags': 'a'});
181225
resolve();
182226
});
183227
return promise;
@@ -192,12 +236,36 @@ var closeFiles = function(){
192236
return promise;
193237
};
194238

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+
195265
var addTitles = function(){
196266
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();
201269
resolve();
202270
});
203271
return promise;
@@ -206,7 +274,7 @@ var addTitles = function(){
206274
Promise.all([
207275
createConnection(),
208276
prepareFiles()
209-
]).then(fetchExperimenterIds)
277+
]).then(fetchExperimenters)
210278
.then(addTitles)
211279
.then(handleNextExperimenter)
212280
.then(closeFiles)

0 commit comments

Comments
 (0)