comparison ape.js @ 675:7e73d1cdcff8

Refined metric collection. Rating now correct. Slider scale now fully bounded
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Mon, 13 Apr 2015 10:40:37 +0100
parents 436db2f29f73
children e604ee22185b
comparison
equal deleted inserted replaced
674:436db2f29f73 675:7e73d1cdcff8
519 } 519 }
520 520
521 function dragEnd(ev) { 521 function dragEnd(ev) {
522 // Function call when a div has been dropped 522 // Function call when a div has been dropped
523 var slider = document.getElementById('slider'); 523 var slider = document.getElementById('slider');
524 if (ev.x >= 50 && ev.x < window.innerWidth-50) { 524 var w = slider.style.width;
525 this.style.left = (ev.x)+'px'; 525 w = Number(w.substr(0,w.length-2));
526 var x = ev.x;
527 if (x >= 42 && x < w+42) {
528 this.style.left = (x)+'px';
526 } else { 529 } else {
527 if (ev.x<50) { 530 if (x<42) {
528 this.style.left = '50px'; 531 this.style.left = '42px';
529 } else { 532 } else {
530 this.style.left = window.innerWidth-50 + 'px'; 533 this.style.left = (w+42) + 'px';
531 } 534 }
532 } 535 }
533 audioEngineContext.metric.sliderMoved(); 536 audioEngineContext.metric.sliderMoved();
534 } 537 }
535 538
602 audioEngineContext.timer.stopTest(); 605 audioEngineContext.timer.stopTest();
603 advanceState(); 606 advanceState();
604 } 607 }
605 } 608 }
606 609
610 function convSliderPosToRate(id)
611 {
612 var w = document.getElementById('slider').style.width;
613 var maxPix = w.substr(0,w.length-2);
614 var slider = document.getElementsByClassName('track-slider')[id];
615 var pix = slider.style.left;
616 pix = pix.substr(0,pix.length-2);
617 var rate = (pix-42)/maxPix;
618 return rate;
619 }
620
607 function pageXMLSave(testId) 621 function pageXMLSave(testId)
608 { 622 {
609 // Saves a specific test page 623 // Saves a specific test page
610 var xmlDoc = currentTestHolder; 624 var xmlDoc = currentTestHolder;
611 // Check if any session wide metrics are enabled 625 // Check if any session wide metrics are enabled
618 metric.appendChild(testTime); 632 metric.appendChild(testTime);
619 } 633 }
620 xmlDoc.appendChild(metric); 634 xmlDoc.appendChild(metric);
621 var trackSliderObjects = document.getElementsByClassName('track-slider'); 635 var trackSliderObjects = document.getElementsByClassName('track-slider');
622 var commentObjects = document.getElementsByClassName('comment-div'); 636 var commentObjects = document.getElementsByClassName('comment-div');
623 var rateMin = 50;
624 var rateMax = window.innerWidth-50;
625 for (var i=0; i<trackSliderObjects.length; i++) 637 for (var i=0; i<trackSliderObjects.length; i++)
626 { 638 {
627 var audioElement = document.createElement('audioElement'); 639 var audioElement = document.createElement('audioElement');
628 audioElement.id = currentTrackOrder[i].attributes['id'].value; 640 audioElement.id = currentTrackOrder[i].attributes['id'].value;
629 audioElement.url = currentTrackOrder[i].attributes['url'].value; 641 audioElement.url = currentTrackOrder[i].attributes['url'].value;
630 var value = document.createElement("value"); 642 var value = document.createElement('value');
631 var rate = Number(trackSliderObjects[i].style.left.substr(0,trackSliderObjects[i].style.left.length-2)); 643 value.innerHTML = convSliderPosToRate(i);
632 rate = (rate-rateMin)/rateMax;
633 value.innerHTML = Math.floor(rate*100);
634 var comment = document.createElement("comment"); 644 var comment = document.createElement("comment");
635 var question = document.createElement("question"); 645 var question = document.createElement("question");
636 var response = document.createElement("response"); 646 var response = document.createElement("response");
637 question.textContent = commentObjects[i].children[0].textContent; 647 question.textContent = commentObjects[i].children[0].textContent;
638 response.textContent = commentObjects[i].children[2].value; 648 response.textContent = commentObjects[i].children[2].value;