annotate analysis/analysis.js @ 1867:d9e9dd3cccf2

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