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