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 <[email protected]> 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 <[email protected]> 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);
>> });
>> });
>> });
>> });
>