chart employee growth
Former-commit-id: acae8c2c66e158f5126706b9308a5a8282cb4d3c
--- a/admin/exportEmployees.csv.php
+++ b/admin/exportEmployees.csv.php
@@ -2,10 +2,16 @@
include_once("../include/common.inc.php");
+$format = "csv";
+//$format = "json";
+if (isset($_REQUEST['format'])) $format = $_REQUEST['format'];
setlocale(LC_CTYPE, 'C');
-
-$headers = Array("name");
+if ($format == "csv") {
+ $headers = Array("name");
+} else {
+ $headers = Array();
+}
$db = $server->get_db('disclosr-agencies');
try {
@@ -24,31 +30,51 @@
$fp = fopen('php://output', 'w');
if ($fp && $db) {
- header('Content-Type: text/csv; charset=utf-8');
- header('Content-Disposition: attachment; filename="export.employeestats.' . date("c") . '.csv"');
+ if ($format == "csv") {
+ header('Content-Type: text/csv; charset=utf-8');
+ header('Content-Disposition: attachment; filename="export.employeestats.' . date("c") . '.csv"');
+ }
header('Pragma: no-cache');
header('Expires: 0');
- fputcsv($fp, $headers);
+ if ($format == "csv") {
+ fputcsv($fp, $headers);
+ } else if ($format == "json") {
+ echo '{
+ "labels" : ["' . implode('","', $headers) . '"],'.PHP_EOL;
+ }
try {
$agencies = $db->get_view("app", "all", null, true)->rows;
//print_r($agencies);
+ $first = true;
+ if ($format == "json") {
+ echo '"data" : ['.PHP_EOL;
+
+ }
foreach ($agencies as $agency) {
if (isset($agency->value->statistics->employees)) {
$row = Array();
$agencyEmployeesArray = object_to_array($agency->value->statistics->employees);
- foreach ($headers as $fieldName) {
- if ($fieldName == "name") {
- $row[] = $agency->value->name;
- } else if (isset($agencyEmployeesArray[$fieldName])) {
- $row[] = $agencyEmployeesArray[$fieldName]["value"];
+ foreach ($headers as $i => $fieldName) {
+ if (isset($agencyEmployeesArray[$fieldName])) {
+ $row[] = '['.$i.','.$agencyEmployeesArray[$fieldName]["value"].']';
} else {
- $row[] = 0;
+ $row[] = '['.$i.',0]';
}
}
-
- fputcsv($fp, array_values($row));
+ if ($format == "csv") {
+ fputcsv($fp, array_values($row));
+ } else if ($format == "json") {
+ if (!$first) echo ",";
+ echo '{"data" : [' . implode(",", array_values($row)) . '], "label": "'.$agency->value->name.'", "lines" : { "show" : true }, "points" : { "show" : true }}'.PHP_EOL;
+ $first = false;
+ }
}
+ }
+ if ($format == "json") {
+ echo ']
+ }'.PHP_EOL;
+
}
} catch (SetteeRestClientException $e) {
setteErrorHandler($e);
--- a/charts.php
+++ b/charts.php
@@ -7,12 +7,13 @@
<h1><a href="about.php">Charts</a></h1>
<h4 class="subheader">Lorem ipsum.</h4>
</div>
-<div id="placeholder" style="width:900px;height:500px;"></div>
+<div id="scores" style="width:900px;height:500px;"></div>
+<div id="employees" style="width:1000px;height:900px;"></div>
<script id="source">
window.onload = function() {
$(document).ready(function() {
var d1 = [];
- var labels = [];
+ var scorelabels = [];
<?php
try {
$rows = $db->get_view("app", "scoreHas?group=true", null, true)->rows;
@@ -27,53 +28,103 @@
foreach ($dataValues as $value => $key) {
echo " d1.push([$i, $value]);" . PHP_EOL;
- echo " labels.push('$key');" . PHP_EOL;
+ echo " scorelabels.push('$key');" . PHP_EOL;
$i++;
}
} catch (SetteeRestClientException $e) {
setteErrorHandler($e);
}
?>
- function trackformatter(obj) {
- if (labels[Math.floor(obj.x)]) {
- return (labels[Math.floor(obj.x)])+"="+obj.y;
+ function scoretrackformatter(obj) {
+ if (scorelabels[Math.floor(obj.x)]) {
+ return (scorelabels[Math.floor(obj.x)])+"="+obj.y;
- } else {
- return "";
+ } else {
+ return "";
+ }
}
- }
- function tickformatter(val, axis) {
- if (labels[Math.floor(val)]) {
- return '<p style="margin-top:8em;-webkit-transform:rotate(-90deg);">'+(labels[Math.floor(val)])+"</b>";
+ function scoretickformatter(val, axis) {
+ if (scorelabels[Math.floor(val)]) {
+ return '<p style="margin-top:8em;-webkit-transform:rotate(-90deg);">'+(scorelabels[Math.floor(val)])+"</b>";
- } else {
- return "";
+ } else {
+ return "";
+ }
}
- }
- Flotr.draw(document.getElementById("placeholder"), [ {data: d1}], {
- HtmlText: true,
- bars : {
- show : true
- },
- mouse : {
- track : true,
- relative : true,
- trackFormatter: trackformatter
- },yaxis: {
- min:0
- },
- xaxis: {
-
- minorTickFreq: 0.6,
- noTicks : 19,
- tickFormatter: tickformatter
+ Flotr.draw(document.getElementById("scores"), [ {data: d1}], {
+ HtmlText: true,
+ bars : {
+ show : true
+ },
+ mouse : {
+ track : true,
+ relative : true,
+ trackFormatter: scoretrackformatter
+ },yaxis: {
+ autoscaling: true
+ },
+ xaxis: {
+ autoscaling: true,
+ minorTickFreq: 0.6,
+ noTicks : scorelabels.length,
+ tickFormatter: scoretickformatter
+ }
+ });
+
+
+
+
+
+
+
+
+var emplabels = [];
+function emptrackformatter(obj) {
+
+ return (obj.series.label)+" = "+obj.y+" in "+emplabels[Math.floor(obj.x)];
+
}
- });
+ function emptickformatter(val, axis) {
+ if (emplabels[Math.floor(val)]) {
+ return '<p style="margin-top:8em;-webkit-transform:rotate(-90deg);">'+(emplabels[Math.floor(val)])+"</b>";
+
+ } else {
+ return "";
+ }
+ }
+function onDataReceived(series) {
+ emplabels = series.labels;
+ Flotr.draw(document.getElementById("employees"), series.data, {
+ mouse : {
+ track : true,
+ relative : true,
+ trackFormatter: emptrackformatter
+ },yaxis: {
+ max: 10000,
+ scaling: 'logarithmic'
+ },
+ xaxis: {
+ minorTickFreq: 1,
+ noTicks: emplabels.length,
+ showMinorLabels: true,
+ tickFormatter: emptickformatter
+ },
+ legend: {
+ show: false
+ }
+ });
+ }
+
+ $.ajax({
+ url: "admin/exportEmployees.csv.php?format=json",
+ method: 'GET',
+ dataType: 'json',
+ success: onDataReceived
+ });
-
- });
- };
+ });
+ };
</script>