chart employee growth
chart employee growth


Former-commit-id: acae8c2c66e158f5126706b9308a5a8282cb4d3c

--- /dev/null
+++ b/admin/exportEmployees.csv.php
@@ -1,1 +1,86 @@
+<?php
 
+include_once("../include/common.inc.php");
+
+$format = "csv";
+//$format = "json";
+if (isset($_REQUEST['format']))  $format = $_REQUEST['format'];
+
+setlocale(LC_CTYPE, 'C');
+if ($format == "csv") {
+    $headers = Array("name");
+} else {
+    $headers = Array();
+}
+
+$db = $server->get_db('disclosr-agencies');
+try {
+    $rows = $db->get_view("app", "all", null, true)->rows;
+
+    $dataValues = Array();
+    foreach ($rows as $row) {
+        if (isset($row->value->statistics->employees)) {
+
+            $headers = array_unique(array_merge($headers, array_keys(object_to_array($row->value->statistics->employees))));
+        }
+    }
+} catch (SetteeRestClientException $e) {
+    setteErrorHandler($e);
+}
+
+$fp = fopen('php://output', 'w');
+if ($fp && $db) {
+    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');
+    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 $i => $fieldName) {
+                    if (isset($agencyEmployeesArray[$fieldName])) {
+                        $row[] = '['.$i.','.$agencyEmployeesArray[$fieldName]["value"].']';
+                    } else {
+                        $row[] = '['.$i.',0]';
+                    }
+                }
+                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);
+    }
+
+    die;
+}
+?>
+

file:a/charts.php -> file:b/charts.php
--- a/charts.php
+++ b/charts.php
@@ -2,99 +2,130 @@
 include_once('include/common.inc.php');
 include_header();
 $db = $server->get_db('disclosr-agencies');
- 
-
 ?>
 <div class="foundation-header">
     <h1><a href="about.php">Charts</a></h1>
     <h4 class="subheader">Lorem ipsum.</h4>
 </div>
-<div id="placeholder" style="width:900px;height:600px;"></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 = [];
+    window.onload = function() {
+        $(document).ready(function() {
+            var d1 = [];
+            var scorelabels = [];
     <?php
     try {
-    $rows = $db->get_view("app", "scoreHas?group=true", null, true)->rows;
+        $rows = $db->get_view("app", "scoreHas?group=true", null, true)->rows;
 
-    /*foreach ($rows as $key => $row) {
-        echo "       d1.push([$key, {$row->value}]);".PHP_EOL;
-        echo "        labels.push('{$row->key}');".PHP_EOL;
-    }*/
-    $dataValues = Array();
-    foreach ($rows as $row) {
-        $dataValues[$row->value] = $row->key;
+
+        $dataValues = Array();
+        foreach ($rows as $row) {
+            $dataValues[$row->value] = $row->key;
+        }
+        $i = 0;
+        ksort($dataValues);
+        foreach ($dataValues as $value => $key) {
+
+            echo "       d1.push([$i, $value]);" . PHP_EOL;
+            echo "        scorelabels.push('$key');" . PHP_EOL;
+            $i++;
+        }
+    } catch (SetteeRestClientException $e) {
+        setteErrorHandler($e);
     }
-    $i = 0;
-    ksort($dataValues);
-    foreach($dataValues as $value => $key) {
+    ?>
+                function scoretrackformatter(obj) {
+                    if (scorelabels[Math.floor(obj.x)]) {
+                        return (scorelabels[Math.floor(obj.x)])+"="+obj.y;
+                     
+                    } else {
+                        return "";
+                    }
+                }
+                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 "";
+                    }
+                }
+                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
+                    }
+                });
+                }
         
-        echo "       d1.push([$i, $value]);".PHP_EOL;
-        echo "        labels.push('$key');".PHP_EOL;
-        $i++;
-    }
-} catch (SetteeRestClientException $e) {
-    setteErrorHandler($e);
-}
-?>
-    
-        $.plot($("#placeholder"), [ d1], {
-             grid: { hoverable: true },
-             
-            series: {
-                bars: { show: true, barWidth: 0.6 }
-            },
-            xaxis: {
-                 tickFormatter: function formatter(val, axis) {
-                     if (labels[val]) {
-                         return(labels[val]);
-                     
-                 } else {
-                     return "";
-                 }
-           
-        },
-                labelAngle: 90
-            }
-        });
-    
-var previousPoint = null;
-$("#placeholder").bind("plothover", function (event, pos, item) {
-    if (item) {
-        if (previousPoint != item.datapoint) {
-            previousPoint = item.datapoint;
-
-            $("#tooltip").remove();
-            var x = item.datapoint[0],
-                y = item.datapoint[1] - item.datapoint[2];
-
-            showTooltip(item.pageX, item.pageY, y );
-        }
-    }
-    else {
-        $("#tooltip").remove();
-        previousPoint = null;            
-    }
-});
+                $.ajax({
+                    url: "admin/exportEmployees.csv.php?format=json",
+                    method: 'GET',
+                    dataType: 'json',
+                    success: onDataReceived
+                });
 
     
-    
-});
-};
- function showTooltip(x, y, contents) {
-        $('<div id="tooltip">' + contents + '</div>').css( {
-            position: 'absolute',
-            display: 'none',
-            top: y + 5,
-            left: x + 5,
-            border: '1px solid #fdd',
-            padding: '2px',
-            'background-color': '#fee',
-            opacity: 0.80
-        }).appendTo("body").fadeIn(200);
-    }
+            });
+        };
+ 
 </script>
 
 <?php

--- a/include/template.inc.php
+++ b/include/template.inc.php
@@ -68,10 +68,9 @@
             <!-- Included JS Files -->
             <script src="<?php echo $basePath; ?>javascripts/foundation.js"></script>
             <script src="<?php echo $basePath; ?>javascripts/app.js"></script>
-            <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
+           <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
             
-    <!--<script type="text/javascript" src="javascripts/jquery.js"></script>-->
-    <script type="text/javascript" src="javascripts/flot/jquery.flot.js"></script>
+    <script type="text/javascript" src="javascripts/flotr2/flotr2.js"></script>
 
         </body>
     </html>

directory:a/javascripts/flot (deleted)
--- a/javascripts/flot
+++ /dev/null