<?php
include_once '../d3.classes.inc.php';
$radius = d3::variable(960 / 2, "radius")->linebreak();;
stack()->add($radius);
$cluster = d3()->layout->cluster()
->linebreak()->tab(2)
->size(array(360, d3::unescape($radius->getVar(), " - ", 120)))
->createVar("cluster")
->linebreak();
stack()->add($cluster);
$diagonal = d3()->svg->diagonal->radial()->linebreak()->tab(2)
->projection(function($d){return array( $d->y, $d->x / 180 * Math()->PI );})
->createVar("diagonal")
->linebreak();
stack()->add($diagonal);
$vis = d3()->select("#chart")
->append("svg")
->linebreak()->tab(2)
->attr("width", d3::concat($radius->getVar(),'*',2))
->linebreak()->tab(2)
->attr("height", d3::concat($radius->getVar(),'*',2))
->linebreak()->tab()
->append("g")
->linebreak()->tab(2)
->attr("transform", d3::unescape('"translate("+radius+","+radius+")"'))
->createVar("vis")
->linebreak();
stack()->add($vis);
stack()->add(PHP_EOL);
$f = f3("json");
#$f->add(d3::unescape("console.log(json);"));
$nodes = $cluster->get()->nodes($f->getVar("json"))->createVar("nodes");
$link = $vis->get()->selectAll("path.link")
->linebreak()->tab()
->data($cluster->get()->links($nodes->getVar()))
->linebreak()->tab(2)
->enter()->append("path")
->linebreak()->tab(2)
->attr("class", "link")
->attr("d", $diagonal->getVar())
->createVar("link");
$node = $vis->get()->selectAll("g.node")
->linebreak()->tab()
->data($nodes->getVar())
->linebreak()->tab()
->enter()->append("g")
->linebreak()->tab(2)
->attr("class", "node")
->linebreak()->tab(2)
->attr("transform", function($d){return "rotate(".($d->x - 90) . ") translate (". $d->y .")";})
->createVar("node")->linebreak();
$node1 = $node->get()->append("circle")->attr("r", 4.5);
$node2 = $node->get()->append("text")
->linebreak()->tab(2)
->attr("dy", ".31em")
->linebreak()->tab(2)
->attr("text-anchor", function($d){return $d->x<180?"start":"end";})
->linebreak()->tab(2)
->attr("transform", function($d){return $d->x<180?"translate(8)":"rotate(180)translate(-8)";})
->linebreak()->tab(2)
->text(function($d){return $d->name;})
;
$f->add($nodes);
$f->add($link);
$f->add($node);
$f->add($node1->colon());
$f->add($node2->colon());
$load = d3()->json("data/flare.json", $f);
$timeout = d3::setTimeout($load, 800);
stack()->add($timeout);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Flare Dendrogram</title>
<?php echo d3::script(2)?>
<link type="text/css" rel="stylesheet" href="css/cluster.css"/>
</head>
<body>
<div id="chart"></div>
<script type="text/javascript">
<?php echo stack()->getInstance();?>
</script>
</body>
</html>
|