Mercurial > hg > webaudioevaluationtool
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]); |