<?php
include_once('include/common.inc.php');
//include_header();
$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);
    foreach ($rows as $row) {
        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", "byDeptStateName", null, true)->rows;
//print_r($rows);
    foreach ($rows as $row) {
        add_edge("fedg", $row->value, 'yellow');
    }
} catch (SetteeRestClientException $e) {
    setteErrorHandler($e);
}

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>

    <?php
}
if ($format == "dot") {
    echo "}";
}
if ($format == "gexf") {
echo ' </edges>
    </graph>
</gexf>'. PHP_EOL;
}
//include_footer();
?>


