--- a/ranking.php +++ b/ranking.php @@ -1,1 +1,213 @@ - +<?php +include_once('include/common.inc.php'); +include_header('Open Gov Rankings'); +$db = $server->get_db('disclosr-agencies'); +?> +<div class="foundation-header"> + <h1><a href="about.php">Open Government Rankings</a></h1> + <h4 class="subheader"></h4> +</div> +<table> + <?php + $agenciesdb = $server->get_db('disclosr-agencies'); + //$docsdb = $server->get_db('disclosr-documents'); + $scoredagencies = Array(); + $scores = Array(); + $columnKeys = Array(); + + try { + $rows = $agenciesdb->get_view("app", "all", null, true)->rows; + + + if ($rows) { + foreach ($rows as $row) { + $columns = Array(); + foreach ($row->value as $key => $value) { + if ((strstr($key, "has") || strstr($key, "URL")) && $key != "rtkURLs") { + //echo "$key<br>"; + $columns[$key] = $value; + } + } + //print_r(array_keys($columns)); + $columnKeys = array_unique(array_merge($columnKeys, array_keys($columns))); + //print_r($columnKeys); + $score = count($columns); + $scores[$score]++; + $scoredagencies[] = Array("id"=> $row->key, "website"=> $row->value->website, "name" => $row->value->name, "columns" => $columns, "score" => $score); + } + } + + } catch (SetteeRestClientException $e) { + setteErrorHandler($e); + } + function cmp($a, $b) + { + if ($a['score'] == $b['score']) { + return strcmp($a['name'], $b['name']); + } + return ($a['score'] > $b['score']) ? -1 : 1; + } + + usort($scoredagencies, "cmp"); + echo "<tr>"; + echo "<th>Agency Name</th>"; + echo "<th>Score</th>"; + foreach ($columnKeys as $columnID) { + echo "<th>" . (isset($schemas['agency']["properties"][$columnID]['x-title']) ? $schemas['agency']["properties"][$columnID]['x-title'] : "<i>$columnID</i>") . "</th>"; + } + echo "</tr>"; + foreach ($scoredagencies as $scoredagency) { + echo "<tr>"; + echo "<td><b><a href='getAgency.php?id=" . $scoredagency['id'] . "'>". $scoredagency['name'] . "</a></b></td>"; + echo "<td><b>" . $scoredagency['score'] . "</b></td>"; + foreach ($columnKeys as $key) { + echo "<td style='text-align: center;'>"; + if (isset($scoredagency['columns'][$key])) { + $value = $scoredagency['columns'][$key]; + if (is_array($value)) { + if (count($value) == 1) { + $href = $value[0]; + } else { + $href = $value[0]; + } + + } else { + $href = $value; + } + if ($href[0] == "@") { + $href = str_replace("@","https://twitter.com/",$href); + } + //$href= urlencode($href); + + echo "<font color='lightgreen'>"; + + if (strstr($href, "http")) { + echo "<a title='Yes' href='$href' style='color:lightgreen;'>✓</a>"; + } else { + echo "✓"; + } + + echo "</font>"; + } else { + echo "<font color='orange'><abbr title='No'>✘</abbr></font>"; + } + echo "</td>"; + } + echo "</tr>\n"; + } + ?> +</table><br> +<div id="criteria" style="width:500px;height:900px;"></div> +<div id="scores" style="width:900px;height:500px;"></div> +<script id="source"> + window.onload = function () { + $(document).ready(function () { + var d1 = []; + var scorelabels = []; + <?php + try { + $rows = $db->get_view("app", "scoreHas?group=true", null, true)->rows; + + + $dataValues = Array(); + foreach ($rows as $row) { + $dataValues[$row->value] = $row->key; + } + $i = 0; + ksort($dataValues); + foreach ($dataValues as $value => $key) { + + echo " d1.push([$value, $i]);" . PHP_EOL; + echo " scorelabels.push('$key');" . PHP_EOL; + $i++; + } + } catch (SetteeRestClientException $e) { + setteErrorHandler($e); + } + ?> + function scoretrackformatter(obj) { + if (scorelabels[Math.floor(obj.y)]) { + return (scorelabels[Math.floor(obj.y)]) + "=" + obj.x; + + } else { + return ""; + } + } + + function scoretickformatter(val, axis) { + if (scorelabels[Math.floor(val)]) { + return (scorelabels[Math.floor(val)]) ; + + } else { + return ""; + } + } + + Flotr.draw(document.getElementById("criteria"), [ + {data: d1} + ], { + title: 'Total count of agencies with criteria', + HtmlText: true, + bars: { + show: true, + horizontal: true + }, + mouse: { + track: true, + relative: true, + trackFormatter: scoretrackformatter + }, yaxis: { + autoscaling: true, + minorTickFreq: 0.6, + noTicks: scorelabels.length, + tickFormatter: scoretickformatter + }, + xaxis: { + autoscaling: true + + } + }); + + var d2 = []; + <?php + try { + + ksort($scores); + foreach ($scores as $key => $value) { + + echo " d2.push([$key,$value]);" . PHP_EOL; + $i++; + } + } catch (SetteeRestClientException $e) { + setteErrorHandler($e); + } + ?> + + + Flotr.draw(document.getElementById("scores"), [ + {data: d2} + ], { + title: 'Frequency distribution of Scores', + HtmlText: true, + bars: { + show: true + }, + mouse: { + track: true, + relative: true + }, yaxis: { + autoscaling: true + }, + xaxis: { + autoscaling: true + + } + }); + + }); + }; +</script> +<?php +include_footer(); +?> +