Mercurial > hg > webaudioevaluationtool
comparison ape.js @ 674:436db2f29f73
Updated metric functions. Completed Metric Exporting.
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Mon, 13 Apr 2015 09:58:16 +0100 |
parents | d4e55184f776 |
children | 7e73d1cdcff8 |
comparison
equal
deleted
inserted
replaced
673:d4e55184f776 | 674:436db2f29f73 |
---|---|
40 // xmlDoc MUST already be parsed by jQuery! | 40 // xmlDoc MUST already be parsed by jQuery! |
41 var xmlSetup = xmlDoc.find('setup'); | 41 var xmlSetup = xmlDoc.find('setup'); |
42 // Should put in an error function here incase of malprocessed or malformed XML | 42 // Should put in an error function here incase of malprocessed or malformed XML |
43 | 43 |
44 // Extract the different test XML DOM trees | 44 // Extract the different test XML DOM trees |
45 var audioHolders = xmlDoc.find('audioHolder'); | 45 var audioHolders = xmlDoc.find('audioHolder'); |
46 audioHolders.each(function(index,element) { | 46 audioHolders.each(function(index,element) { |
47 var repeatN = element.attributes['repeatCount'].value; | 47 var repeatN = element.attributes['repeatCount'].value; |
48 for (var r=0; r<=repeatN; r++) { | 48 for (var r=0; r<=repeatN; r++) { |
49 testXMLSetups[testXMLSetups.length] = element; | 49 testXMLSetups[testXMLSetups.length] = element; |
50 } | 50 } |
51 }); | 51 }); |
52 | 52 |
53 // New check if we need to randomise the test order | 53 // New check if we need to randomise the test order |
54 var randomise = xmlSetup[0].attributes['randomiseOrder']; | 54 var randomise = xmlSetup[0].attributes['randomiseOrder']; |
55 if (randomise != undefined) { | 55 if (randomise != undefined) { |
56 randomise = Boolean(randomise.value); | 56 randomise = Boolean(randomise.value); |
57 } else { | 57 } else { |
58 randomise = false; | 58 randomise = false; |
59 } | 59 } |
60 if (randomise) | 60 if (randomise) |
61 { | 61 { |
62 // TODO: Implement Randomisation!! | 62 // TODO: Implement Randomisation!! |
63 } | 63 } |
64 | 64 |
65 // Obtain the metrics enabled | |
66 var metricNode = xmlSetup.find('Metric'); | |
67 var metricNode = metricNode.find('metricEnable'); | |
68 metricNode.each(function(index,node){ | |
69 var enabled = node.textContent; | |
70 switch(enabled) | |
71 { | |
72 case 'testTimer': | |
73 sessionMetrics.prototype.enableTestTimer = true; | |
74 break; | |
75 case 'elementTimer': | |
76 sessionMetrics.prototype.enableElementTimer = true; | |
77 break; | |
78 case 'elementTracker': | |
79 sessionMetrics.prototype.enableElementTracker = true; | |
80 break; | |
81 case 'elementInitalPosition': | |
82 sessionMetrics.prototype.enableElementInitialPosition = true; | |
83 break; | |
84 case 'elementFlagListenedTo': | |
85 sessionMetrics.prototype.enableFlagListenedTo = true; | |
86 break; | |
87 case 'elementFlagMoved': | |
88 sessionMetrics.prototype.enableFlagMoved = true; | |
89 break; | |
90 case 'elementFlagComments': | |
91 sessionMetrics.prototype.enableFlagComments = true; | |
92 break; | |
93 } | |
94 }); | |
65 | 95 |
66 // Create the top div for the Title element | 96 // Create the top div for the Title element |
67 var titleAttr = xmlSetup[0].attributes['title']; | 97 var titleAttr = xmlSetup[0].attributes['title']; |
68 var title = document.createElement('div'); | 98 var title = document.createElement('div'); |
69 title.className = "title"; | 99 title.className = "title"; |
576 | 606 |
577 function pageXMLSave(testId) | 607 function pageXMLSave(testId) |
578 { | 608 { |
579 // Saves a specific test page | 609 // Saves a specific test page |
580 var xmlDoc = currentTestHolder; | 610 var xmlDoc = currentTestHolder; |
611 // Check if any session wide metrics are enabled | |
612 var metric = document.createElement('metric'); | |
613 if (audioEngineContext.metric.enableTestTimer) | |
614 { | |
615 var testTime = document.createElement('metricResult'); | |
616 testTime.id = 'testTime'; | |
617 testTime.textContent = audioEngineContext.timer.testDuration; | |
618 metric.appendChild(testTime); | |
619 } | |
620 xmlDoc.appendChild(metric); | |
581 var trackSliderObjects = document.getElementsByClassName('track-slider'); | 621 var trackSliderObjects = document.getElementsByClassName('track-slider'); |
582 var commentObjects = document.getElementsByClassName('comment-div'); | 622 var commentObjects = document.getElementsByClassName('comment-div'); |
583 var rateMin = 50; | 623 var rateMin = 50; |
584 var rateMax = window.innerWidth-50; | 624 var rateMax = window.innerWidth-50; |
585 for (var i=0; i<trackSliderObjects.length; i++) | 625 for (var i=0; i<trackSliderObjects.length; i++) |
598 response.textContent = commentObjects[i].children[2].value; | 638 response.textContent = commentObjects[i].children[2].value; |
599 comment.appendChild(question); | 639 comment.appendChild(question); |
600 comment.appendChild(response); | 640 comment.appendChild(response); |
601 audioElement.appendChild(value); | 641 audioElement.appendChild(value); |
602 audioElement.appendChild(comment); | 642 audioElement.appendChild(comment); |
643 // Check for any per element metrics | |
644 var metric = document.createElement('metric'); | |
645 var elementMetric = audioEngineContext.audioObjects[i].metric; | |
646 if (audioEngineContext.metric.enableElementTimer) { | |
647 var elementTimer = document.createElement('metricResult'); | |
648 elementTimer.id = 'elementTimer'; | |
649 elementTimer.textContent = elementMetric.listenedTimer; | |
650 metric.appendChild(elementTimer); | |
651 } | |
652 if (audioEngineContext.metric.enableElementTracker) { | |
653 var elementTrackerFull = document.createElement('metricResult'); | |
654 elementTrackerFull.id = 'elementTrackerFull'; | |
655 var data = elementMetric.movementTracker; | |
656 for (var k=0; k<data.length; k++) | |
657 { | |
658 var timePos = document.createElement('timePos'); | |
659 timePos.id = k; | |
660 var time = document.createElement('time'); | |
661 time.textContent = data[k][0]; | |
662 var position = document.createElement('position'); | |
663 position.textContent = data[k][1]; | |
664 timePos.appendChild(time); | |
665 timePos.appendChild(position); | |
666 elementTrackerFull.appendChild(timePos); | |
667 } | |
668 metric.appendChild(elementTrackerFull); | |
669 } | |
670 if (audioEngineContext.metric.enableElementInitialPosition) { | |
671 var elementInitial = document.createElement('metricResult'); | |
672 elementInitial.id = 'elementInitialPosition'; | |
673 elementInitial.textContent = elementMetric.initialPosition; | |
674 metric.appendChild(elementInitial); | |
675 } | |
676 if (audioEngineContext.metric.enableFlagListenedTo) { | |
677 var flagListenedTo = document.createElement('metricResult'); | |
678 flagListenedTo.id = 'elementFlagListenedTo'; | |
679 flagListenedTo.textContent = elementMetric.wasListenedTo; | |
680 metric.appendChild(flagListenedTo); | |
681 } | |
682 if (audioEngineContext.metric.enableFlagMoved) { | |
683 var flagMoved = document.createElement('metricResult'); | |
684 flagMoved.id = 'elementFlagMoved'; | |
685 flagMoved.textContent = elementMetric.wasMoved; | |
686 metric.appendChild(flagMoved); | |
687 } | |
688 if (audioEngineContext.metric.enableFlagComments) { | |
689 var flagComments = document.createElement('metricResult'); | |
690 flagComments.id = 'elementFlagComments'; | |
691 if (response.textContent.length == 0) {flag.textContent = 'false';} | |
692 else {flag.textContet = 'true';} | |
693 metric.appendChild(flagComments); | |
694 } | |
695 audioElement.appendChild(metric); | |
603 xmlDoc.appendChild(audioElement); | 696 xmlDoc.appendChild(audioElement); |
604 } | 697 } |
605 testResultsHolders[testId] = xmlDoc; | 698 testResultsHolders[testId] = xmlDoc; |
606 } | 699 } |
607 | 700 |