annotate analysis/analysis.js @ 569:04a64127ebd0 Dev_main

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