text mode
[contractdashboard.git] / displaySON.gexf.php
blob:a/displaySON.gexf.php -> blob:b/displaySON.gexf.php
<?php <?php
include_once("./lib/common.inc.php"); include_once("./lib/common.inc.php");
   
// TODO // TODO
// color suppliers based on value? static list of high value suppliers? // color suppliers based on value? static list of high value suppliers?
// TODO sigma // TODO sigma
// link on contracts site? // link on contracts site?
// allow higher zoom levels // allow higher zoom levels
// describe methodology and yellow/red color meaning, creative commons attribution // describe methodology and yellow/red color meaning, creative commons attribution
$used_node_ids = Array(); $used_node_ids = Array();
$included_panel_ids = Array(); $included_panel_ids = Array();
$used_edge_ids = Array(); $used_edge_ids = Array();
function add_node($id, $label, $parent = "", $panel = false) function add_node($id, $label, $parent = "", $panel = false)
{ {
global $used_node_ids; global $used_node_ids;
if (!in_array($id, $used_node_ids)) { if (!in_array($id, $used_node_ids)) {
echo "<node id='" . urlencode($id) . "' label=\"" . str_replace('"','',str_replace("&", "and", $label)) . "\" " . ($parent != "" ? "pid='$parent'><viz:size value='" . rand(1, 50) . "'/>" : "><viz:size value='2'/>") echo "<node id='" . urlencode($id) . "' label=\"" . str_replace('"','',str_replace("&", "and", $label)) . "\" " . ($parent != "" ? "pid='$parent'><viz:size value='" . rand(1, 50) . "'/>" : "><viz:size value='2'/>")
. "<viz:color b='" . ($panel ? 0 : 0) . "' g='" . ($panel ? 0 : 255) . "' r='" . ($panel ? 255 : 255) . "'/>"; . "<viz:color b='" . ($panel ? 0 : 0) . "' g='" . ($panel ? 0 : 255) . "' r='" . ($panel ? 255 : 255) . "'/>";
echo "</node>" . PHP_EOL; echo "</node>" . PHP_EOL;
$used_node_ids[] = $id; $used_node_ids[] = $id;
} }
} }
   
function add_edge($from, $to, $weight = '1.0') function add_edge($from, $to, $weight = '1.0')
{ {
global $used_edge_ids, $included_panel_ids; global $used_edge_ids, $included_panel_ids;
$id = urlencode($from . '-' . $to); $id = urlencode($from . '-' . $to);
   
if (!in_array($id, $used_edge_ids)) { if (!in_array($id, $used_edge_ids)) {
echo "<edge id='" . $id . "' source='" . urlencode($from) . "' target='" . urlencode($to) . "' weight='" . $weight . "'>" . PHP_EOL; echo "<edge id='" . $id . "' source='" . urlencode($from) . "' target='" . urlencode($to) . "' weight='" . $weight . "'>" . PHP_EOL;
if ($weight != 0.1) { if ($weight != 0.1) {
echo "<viz:color b='192' g='192' r='192'/>"; echo "<viz:color b='192' g='192' r='192'/>";
} else { } else {
echo "<viz:color b='0' g='0' r='255'/>"; echo "<viz:color b='0' g='0' r='255'/>";
} }
echo "</edge>" . PHP_EOL; echo "</edge>" . PHP_EOL;
$used_edge_ids[] = $id; $used_edge_ids[] = $id;
} }
} }
   
$edges = Array(); $edges = Array();
header('Content-Type: application/gexf+xml'); header('Content-Type: application/gexf+xml');
echo '<?xml version="1.0" encoding="UTF-8"?> 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"> <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"> <meta lastmodifieddate="2009-03-20">
<creator>Gexf.net</creator> <creator>Gexf.net</creator>
<description>A hello world! file</description> <description>A hello world! file</description>
</meta> </meta>
<graph mode="static" defaultedgetype="directed"> <graph mode="static" defaultedgetype="directed">
   
<nodes>' . PHP_EOL; <nodes>' . PHP_EOL;
   
$query = ' $query = '
SELECT "supplierABN", min("supplierName") AS "supplierName", contractnotice."SONID", count(*), sum(value) AS value SELECT "supplierABN", text_mode("supplierName") AS "supplierName", contractnotice."SONID", count(*), sum(value) AS value
FROM contractnotice FROM contractnotice
WHERE "childCN" IS NULL WHERE "childCN" IS NULL
AND extract(year from "publishDate") = \'2016\' AND extract(year from "publishDate") = \'2016\'
AND "supplierABN" in (select distinct "supplierABN" from contractnotice where (left("categoryUNSPSC"::text,2) = \'43\' or left("categoryUNSPSC"::text,2) = \'80\') ) AND "supplierABN" in (select distinct "supplierABN" from contractnotice where (left("categoryUNSPSC"::text,2) = \'43\' or left("categoryUNSPSC"::text,2) = \'80\') )
AND contractnotice."SONID" != \'\' AND contractnotice."SONID" IS NOT NULL GROUP BY "supplierABN", contractnotice."SONID"'; AND contractnotice."SONID" != \'\' AND contractnotice."SONID" IS NOT NULL GROUP BY "supplierABN", contractnotice."SONID"';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
add_node($row['supplierABN'], $row['supplierName'], "",false); add_node($row['supplierABN'], $row['supplierName'], "",false);
$included_panel_ids[] = $row['SONID']; $included_panel_ids[] = $row['SONID'];
$edges[] = array("head" => $row['SONID'], "tail" => $row['supplierABN'], "weight" => $row['count']); $edges[] = array("head" => $row['SONID'], "tail" => $row['supplierABN'], "weight" => $row['count']);
} }
   
$query = 'SELECT "SONID", title FROM standingoffers'; $query = 'SELECT "SONID", title FROM standingoffers';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
// if (in_array($row['SONID'], $included_panel_ids)){ // if (in_array($row['SONID'], $included_panel_ids)){
add_node($row['SONID'], $row['title'], "", true); add_node($row['SONID'], $row['title'], "", true);
// } // }
} }
   
$query = 'select "SONID", abn,name from standingoffer_suppliers'; $query = 'select "SONID", abn,name from standingoffer_suppliers';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
add_node($row['abn'], $row['name']); add_node($row['abn'], $row['name']);
   
$edges[] = array("head"=>$row['SONID'], "tail"=>$row['abn'], "weight"=> 0.1); $edges[] = array("head"=>$row['SONID'], "tail"=>$row['abn'], "weight"=> 0.1);
} }
   
echo '</nodes> echo '</nodes>
<edges>' . PHP_EOL; <edges>' . PHP_EOL;
foreach ($edges as $edge) { foreach ($edges as $edge) {
add_edge($edge['head'], $edge['tail']); add_edge($edge['head'], $edge['tail']);
} }
echo ' </edges> echo ' </edges>
</graph> </graph>
</gexf>' . PHP_EOL; </gexf>' . PHP_EOL;
   
?> ?>