This may not be the crucial hint, but I noticed that your flare is a list (array). If you checkout the structure at: https://github.com/mbostock/d3/wiki/Cluster-Layout you see that its a dict (or object).
Try removing the [] around your flare definition. Secondly: Where I have used XML(json... in the controller it has been to produce a standaoone .json output from web2py, I then create an independent view that then uses the d3.json function to read the json output. That is the approach that mostly matches the majority of d3 examples. This works if you want to separate your data sources (thinking independent data api) from your presentation views. The other approach is to use the variables, which you've done. There may be more than one way to do this but this has worked for me: 1. Change your flare definition to be a dict. remove the [] 2. Change your controller output to be return locals(). 3. In your view , in the <script> add: {{from gluon.serializers import json}} var flare = {{=XML(json(flare))}} I think web2py is a good data provider for d3 apps On Thursday, June 12, 2014 2:49:32 AM UTC+10, Richard wrote: > > Andrew, > > When I respond with flare=flare I get the & issue, solved by XML() > > Uncaught SyntaxError: Unexpected token & > > My script starts with: > > <script> > > var width = 960, > height = 2200; > > var cluster = d3.layout.cluster() > .size([height, width - 160]); > > var diagonal = d3.svg.diagonal() > .projection(function(d) { return [d.y, d.x]; }); > > var svg = d3.select("body").append("svg") > .attr("width", width) > .attr("height", height) > .append("g") > .attr("transform", "translate(40,0)"); > > var flare = {{=flare}} ; > > var nodes = cluster.nodes( flare ), > links = cluster.links(nodes); > > var link = svg.selectAll(".link") > .data(links) > .enter().append("path") > .attr("class", "link") > .attr("d", diagonal); > > Hope you can give me a crucial hint. > > > On Wednesday, June 11, 2014 5:49:13 PM UTC+2, Andrew W wrote: >> >> What else is in your view? Is the code inside a <script>? >> What if you just returned dict( flare=flare) in your controller? >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.