chart employee growth
chart employee growth


Former-commit-id: acae8c2c66e158f5126706b9308a5a8282cb4d3c

[submodule "couchdb/couchdb-lucene"] [submodule "couchdb/couchdb-lucene"]
path = couchdb/couchdb-lucene path = couchdb/couchdb-lucene
url = https://github.com/rnewson/couchdb-lucene.git url = https://github.com/rnewson/couchdb-lucene.git
[submodule "couchdb/settee"] [submodule "couchdb/settee"]
path = couchdb/settee path = couchdb/settee
url = https://github.com/inadarei/settee.git url = https://github.com/inadarei/settee.git
[submodule "lib/springy"] [submodule "lib/springy"]
path = lib/springy path = lib/springy
url = https://github.com/dhotson/springy.git url = https://github.com/dhotson/springy.git
[submodule "lib/php-diff"] [submodule "lib/php-diff"]
path = lib/php-diff path = lib/php-diff
url = https://github.com/chrisboulton/php-diff.git url = https://github.com/chrisboulton/php-diff.git
[submodule "javascripts/flot"]  
path = javascripts/flot  
url = https://github.com/paradoxxxzero/flot.git  
[submodule "lib/Requests"] [submodule "lib/Requests"]
path = lib/Requests path = lib/Requests
url = https://github.com/rmccue/Requests.git url = https://github.com/rmccue/Requests.git
  [submodule "javascripts/flotr2"]
  path = javascripts/flotr2
  url = https://github.com/HumbleSoftware/Flotr2.git
   
  <?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
<?php <?php
include_once('include/common.inc.php'); include_once('include/common.inc.php');
include_header(); include_header();
$db = $server->get_db('disclosr-agencies'); $db = $server->get_db('disclosr-agencies');
   
   
?> ?>
<div class="foundation-header"> <div class="foundation-header">
<h1><a href="about.php">Charts</a></h1> <h1><a href="about.php">Charts</a></h1>
<h4 class="subheader">Lorem ipsum.</h4> <h4 class="subheader">Lorem ipsum.</h4>
</div> </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"> <script id="source">
window.onload = function() { window.onload = function() {
$(document).ready(function() { $(document).ready(function() {
var d1 = []; var d1 = [];
var labels = []; var scorelabels = [];
<?php <?php
try { 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; $dataValues = Array();
echo " labels.push('{$row->key}');".PHP_EOL; foreach ($rows as $row) {
}*/ $dataValues[$row->value] = $row->key;
$dataValues = Array(); }
foreach ($rows as $row) { $i = 0;
$dataValues[$row->value] = $row->key; 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); function scoretrackformatter(obj) {
foreach($dataValues as $value => $key) { 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; $.ajax({
echo " labels.push('$key');".PHP_EOL; url: "admin/exportEmployees.csv.php?format=json",
$i++; method: 'GET',
} dataType: 'json',
} catch (SetteeRestClientException $e) { success: onDataReceived
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;  
}  
});  
   
  });
}); };
};  
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> </script>
   
<?php <?php
include_footer(); include_footer();
?> ?>
<?php <?php
   
function include_header() { function include_header() {
global $basePath; global $basePath;
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
   
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --> <!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]--> <!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
   
<!-- Set the viewport width to device width for mobile --> <!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
   
<title>Disclosr</title> <title>Disclosr</title>
   
<!-- Included CSS Files --> <!-- Included CSS Files -->
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/foundation.css"> <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/foundation.css">
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/app.css"> <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/app.css">
   
<!--[if lt IE 9]> <!--[if lt IE 9]>
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/ie.css"> <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/ie.css">
<![endif]--> <![endif]-->
   
   
<!-- IE Fix for HTML5 Tags --> <!-- IE Fix for HTML5 Tags -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--> <![endif]-->
   
</head> </head>
<body xmlns:schema="http://schema.org/" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <body xmlns:schema="http://schema.org/" xmlns:foaf="http://xmlns.com/foaf/0.1/">
   
<!-- navBar --> <!-- navBar -->
<div id="navbar" class="container"> <div id="navbar" class="container">
<div class="row"> <div class="row">
<div class="four columns"> <div class="four columns">
<h1><a href="/">Disclosr</a></h1> <h1><a href="/">Disclosr</a></h1>
</div> </div>
<div class="eight columns hide-on-phones"> <div class="eight columns hide-on-phones">
<strong class="right"> <strong class="right">
<a href="getAgency.php">Agencies</a> <a href="getAgency.php">Agencies</a>
<a href="about.php">About/FAQ</a> <a href="about.php">About/FAQ</a>
</strong> </strong>
</div> </div>
</div> </div>
</div> </div>
<!-- /navBar --> <!-- /navBar -->
   
<!-- container --> <!-- container -->
<div class="container"> <div class="container">
<?php } <?php }
   
function include_footer() { function include_footer() {
global $basePath; global $basePath;
?> ?>