Commit f8f51b0f9bc55364e2c53e433e6229d203ccf4de

Add capabbility to split in multiple graphs for Radio Stations
  
6969 CRP.populateDropdown();
7070 $('#slider-container').html('<div class="span4" id="slidex"></div><div class="span4 offset2" id="slidey"></div>');
7171 $('.select').change(CRP.paramChange);
72 $('#split-radio-station').click(CRP.splitRadioStationChange);
7273 $('#plotGraph').click(CRP.plot);
7374
7475 $('#viz-overlay').hide();
9191
9292 /* UI controls and event handlers */
9393
94 CRP.split_station = false;
95
9496 //populate the dropdowns dynamically from data
9597 CRP.populateDropdown = function() {
9698 $('.select').html('<option></option>');
111111 }
112112 };
113113
114 CRP.splitRadioStationChange = function(event) {
115 if($('#split-radio-station:checked').length) {
116 CRP.split_station = true;
117 }
118 else {
119 CRP.split_station = false;
120 }
121 };
122
114123 CRP.vizParams = {
115124 'stations': []
116125 };
270270 };
271271
272272 CRP.plot = function() {
273 $('#viz-container').html('');
273274 var params = CRP.getParams();
274275 var data = [];
275276 _.each(CRP.vizParams.stations, function(station) {
279279 });
280280 data.push(temp_data);
281281 });
282 data = _.flatten(data);
282 if(CRP.split_station === false) {
283 data = _.flatten(data);
284 CRP.groupAndPlot(data, params, '#viz-container');
285 }
286 else {
287 $('#viz-container').append('<div id="new-containers"></div>');
288 _.each(data, function(d, i) {
289 //radio station
290 var container = 'radiostation'+i;
291 var radiostation = CRP.stationMap[CRP.vizParams.stations[i]];
292 $('#new-containers').append('<h4>'+radiostation+'</h4><div id="'+container+'"></div>');
293 CRP.groupAndPlot(d, params, '#'+container);
294 });
295 }
296 };
297
298 CRP.groupAndPlot = function(data, params, container) {
283299 if(CRP.research_type === 'field') {
284300 var result = CRP.group(data, params.x_param, params.y_param);
285301 console.log(result);
286302 result = CRP.normalizeData(result);
287 CRP.drawViz(result, params.x_param, params.y_param);
303 CRP.drawViz(result, params.x_param, params.y_param, container);
288304 }
289305 else {
290306 var result = CRP.groupGrinsdata(data, params.x_param, params.y_param);
291307 console.log(result);
292 CRP.drawViz(result);
308 CRP.drawViz(result, parmas.x_param, params.y_param, container);
293309 }
294310 };
295311
315315 //like instead of unknown key/value pairs it could return an array of objects
316316 //like: {'x': <x-param-key>, 'y': <y-param-key>, value: <value>}
317317
318 CRP.drawViz = function(data, x_param, y_param) {
318 CRP.drawViz = function(data, x_param, y_param, container) {
319319 //truncate all NA values - they don't really make any contribution in
320320 //interpreting/analysing the data
321321 for(var i in data) {
334334 if(_.indexOf(CRP.invalidCols, x_param) > -1 ||
335335 _.indexOf(CRP.invalidCols, y_param) > -1) {
336336
337 CRP.drawScatterplot(data);
337 CRP.drawScatterplot(data, container);
338338 }
339339 else {
340 CRP.drawBarChart(data);
340 CRP.drawBarChart(data, container);
341341 }
342342 };
343343
344344
345 CRP.drawScatterplot = function(data) {
345 CRP.drawScatterplot = function(data, container) {
346346 //check kind of data - x and y both or only x params
347347 var xkeys = d3.keys(data);
348348 var first_key = xkeys[0];
350350 var h = 330;
351351 var w = $('.container').css('width').split('px')[0] - 100;
352352 var margin = {left: 30, right: 30, top: 30, bottom: 100};
353 $('#viz-container').html('');
353 $(container).html('');
354354
355355 //check kind of data - x and y both or only x params
356356 if(typeof data[first_key] === 'object') { // its a grouped data with x and y
403403 .orient('left')
404404 .tickFormat(d3.format('.2s'));
405405
406 var chart = d3.select('#viz-container').append('svg')
406 var chart = d3.select(container).append('svg')
407407 .attr('class', 'scatterplot')
408408 .attr('width', margin.left + w + margin.right)
409409 .attr('height', margin.top + h + margin.bottom)
524524 d3.select('#tooltip').style('display', 'none');
525525 };
526526
527 CRP.drawBarChart = function(data) {
527 CRP.drawBarChart = function(data, container) {
528528 //check kind of data - x and y both or only x params
529529 var xkeys = d3.keys(data);
530530 var first_key = xkeys[0];
532532 var h = 330;
533533 var w = $('.container').css('width').split('px')[0] - 100;
534534 var margin = {left: 30, right: 30, top: 30, bottom: 100};
535 $('#viz-container').html('');
535 $(container).html('');
536536
537537 //check kind of data - x and y both or only x params
538538 if(typeof data[first_key] === 'object') { // its a grouped data with x and y
582582 .orient('left')
583583 .tickFormat(d3.format('.2s'));
584584
585 var chart = d3.select('#viz-container').append('svg')
585 var chart = d3.select(container).append('svg')
586586 .attr('class', 'barchart')
587587 .attr('width', margin.left + w + margin.right)
588588 .attr('height', margin.top + h + margin.bottom)
698698 .orient('left')
699699 .tickFormat(d3.format('.2s'));
700700
701 var chart = d3.select('#viz-container').append('svg')
701 var chart = d3.select(container).append('svg')
702702 .attr('class', 'barchart')
703703 .attr('width', margin.left + w + margin.right)
704704 .attr('height', margin.top + h + margin.bottom)