--- a/graph.php +++ b/graph.php @@ -1,46 +1,143 @@ <?php include_once('include/common.inc.php'); //include_header(); -?> -<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> -<script src="lib/springy/springy.js"></script> -<script src="lib/springy/springyui.js"></script> -<script> - var graph = new Graph(); - var nodes = []; -<?php +$format = "html"; +if (isset($_REQUEST['format'])) { + $format = $_REQUEST['format']; +} + +function add_node($id, $label, $parent="") { + global $format; + if ($format == "html") { + // echo "nodes[\"$id\"] = graph.newNode({label: \"$label\"});" . PHP_EOL; + } + if ($format == "dot" && $label != "") { + echo "\"$id\" [label=\"$label\", shape=plaintext];". PHP_EOL; + } + if ($format == "gexf") { + echo "<node id='$id' label=\"".htmlentities($label)."\" ".($parent != ""? "pid='$parent'><viz:size value='1'/>":"><viz:size value='2'/>") + ."<viz:color b='".rand(0,255)."' g='".rand(0,255)."' r='".rand(0,255)."'/>" + ."</node>". PHP_EOL; + } +} + +function add_edge($from, $to, $color) { + global $format; + if ($format == "html") { + // echo "graph.newEdge(nodes[\"$from\"], nodes['$to'], {color: '$color'});" . PHP_EOL; + } + if ($format == "dot") { + echo "\"$from\" -> \"$to\" ".($color != ""? "[color=$color]":"").";". PHP_EOL; + } + if ($format == "gexf") { + echo "<edge id='$from$to' source='$from' target='$to' />". PHP_EOL; + } +} +if ($format == "gexf") { + //header('Content-Type: text/xml'); + header('Content-Type: application/gexf+xml'); +echo '<?xml version="1.0" encoding="UTF-8"?> +<gexf xmlns="http://www.gexf.net/1.2draft" xmlns:viz="http://www.gexf.net/1.2draft/viz" version="1.2"> + <meta lastmodifieddate="2009-03-20"> + <creator>Gexf.net</creator> + <description>A hello world! file</description> + </meta> + <graph mode="static" defaultedgetype="directed"> + <nodes>'. PHP_EOL; +} + +if ($format == "dot") { + echo 'digraph g {'. PHP_EOL; +} $db = $server->get_db('disclosr-agencies'); - + add_node("fedg","Federal Government - Commonwealth of Australia"); try { $rows = $db->get_view("app", "byCanonicalName", null, true)->rows; - //print_r($rows); +//print_r($rows); foreach ($rows as $row) { - echo "nodes[\"{$row->value}\"] = graph.newNode({label: \"{$row->key}\"});".PHP_EOL; + add_node($row->id, $row->value->name); } } catch (SetteeRestClientException $e) { setteErrorHandler($e); } +if ($format == "gexf") { +echo '</nodes> + <edges>'. PHP_EOL; +} try { - $rows = $db->get_view("app", "parentOrgs", null, true)->rows; - // print_r($rows); + $rows = $db->get_view("app", "byDeptStateName", null, true)->rows; +//print_r($rows); foreach ($rows as $row) { - echo "graph.newEdge(nodes[\"{$row->key}\"], nodes['{$row->value}'], {color: '#00A0B0'});".PHP_EOL; + add_edge("fedg", $row->value, 'yellow'); } } catch (SetteeRestClientException $e) { setteErrorHandler($e); } -?> - window.onload = function() { - $(document).ready(function() { - var springy = $('#springydemo').springy({ - graph: graph - }); - }); - }; + +try { + $rows = $db->get_view("app", "parentOrgs", null, true)->rows; +// print_r($rows); + foreach ($rows as $row) { + add_edge($row->key, $row->value, 'blue'); + } +} catch (SetteeRestClientException $e) { + setteErrorHandler($e); +} +if ($format == "html") { + ?> + <div id="sigma-example" width="960" style="min-height:800px;background-color: #333;"></div> + <script src="js/sigma.min.js"></script> + <script src="js/sigma/plugins/sigma.parseGexf.js"></script> + <script src="js/sigma/plugins/sigma.forceatlas2.js"></script> + <script type="text/javascript">function init() { + // Instanciate sigma.js and customize rendering : + var sigInst = sigma.init(document.getElementById('sigma-example')).drawingProperties({ + defaultLabelColor: '#fff', + defaultLabelSize: 14, + defaultLabelBGColor: '#fff', + defaultLabelHoverColor: '#000', + labelThreshold: 6, + defaultEdgeType: 'curve' + }).graphProperties({ + minNodeSize: 0.5, + maxNodeSize: 5, + minEdgeSize: 5, + maxEdgeSize: 5 + }).mouseProperties({ + maxRatio: 32 + }); + + // Parse a GEXF encoded file to fill the graph + // (requires "sigma.parseGexf.js" to be included) + sigInst.parseGexf('graph.php?format=gexf'); + sigInst.bind('downnodes',function(event){ + var nodes = event.content; + }); + // Start the ForceAtlas2 algorithm + // (requires "sigma.forceatlas2.js" to be included) + sigInst.startForceAtlas2(); + + // Draw the graph : + sigInst.draw(); +} + +if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", init, false); +} else { + window.onload = init; +} </script> -<canvas id="springydemo" width="960" height="480" /> -<?php + <?php +} +if ($format == "dot") { + echo "}"; +} +if ($format == "gexf") { +echo ' </edges> + </graph> +</gexf>'. PHP_EOL; +} //include_footer(); ?>