For multiple elements you might want to try and put it into a jQuery plugin, allowing you to re-use the code for each sparkline.
$(".spark").makeSparkline({url:/path/to/call/sparkdata, args:etc}); -- Thadeus On Sat, May 15, 2010 at 1:34 PM, MikeEllis <michael.f.el...@gmail.com> wrote: > > After spending some time with Firebug to find and fix a couple of > typos, I've got it working now. There seems to be no way around > explicitly referring to the SPAN element (see below), but I can live > with that. > > Now I need to tackle the next level, which is to expand the server- > side JSON function to return data for multiple sparklines on a page > and arrange to call sparkline() with the right data for each of the > corresponding elements. > > Thanks again for the help! > > Here's what's working correctly: > > In the view ... > > <script type="text/javascript"> > /* <![CDATA[ */ > $(function() { > $('.dynamicsparkline').everyTime(1000,function(i) { > var j = 2+i%5; > $.getJSON('{{=URL(r=request,f='call/json/ > sparkdata')}}/'+j, function(data) { > var sparkdata = [10,9,8,7,6,5,4]; > for(var k=0; k<sparkdata.length; k++) { sparkdata[k] = > data.a[k];} > console.log("sparkdata = " + sparkdata); > $('.dynamicsparkline').sparkline(sparkdata); // WORKS > // $(this).sparkline(sparkdata) // DOES NOT WORK! > }); > }); > }); > /* ]]> */ > </script> > > <h1>This is the sparkline.html template</h1> > <p> > Sparkline with dynamic data: <span class="dynamicsparkline">Loading..</ > span> > </ > p> > > and in the controller ... > > @service.json > def sparkdata(j): > sys.stderr.write("\nsparkdata() called with j=%d\n"%int(j)) > j = int(j) > return dict(a=[n%j for n in [10,9,8,7,6,5,4]]) > > Cheers, > Mike > > > On May 14, 9:51 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: >> aha try replace >> >> $(function() { >> $('.dynamicsparkline').everyTime(1000,function(i) { >> $.getJSON('{{=URL(r=request,f='call/json/ >> datapoints')}}/'+i, function(data) { >> var b = [0,0,0,0,0,0,0] >> var j = 2+i%5; >> for(var k=0; k<b.length; k++) { b[k] = data.a[k] >> %j;} >> $(this).sparkline(b); >> }); >> }); >> }); >> >> with >> >> $(function() { >> $('.dynamicsparkline').each(function(index){ >> var obj=$(this); >> obj.everyTime(1000,function(i) { >> $.getJSON('{{=URL(r=request,f='call/json/ >> datapoints')}}/'+i, function(data) { >> var b = [0,0,0,0,0,0,0] >> var j = 2+i%5; >> for(var k=0; k<b.length; k++) { b[k] = data.a[k] %j;} >> obj.sparkline(b); >> }); >> }); >> }); >> }); >