annotate analysis/analysis.js @ 1226:d9ffea1d1e55

Analysis: Mean bar plot
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Tue, 23 Feb 2016 19:35:18 +0000
parents 07c997c0e22a
children 1f23b2b03610
rev   line source
n@1223 1 /*
n@1223 2 * Analysis script for WAET
n@1223 3 */
n@1223 4
n@1223 5 var chartContext;
n@1223 6 window.onload = function() {
n@1223 7 // Load the Visualization API and the corechart package.
n@1223 8 google.charts.load('current', {'packages':['corechart']});
n@1223 9 chartContext = new Chart();
n@1223 10 }
n@1223 11
n@1223 12 function Chart() {
n@1226 13 this.valueData = null;
n@1226 14 this.commentData = null;
n@1226 15 this.loadStatus = 0;
n@1223 16
n@1226 17 var XMLHttp = new XMLHttpRequest();
n@1226 18 XMLHttp.parent = this;
n@1226 19 XMLHttp.open("GET","../scripts/score_parser.php?format=JSON",true);
n@1226 20 XMLHttp.onload = function() {
n@1226 21 // Now we have the JSON data, extract
n@1226 22 this.parent.valueData = JSON.parse(this.responseText);
n@1226 23 this.parent.loadStatus++;
n@1223 24 }
n@1226 25 XMLHttp.send();
n@1226 26 var XMLHttp2 = new XMLHttpRequest();
n@1226 27 XMLHttp2.parent = this;
n@1226 28 XMLHttp2.open("GET","../scripts/comment_parser.php?format=JSON",true);
n@1226 29 XMLHttp2.onload = function() {
n@1226 30 // Now we have the JSON data, extract
n@1226 31 this.parent.commentData = JSON.parse(this.responseText);
n@1226 32 this.parent.loadStatus++;
n@1226 33 }
n@1226 34 XMLHttp2.send();
n@1223 35
n@1223 36 this.drawMean = function() {
n@1223 37 // First we must get the value data
n@1226 38 if (this.valueData == null) {
n@1226 39 console.log("Error - Data not loaded");
n@1226 40 return;
n@1226 41 }
n@1226 42 // We create one plot per page
n@1226 43 for (var page of this.valueData.pages) {
n@1226 44 // First, create the chart resulting point
n@1226 45 var inject = document.createElement("div");
n@1226 46 document.getElementById("test-pages").appendChild(inject);
n@1226 47
n@1226 48 // Create the data table
n@1226 49 var data = new google.visualization.DataTable();
n@1226 50 data.addColumn('string','id');
n@1226 51 // Get axis labels
n@1226 52 for (var axis of page.elements[0].axis) {
n@1226 53 data.addColumn('number',axis.name);
n@1226 54 }
n@1226 55 var rows = []; // Rows is an array of tuples [col1, col2, col3 ... colN];
n@1226 56 for (var element of page.elements) {
n@1226 57 var entry = [element.id];
n@1226 58 for (var i=0; i<page.elements[0].axis.length; i++) {
n@1226 59 var mean =0;
n@1226 60 if (i < element.axis.length) {
n@1226 61 var axis = element.axis[i];
n@1226 62 for (var value of axis.values) {
n@1226 63 mean += value;
n@1226 64 }
n@1226 65 mean /= axis.values.length;
n@1226 66 }
n@1226 67 entry.push(mean);
n@1226 68 }
n@1226 69 rows.push(entry);
n@1226 70 }
n@1226 71 data.addRows(rows);
n@1226 72 var options = {'title':'Mean of page: '+page.id,
n@1226 73 'width':800,
n@1226 74 'height':700};
n@1226 75 // Draw the chart
n@1226 76 var chart = new google.visualization.ColumnChart(inject);
n@1226 77 chart.draw(data,options);
n@1226 78 }
n@1223 79 }
n@1223 80 }