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);
>>               });
>>           });
>>         });
>>     });
>

Reply via email to