I've got a javascript 101 question.
I'm using a nice graphing library (flot), and plotting multiple graphs on a single page. Each graph is a div, with a attribute set that tells the graph where to grab it's data from. For example, the HTML might be:
<div class="line-chart" data-src='/revenue.js'></div>
<div class="scatter-chart" data-src='/users/byweek.js'></div>
<div class="scatter-chart2" data-src='/apps/byweek.js'></div>
Where I've got two types of charts here, a scatter and line. Ideally I'd be able to iterate over the classes, and simply grab the appropriate data. However, I'm confused by the context of the callback, and not knowing which div I'm actually in, so instead I'm doing this hack in my JS:
$(document).ready(function() {
$('.line-chart').each(function() {
$.getJSON($(this).attr('data-src'),
function(data) {
$.plot($('.line-chart'), [data], { xaxis: { mode: "time" }});
});
});
$('.scatter-chart').each(function() {
$.getJSON($(this).attr('data-src'),
function(data) {
$.plot($('.scatter-chart'), [data], { xaxis: { mode: "time" },
lines: { show: false },
points: { show: true }
});
});
});
$('.scatter-chart2').each(function() {
$.getJSON($(this).attr('data-src'),
function(data) {
$.plot($('.scatter-chart2'), [data], { xaxis: { mode: "time" },
lines: { show: false },
points: { show: true }
});
});
});
});
I'm sure I can clean this up, I'm just not clear on how to go about doing it. The main problem is that the $.plot needs to apply to the specific chart that the getJSON was called a against, not the first one it finds.