Graphing of has scores
Graphing of has scores


Former-commit-id: 0001366c9f06949ee37000803534e31aebb49c23

[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
   
file:a/about.php -> file:b/about.php
<?php <?php
include_once('include/common.inc.php'); include_once('include/common.inc.php');
include_header(); include_header();
?> ?>
<div class="foundation-header"> <div class="foundation-header">
<h1><a href="about.php">About/FAQ</a></h1> <h1><a href="about.php">About/FAQ</a></h1>
<h4 class="subheader">Lorem ipsum.</h4> <h4 class="subheader">Lorem ipsum.</h4>
</div> </div>
<h2> What is this? </h2> <h2> What is this? </h2>
Disclosr is a project to monitor Australian Federal Government agencies Disclosr is a project to monitor Australian Federal Government agencies
compliance with their <a href="http://www.oaic.gov.au/publications/other_operational/foi_policy_frequently_asked_questions.html#_Toc291837571">"proactive disclosure requirements"</a>. compliance with their <a href="http://www.oaic.gov.au/publications/other_operational/foi_policy_frequently_asked_questions.html#_Toc291837571">"proactive disclosure requirements"</a>.
OGRE (Open Government Realization Evaluation) is a ranking of compliance with these requirements. OGRE (Open Government Realization Evaluation) is a ranking of compliance with these requirements.
Prometheus is the agent which polls agency websites to assess compliance. Prometheus is the agent which polls agency websites to assess compliance.
   
<h2> Open everything </h2> <h2> Open everything </h2>
all documents released CC-BY 3 AU All documents released CC-BY 3 AU
Open source git @ Open source git @
   
<h2>Organisational Data Sources</h2> <h2>Organisational Data Sources</h2>
   
http://www.comlaw.gov.au/Browse/Results/ByTitle/AdministrativeArrangementsOrders/Current/Ad/0 defines departments http://www.comlaw.gov.au/Browse/Results/ByTitle/AdministrativeArrangementsOrders/Current/Ad/0 defines departments
Agencies can be found in the Schedule to an Appropriation Bill (budget), Schedule to FMA Regulations and/or Public Service Act. Agencies can be found in the Schedule to an Appropriation Bill (budget), Schedule to FMA Regulations and/or Public Service Act.<br>
   
http://www.finance.gov.au/publications/flipchart/docs/FMACACFlipchart.pdf summarises these. view-source:https://www.tenders.gov.au/?event=public.advancedsearch.home is great for the suspended/active status http://www.finance.gov.au/publications/flipchart/docs/FMACACFlipchart.pdf summarises these. view-source:https://www.tenders.gov.au/?event=public.advancedsearch.home is great for the suspended/active status<br>
   
When defining the hierachy, this system is designed towards monitoring accountablity. Thus large agencies that have registered their own ABN When defining the hierachy, this system is designed towards monitoring accountablity. Thus large agencies that have registered their own ABN
and have their own accountablity mechanisms/website receive a seperate record as a child of their department. and have their own accountablity mechanisms/website receive a seperate record as a child of their department.
Some small agencies will choose to simply rely on their parent department's accountablity measures. Some small agencies will choose to simply rely on their parent department's accountablity measures.<br>
   
This flows through to organisation name and other/past names. A department that completely accounts for an agency will list that agency as an other child name. This flows through to organisation name and other/past names. A department that completely accounts for an agency will list that agency as an other child name.
As agencies themselves shift between departments, there may be scope for providing time ranges but typically the newest hierarchy will be the one recorded. As agencies themselves shift between departments, there may be scope for providing time ranges but typically the newest hierarchy will be the one recorded.
A department/agency name will be the newest active name assigned to that ABN. A department/agency name will be the newest active name assigned to that ABN.<br>
   
ABN information is derived from the ABR. This is the definitive umpire about which former name should be linked to which current name. ABN information is derived from the ABR. This is the definitive umpire about which former name should be linked to which current name.
For example "Department of Transport and Regional Services" became "Department of Infrastructure, Transport, Regional Development and Local Government" (same ABN) For example "Department of Transport and Regional Services" became "Department of Infrastructure, Transport, Regional Development and Local Government" (same ABN)
however it later split into "Department of Infrastructure and Transport" (same ABN) however it later split into "Department of Infrastructure and Transport" (same ABN)
and "Department of Regional Australia, Regional Development and Local Government" (new ABN). and "Department of Regional Australia, Regional Development and Local Government" (new ABN).<br>
   
Statistical information from http://www.apsc.gov.au/stateoftheservice/1011/statsbulletin/section1.html#t2total https://www.apsedii.gov.au/apsedii/CustomQueryx33.shtml Statistical information from http://www.apsc.gov.au/stateoftheservice/1011/statsbulletin/section1.html#t2total https://www.apsedii.gov.au/apsedii/CustomQueryx33.shtml
and individual annual reports. and individual annual reports.<br>
   
Webpage Assessment <h2>Webpage Assessment</h2>
Much due care has been put into correctly recording disclosure URLs. Typically the "About", "Corporate", "Publications" and "Sitemap" sections are checked at the very least. Much due care has been put into correctly recording disclosure URLs. Typically the "About", "Corporate", "Publications" and "Sitemap" sections are checked at the very least.
Occasionally it is nessicary to use a site or Google search. In several rare cases, there is a secret "Disclosure" navigation menu you can find if you find one of the mandatory publishing obligations in that category (seriously). Occasionally it is nessicary to use a site or Google search. In several rare cases, there is a secret "Disclosure" navigation menu you can find if you find one of the mandatory publishing obligations in that category (seriously).<br>
Some rules about leniency: Some rules about leniency:<br>
An empty FOI disclosure log counts, a page outlining what the FOI Act is does not. <ul>
A disclosure log in PDF or Word format counts :( <li>An empty FOI disclosure log counts, a page outlining what the FOI Act is does not.</li>
An empty File/Record list counts (although that's very minimalistic that you have no files, electronic or paper) <li>A disclosure log in PDF or Word format counts :(</li>
Only a current information publication scheme page counts, not a s.9 FOI Act page or an organisation chart. <li>An empty File/Record list counts (although that's very minimalistic that you have no files, electronic or paper)</li>
If there isn't a page easily listing all current and past Annual Reports, the most current one (html, pdf) counts. <li>Only a current information publication scheme page counts, not a s.9 FOI Act page or an organisation chart.</li>
Consultancy contracts might not need it's own webpage (if in Annual Report), grants/appointments might not apply to all organisations but Legal Services Expenditure (and all other obligations) does need a webpage. <li>If there isn't a page easily listing all current and past Annual Reports, the most current one (html, pdf) counts.</li>
  <li>Consultancy contracts might not need it's own webpage (if in Annual Report), grants/appointments might not apply to all organisations but Legal Services Expenditure (and all other obligations) does need a webpage. </li>
   
<h2>Open Government Scoring</h2> <h2>Open Government Scoring</h2>
+1 point for every true Has... attribute +1 point for every true Has... attribute<br>
-1 point for every false Has... (ie. Has Not) attribute -1 point for every false Has... (ie. Has Not) attribute</br>
   
Don't like this? Make your own score, suggest a better scoring mechanism. Don't like this? Make your own score, suggest a better scoring mechanism.</br>
   
<?php <?php
include_footer(); include_footer();
?> ?>
file:b/charts.php (new)
  <?php
  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>
  <script id="source">
  window.onload = function() {
  $(document).ready(function() {
  var d1 = [];
  var labels = [];
  <?php
  try {
  $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;
  }
  $i = 0;
  ksort($dataValues);
  foreach($dataValues as $value => $key) {
 
  echo " d1.push([$i, $value]);".PHP_EOL;
  echo " labels.push('$key');".PHP_EOL;
  $i++;
  }
  } catch (SetteeRestClientException $e) {
  setteErrorHandler($e);
  }
  ?>
 
  $.plot($("#placeholder"), [ d1], {
  series: {
  bars: { show: true, barWidth: 0.6 }
  },
  xaxis: {
  tickFormatter: function formatter(val, axis) {
  if (labels[val]) {
  return(labels[val]);
 
  } else {
  return "";
  }
 
  },
  labelAngle: 90
  }
  });
 
 
 
 
  });
  };
  </script>
 
  <?php
  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> <body>
   
<!-- 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;
?> ?>
</div> </div>
<!-- container --> <!-- container -->
   
   
   
   
<!-- Included JS Files --> <!-- Included JS Files -->
<script src="<?php echo $basePath; ?>javascripts/foundation.js"></script> <script src="<?php echo $basePath; ?>javascripts/foundation.js"></script>
<script src="<?php echo $basePath; ?>javascripts/app.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 language="javascript" type="text/javascript" src="javascripts/jquery.js"></script>-->
  <script language="javascript" type="text/javascript" src="javascripts/flot/jquery.flot.js"></script>
   
</body> </body>
</html> </html>
   
<?php } <?php }
/* Foundation v2.1.4 http://foundation.zurb.com */ /* Foundation v2.1.4 http://foundation.zurb.com */
$(document).ready(function () { $(document).ready(function () {
   
/* Use this js doc for all application specific JS */ /* Use this js doc for all application specific JS */
   
/* TABS --------------------------------- */ /* TABS --------------------------------- */
/* Remove if you don't need :) */ /* Remove if you don't need :) */
   
function activateTab($tab) { function activateTab($tab) {
var $activeTab = $tab.closest('dl').find('a.active'), var $activeTab = $tab.closest('dl').find('a.active'),
contentLocation = $tab.attr("href") + 'Tab'; contentLocation = $tab.attr("href") + 'Tab';
   
//Make Tab Active //Make Tab Active
$activeTab.removeClass('active'); $activeTab.removeClass('active');
$tab.addClass('active'); $tab.addClass('active');
   
//Show Tab Content //Show Tab Content
$(contentLocation).closest('.tabs-content').children('li').hide(); $(contentLocation).closest('.tabs-content').children('li').hide();
$(contentLocation).show(); $(contentLocation).show();
} }
   
$('dl.tabs').each(function () { $('dl.tabs').each(function () {
//Get all tabs //Get all tabs
var tabs = $(this).children('dd').children('a'); var tabs = $(this).children('dd').children('a');
tabs.click(function (e) { tabs.click(function (e) {
activateTab($(this)); activateTab($(this));
}); });
}); });
   
if (window.location.hash) { if (window.location.hash) {
activateTab($('a[href="' + window.location.hash + '"]')); activateTab($('a[href="' + window.location.hash + '"]'));
} }
   
/* ALERT BOXES ------------ */ /* ALERT BOXES ------------ */
$(".alert-box").delegate("a.close", "click", function(event) { $(".alert-box").delegate("a.close", "click", function(event) {
event.preventDefault(); event.preventDefault();
$(this).closest(".alert-box").fadeOut(function(event){ $(this).closest(".alert-box").fadeOut(function(event){
$(this).remove(); $(this).remove();
}); });
}); });
   
   
/* PLACEHOLDER FOR FORMS ------------- */ /* PLACEHOLDER FOR FORMS ------------- */
/* Remove this and jquery.placeholder.min.js if you don't need :) */ /* Remove this and jquery.placeholder.min.js if you don't need :) */
   
$('input, textarea').placeholder(); //$('input, textarea').placeholder();
   
   
   
/* UNCOMMENT THE LINE YOU WANT BELOW IF YOU WANT IE6/7/8 SUPPORT AND ARE USING .block-grids */ /* UNCOMMENT THE LINE YOU WANT BELOW IF YOU WANT IE6/7/8 SUPPORT AND ARE USING .block-grids */
// $('.block-grid.two-up>li:nth-child(2n+1)').css({clear: 'left'}); // $('.block-grid.two-up>li:nth-child(2n+1)').css({clear: 'left'});
// $('.block-grid.three-up>li:nth-child(3n+1)').css({clear: 'left'}); // $('.block-grid.three-up>li:nth-child(3n+1)').css({clear: 'left'});
// $('.block-grid.four-up>li:nth-child(4n+1)').css({clear: 'left'}); // $('.block-grid.four-up>li:nth-child(4n+1)').css({clear: 'left'});
// $('.block-grid.five-up>li:nth-child(5n+1)').css({clear: 'left'}); // $('.block-grid.five-up>li:nth-child(5n+1)').css({clear: 'left'});
   
   
   
/* DROPDOWN NAV ------------- */ /* DROPDOWN NAV ------------- */
   
var currentFoundationDropdown = null; var currentFoundationDropdown = null;
$('.nav-bar li a, .nav-bar li a:after').each(function() { $('.nav-bar li a, .nav-bar li a:after').each(function() {
$(this).data('clicks', 0); $(this).data('clicks', 0);
}); });
$('.nav-bar li a, .nav-bar li a:after').live('click', function(e) { $('.nav-bar li a, .nav-bar li a:after').live('click', function(e) {
e.preventDefault(); e.preventDefault();
if (currentFoundationDropdown !== $(this).index() || currentFoundationDropdown === null) { if (currentFoundationDropdown !== $(this).index() || currentFoundationDropdown === null) {
$(this).data('clicks', 0); $(this).data('clicks', 0);
currentFoundationDropdown = $(this).index(); currentFoundationDropdown = $(this).index();
} }
$(this).data('clicks', ($(this).data('clicks') + 1)); $(this).data('clicks', ($(this).data('clicks') + 1));
var f = $(this).siblings('.flyout'); var f = $(this).siblings('.flyout');
if (!f.is(':visible') && $(this).parent('.has-flyout').length > 1) { if (!f.is(':visible') && $(this).parent('.has-flyout').length > 1) {
$('.nav-bar li .flyout').hide(); $('.nav-bar li .flyout').hide();
f.show(); f.show();
} else if (($(this).data('clicks') > 1) || ($(this).parent('.has-flyout').length < 1)) { } else if (($(this).data('clicks') > 1) || ($(this).parent('.has-flyout').length < 1)) {
window.location = $(this).attr('href'); window.location = $(this).attr('href');
} }
}); });
$('.nav-bar').live('click', function(e) { $('.nav-bar').live('click', function(e) {
e.stopPropagation(); e.stopPropagation();
if ($(e.target).parents().is('.flyout') || $(e.target).is('.flyout')) { if ($(e.target).parents().is('.flyout') || $(e.target).is('.flyout')) {
e.preventDefault(); e.preventDefault();
} }
}); });
// $('body').bind('touchend', function(e) { // $('body').bind('touchend', function(e) {
// if (!$(e.target).parents().is('.nav-bar') || !$(e.target).is('.nav-bar')) { // if (!$(e.target).parents().is('.nav-bar') || !$(e.target).is('.nav-bar')) {
// $('.nav-bar li .flyout').is(':visible').hide(); // $('.nav-bar li .flyout').is(':visible').hide();
// } // }
// }); // });
   
/* DISABLED BUTTONS ------------- */ /* DISABLED BUTTONS ------------- */
/* Gives elements with a class of 'disabled' a return: false; */ /* Gives elements with a class of 'disabled' a return: false; */
   
}); });
   
directory:b/javascripts/flot (new)