comparison analyse.html @ 746:c64529e5dee4

Save PHP script fix; analysis webpage WIP
author Brecht De Man <BrechtDeMan@users.noreply.github.com>
date Fri, 13 Nov 2015 17:59:39 +0000
parents 9da8a3e65a78
children 888292c88c33
comparison
equal deleted inserted replaced
745:e010cdf6563d 746:c64529e5dee4
13 13
14 <script type="text/javascript" src="https://www.google.com/jsapi"></script> 14 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
15 <script type="text/javascript"> 15 <script type="text/javascript">
16 // To aid 'one-page set-up' all scripts and CSS must be included directly in this file! 16 // To aid 'one-page set-up' all scripts and CSS must be included directly in this file!
17 17
18 google.load("visualization", "1", {packages:["corechart"]}); 18 //google.load("visualization", "1", {packages:["corechart"]});
19 19
20 /************* 20 /*************
21 * SETUP * 21 * SETUP *
22 *************/ 22 *************/
23 // folder where to find the XML files 23 // folder where to find the XML files
24 xmlFileFolder = "analysis_test"; 24 xmlFileFolder = "analysis_test";
25 // array of XML files 25 // array of XML files
26 var xmlFiles = ['QM-1-1.xml','QM-2-1.xml','QM-2-2.xml','QM-2-3.xml','QM-3-1.xml','QM-3-2.xml','QM-4-1.xml','QM-5-1.xml','QM-5-2.xml','QM-6-1.xml','QM-6-2.xml','QM-7-1.xml','QM-7-2.xml','QM-8-1.xml','QM-9-1.xml','QM-10-1.xml','QM-11-1.xml','QM-12-1.xml','QM-12-2.xml','QM-13-1.xml','QM-14-1.xml','QM-15-1.xml','QM-16-1.xml','QM-17-1.xml','QM-18-1.xml','QM-18-2.xml','QM-18-3.xml','QM-19-1.xml','QM-20-1.xml','QM-20-2.xml','QM-20-3.xml','QM-21-1.xml','QM-21-2.xml']; 26 var xmlFiles = ['McG-A-2013-09.xml', 'McG-A-2014-03.xml', 'McG-A-2014-12.xml', 'McG-B-2013-09.xml',
27 'McG-B-2014-03.xml', 'McG-B-2014-12.xml', 'McG-C-2013-09.xml', 'McG-C-2014-03.xml', 'McG-C-2014-12.xml',
28 'McG-D-2013-09.xml', 'McG-D-2014-03.xml', 'McG-D-2014-12.xml', 'McG-E-2013-09.xml', 'McG-E-2014-03.xml',
29 'McG-E-2014-12.xml', 'McG-F-2013-09.xml', 'McG-F-2014-03.xml', 'McG-F-2014-12.xml', 'McG-G-2014-03.xml',
30 'McG-G-2014-12.xml', 'McG-H-2013-09.xml', 'McG-H-2014-03.xml', 'McG-H-2014-12.xml', 'McG-I-2013-09.xml',
31 'McG-I-2014-03.xml', 'McG-J-2013-09.xml', 'McG-J-2014-03.xml', 'McG-K-2013-09.xml', 'McG-K-2014-03.xml',
32 'McG-L-2013-09.xml', 'McG-L-2014-03.xml', 'McG-M-2013-09.xml', 'McG-M-2014-03.xml', 'McG-N-2013-09.xml',
33 'McG-N-2014-03.xml', 'McG-O-2013-09.xml', 'McG-O-2014-03.xml', 'McG-P-2013-09.xml', 'McG-P-2014-03.xml',
34 'McG-pro1-2013-09.xml', 'McG-pro1-2014-03.xml', 'McG-pro1-2014-12.xml', 'McG-pro2-2013-09.xml',
35 'McG-pro2-2014-03.xml', 'McG-pro2-2014-12.xml', 'McG-Q-2014-12.xml', 'McG-R-2014-12.xml',
36 'McG-S-2014-12.xml', 'McG-subA-2013-09.xml', 'McG-subA-2014-03.xml', 'McG-subB-2014-03.xml',
37 'McG-subB-2014-12.xml', 'McG-subC-2013-09.xml', 'McG-subC-2014-03.xml', 'McG-subC-2014-12.xml',
38 'McG-subD-2013-09.xml', 'McG-subD-2014-12.xml', 'McG-subE-2014-12.xml', 'McG-subG-2014-12.xml',
39 'McG-subH-2013-09.xml', 'McG-T-2014-12.xml', 'McG-U-2014-12.xml', 'McG-V-2014-12.xml',
40 'McG-W-2014-12.xml', 'McG-X-2014-12.xml', 'MG1-2013-09.xml', 'MG2-2013-09.xml', 'MG3-2013-09.xml',
41 'MG4-2013-09.xml', 'MG5-2013-09.xml', 'MG6-2013-09.xml', 'MG7-2013-09.xml', 'MG8-2013-09.xml',
42 'MG9-2013-09.xml', 'QM-1-1.xml', 'QM-1-2.xml', 'QM-10-1.xml', 'QM-11-1.xml', 'QM-11-2.xml', 'QM-12-1.xml', 'QM-12-2.xml',
43 'QM-13-1.xml', 'QM-14-1.xml', 'QM-15-1.xml', 'QM-16-1.xml', 'QM-17-1.xml', 'QM-18-1.xml', 'QM-18-2.xml',
44 'QM-18-3.xml', 'QM-19-1.xml', 'QM-2-1.xml', 'QM-2-2.xml', 'QM-2-3.xml', 'QM-20-1.xml', 'QM-20-2.xml',
45 'QM-20-3.xml', 'QM-21-1.xml', 'QM-21-2.xml', 'QM-3-1.xml', 'QM-3-2.xml', 'QM-3-3.xml', 'QM-4-1.xml', 'QM-5-1.xml',
46 'QM-5-2.xml', 'QM-6-1.xml', 'QM-6-2.xml', 'QM-7-1.xml', 'QM-7-2.xml', 'QM-8-1.xml', 'QM-9-1.xml',
47 'PXL-L1.xml','PXL-L2.xml','PXL-L3.xml','PXL-L4.xml','PXL-L5.xml','PXL-S1.xml','PXL-S2.xml','PXL-S3.xml',
48 'PXL-S4.xml','PXL-S5.xml','PXL-S6.xml','PXL-S7.xml','PXL-pro.xml','DU-A1.xml','DU-A2.xml','DU-B1.xml',
49 'DU-B2.xml','DU-C1.xml','DU-C2.xml','DU-D1.xml','DU-D2.xml','DU-E1.xml','DU-F1.xml','DU-F2.xml','DU-G1.xml',
50 'DU-G2.xml','DU-H1.xml','DU-H2.xml','DU-I2.xml','DU-J2.xml','DU-K1.xml','DU-K2.xml','DU-L1.xml','DU-L2.xml',
51 'DU-M1.xml','DU-M2.xml','DU-N1.xml','DU-O1.xml','DU-O2.xml','DU-P1.xml','DU-P2.xml','DU-Q1.xml','DU-Q2.xml',
52 'DU-R1.xml','DU-R2.xml','DU-S1.xml','DU-S2.xml','DU-T1.xml','DU-T2.xml','DU-U1.xml','DU-U2.xml','DU-U3.xml'];
53 //['QM-1-1.xml','QM-2-1.xml','QM-2-2.xml','QM-2-3.xml','QM-3-1.xml','QM-3-2.xml','QM-4-1.xml','QM-5-1.xml','QM-5-2.xml','QM-6-1.xml','QM-6-2.xml','QM-7-1.xml','QM-7-2.xml','QM-8-1.xml','QM-9-1.xml','QM-10-1.xml','QM-11-1.xml','QM-12-1.xml','QM-12-2.xml','QM-13-1.xml','QM-14-1.xml','QM-15-1.xml','QM-16-1.xml','QM-17-1.xml','QM-18-1.xml','QM-18-2.xml','QM-18-3.xml','QM-19-1.xml','QM-20-1.xml','QM-20-2.xml','QM-20-3.xml','QM-21-1.xml','QM-21-2.xml'];
27 //['McG-A-2014-03.xml','McG-B-2014-03.xml','McG-C-2014-03.xml','McG-D-2014-03.xml','McG-E-2014-03.xml','McG-F-2014-03.xml','McG-G-2014-03.xml','McG-H-2014-03.xml']; 54 //['McG-A-2014-03.xml','McG-B-2014-03.xml','McG-C-2014-03.xml','McG-D-2014-03.xml','McG-E-2014-03.xml','McG-F-2014-03.xml','McG-G-2014-03.xml','McG-H-2014-03.xml'];
28 55
29 //TODO: make retrieval of file names automatic / drag files on here 56 //TODO: make retrieval of file names automatic / drag files on here
30 57
31 /**************** 58 /****************
74 // Initialise page 101 // Initialise page
75 topLevel = document.getElementById('topLevelBody'); 102 topLevel = document.getElementById('topLevelBody');
76 var setup = document.createElement('div'); 103 var setup = document.createElement('div');
77 setup.id = 'setupTagDiv'; 104 setup.id = 'setupTagDiv';
78 loadAllFiles(); 105 loadAllFiles();
79 106 printSurveyData()
80 makePlots(); 107 //makePlots();
81 // measure time at this point: 108 // measure time at this point:
82 lastTimeMeasured = new Date().getTime(); // in milliseconds 109 lastTimeMeasured = new Date().getTime(); // in milliseconds
83 }; 110 };
84 111
85 // Assert function 112 // Assert function
302 root = xml.getElementsByTagName('browserevaluationresult')[0]; 329 root = xml.getElementsByTagName('browserevaluationresult')[0];
303 330
304 // get subject ID, add to array if not already there 331 // get subject ID, add to array if not already there
305 pretest = root.getElementsByTagName('pretest')[0]; 332 pretest = root.getElementsByTagName('pretest')[0];
306 subjectID = pretest.getElementsByTagName('comment')[0]; 333 subjectID = pretest.getElementsByTagName('comment')[0];
307 if (subjectID.getAttribute('id')!='sessionId') { // warning in console when not available 334 if (subjectID){
308 console.log(xmlFiles[fileIndex]+': no SessionID available'); 335 if (subjectID.getAttribute('id')!='sessionId') { // warning in console when not available
309 } 336 console.log(xmlFiles[fileIndex]+': no SessionID available');
310 if (subjectArray.indexOf(subjectID.textContent) == -1) { // if not already in array 337 }
311 subjectArray.push(subjectID.textContent); // append to array 338 if (subjectArray.indexOf(subjectID.textContent) == -1) { // if not already in array
339 subjectArray.push(subjectID.textContent); // append to array
340 }
312 } 341 }
313 342
314 // go over all audioholders, add to array if not already there 343 // go over all audioholders, add to array if not already there
315 audioholderNodes = root.getElementsByTagName('audioholder'); 344 audioholderNodes = root.getElementsByTagName('audioholder');
316 // go over audioholderNodes and append audioholder name when not present yet 345 // go over audioholderNodes and append audioholder name when not present yet
351 document.getElementById('subjectArray_span').innerHTML = subjectArray.toString(); 380 document.getElementById('subjectArray_span').innerHTML = subjectArray.toString();
352 // show list of audioholders 381 // show list of audioholders
353 document.getElementById('audioholderArray_span').innerHTML = audioholderArray.toString(); 382 document.getElementById('audioholderArray_span').innerHTML = audioholderArray.toString();
354 // show list of audioelementes 383 // show list of audioelementes
355 document.getElementById('audioelementArray_span').innerHTML = audioelementArray.toString(); 384 document.getElementById('audioelementArray_span').innerHTML = audioelementArray.toString();
385 }
386
387 function printSurveyData() {
388 // print some fields from the survey for different people
389
390 // go over all XML files
391 for (fileIndex = 0; fileIndex < xmlFiles.length; fileIndex++) {
392 xmlFileName = xmlFileFolder+"/"+xmlFiles[fileIndex];
393 xml = readXML(xmlFileName);
394 // make a div
395 var div = document.createElement('div');
396 document.body.appendChild(div);
397 div.id = 'div_survey_'+xmlFileName;
398 div.style.width = '1100px';
399 //div.style.height = '350px';
400
401 // title for that div (subject id)
402 document.getElementById('div_survey_'+xmlFileName).innerHTML = '<h2>'+xmlFileName+'</h2>';
403
404 // which songs did they do
405 if (xml != null) { // if file exists
406 // get root of XML file
407 root = xml.getElementsByTagName('browserevaluationresult')[0];
408 // go over all audioholders
409 // document.getElementById('div_survey_'+xmlFileName).innerHTML += '<strong>Audioholders: </strong>';
410 // audioholderNodes = root.getElementsByTagName('audioholder');
411 // for (audioholderIndex = 0; audioholderIndex < audioholderNodes.length-1; audioholderIndex++) {
412 // document.getElementById('div_survey_'+xmlFileName).innerHTML += audioholderNodes[audioholderIndex].getAttribute('id')+', ';
413 // }
414 // document.getElementById('div_survey_'+xmlFileName).innerHTML += audioholderNodes[audioholderNodes.length-1].getAttribute('id');
415
416 // survey responses (each if available)
417 // get posttest node for total test
418 childNodes = root.childNodes;
419 posttestnode = null;
420 for (idx = 0; idx < childNodes.length; idx++){
421 if (childNodes[childNodes.length-idx-1].tagName == 'posttest') {
422 posttestnode = childNodes[childNodes.length-idx-1];
423 break;
424 }
425 }
426
427 // mix experience
428 if (posttestnode) {
429 posttestcomments = posttestnode.getElementsByTagName('comment');
430 for (idx=0; idx < posttestcomments.length; idx++){
431 commentsToPrint = ['generalExperience', 'interfaceExperience'];
432 idAttribute = posttestcomments[idx].getAttribute('id');
433 if (commentsToPrint.indexOf(idAttribute) >= 0) { // if exists?
434 document.getElementById('div_survey_'+xmlFileName).innerHTML += '<br><strong>'+idAttribute+': </strong>'+posttestcomments[idx].textContent;
435 }
436 }
437 }
438 }
439 }
356 } 440 }
357 441
358 function makePlots() { //TODO: split into different functions 442 function makePlots() { //TODO: split into different functions
359 // TEMPORARY 443 // TEMPORARY
360 makeTimeline(xmlFileFolder+"/"+xmlFiles[7]); 444 makeTimeline(xmlFileFolder+"/"+xmlFiles[7]);