--- a/lib/graphs.inc.php +++ b/lib/graphs.inc.php @@ -1,27 +1,117 @@ <?php +$includedFlot = false; +function includeFlot() { + if (!$includedFlot) { + echo ' <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="lib/flot/excanvas.min.js"></script><![endif]--> + + <script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.js"></script> + <script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.pie.js"></script> + +'; +$includedFlot = true; + } +} + +function CNDistributionGraph() { + global $conn; + includeFlot(); + ?> + <center><div id="cndist" style="width:900px;height:550px"></div></center> +<script type="text/javascript"> + $(function () { + + var d1 = []; +<?php +$query = 'select cnid, count(*) from (select ("CNID" - MOD("CNID",100)) as cnid from contractnotice where "CNID" < 999999) as a group by cnid order by cnid'; +$query = $conn->prepare($query); +$query->execute(); +if (!$query) { + databaseError($conn->errorInfo()); + return Array(); +} + +foreach ($query->fetchAll() as $delta) { + + echo "d1.push([ ".intval($delta['cnid']).", ".intval($delta['count'])."]); \n"; +}; +?> + + var placeholder = $("#cndist"); + + var plot = $.plot(placeholder, [ + { + data: d1, + bars: { show: true } + }, + ], + { + + grid: { hoverable: true, clickable: true, labelMargin: 17 }, + }); + + }); + +</script> +<?php +} function agenciesGraph() { - $topX = 15; -$query = "SELECT SUM(value) as val, agencyName FROM `contractnotice` WHERE (YEAR(contractStart) >= $startYear) AND childCN = 0 -GROUP BY agencyName ORDER BY val DESC limit $topX"; -$result = mysql_query($query); -$agencies = Array(); -$values = Array(); -while ($row = mysql_fetch_array($result, MYSQL_BOTH)) { - $agencies[] = $row['agencyName']; - $values[] = doubleval($row["val"]); -} -mysql_free_result($result); - -$query = "SELECT sum(a.val) as value, count(1) as count from (SELECT SUM(value) as val, agencyName FROM `contractnotice` WHERE (YEAR(contractStart) >= $startYear) AND childCN = 0 -GROUP BY agencyName ORDER BY val DESC LIMIT 18446744073709551610 OFFSET $topX) as a"; -$result = mysql_query($query); -while ($row = mysql_fetch_array($result, MYSQL_BOTH)) { - $agencies[] = $row['count'] . " other agencies"; - $values[] = doubleval($row[0]); -} -mysql_free_result($result); - + + global $conn; + includeFlot(); +$query = 'SELECT SUM("value") as val, MAX(contractnotice."agencyName") as agencyname FROM contractnotice join agency on contractnotice."agencyName"=agency."agencyName" WHERE "childCN" = 0 +GROUP BY abn ORDER BY SUM("value") DESC'; +$query = $conn->prepare($query); +$query->execute(); +if (!$query) { + databaseError($conn->errorInfo()); + return Array(); +} +?> +<script type="text/javascript"> +$(function () { + // data + var data = [ + <?php +foreach ($query->fetchAll() as $row) { + echo '{ label: "'.$row['agencyname'].'", data: '.doubleval($row["val"]).'},'; + } + ?> + ]; + // GRAPH 7 + $.plot($("#graph7"), data, + { + series: { + pie: { + show: true, + radius: 1, + tilt: 0.75, + label: { + show: true, + radius: 1, + formatter: function(label, series){ + return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'+label+': '+Math.round(series.percent)+'%</div>'; + }, + background: { + opacity: 0.5, + color: '#000' + } + }, + combine: { + color: '#999', + threshold: 0.012 + } + } + }, + legend: { + show: false + } + }); +}); +</script> + <div id="graph7" style="width:900px;height:550px"></div> + +<?php }; function agencySuppliersGraph($agency) {