*.wav | *.wav |
*.pyc | *.pyc |
/nbproject/private/ |
[submodule "pynma"] | [submodule "pynma"] |
path = pynma | path = pynma |
url = git://github.com/uskr/pynma.git | url = git://github.com/uskr/pynma.git |
[submodule "js/flotr2"] | |
path = js/flotr2 | |
url = git://github.com/HumbleSoftware/Flotr2.git | |
<?xml version="1.0" encoding="UTF-8"?> | |
<project version="4"> | |
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" /> | |
</project> | |
<?xml version="1.0" encoding="UTF-8"?> | |
<project version="4"> | |
<component name="ProjectResources"> | |
<default-html-doctype>jar:file:\C:\Program Files (x86)\JetBrains\PhpStorm 5.0.2\lib\webide.jar!\resources\html5-schema\html5.rnc</default-html-doctype> | |
</component> | |
<component name="ProjectRootManager" version="2" /> | |
</project> | |
<?xml version="1.0" encoding="UTF-8"?> | |
<project version="4"> | |
<component name="ProjectModuleManager"> | |
<modules> | |
<module fileurl="file://$PROJECT_DIR$/.idea/scannr.iml" filepath="$PROJECT_DIR$/.idea/scannr.iml" /> | |
</modules> | |
</component> | |
</project> | |
<?xml version="1.0" encoding="UTF-8"?> | |
<module type="WEB_MODULE" version="4"> | |
<component name="NewModuleRootManager"> | |
<content url="file://$MODULE_DIR$" /> | |
<orderEntry type="inheritedJdk" /> | |
<orderEntry type="sourceFolder" forTests="false" /> | |
</component> | |
</module> | |
<component name="DependencyValidationManager"> | |
<state> | |
<option name="SKIP_IMPORT_STATEMENTS" value="false" /> | |
</state> | |
</component> |
<?xml version="1.0" encoding="UTF-8"?> | |
<project version="4"> | |
<component name="VcsDirectoryMappings"> | |
<mapping directory="$PROJECT_DIR$" vcs="Git" /> | |
<mapping directory="$PROJECT_DIR$/js/flotr2" vcs="Git" /> | |
<mapping directory="$PROJECT_DIR$/pynma" vcs="Git" /> | |
</component> | |
</project> | |
<?php | |
function json_graph($sensorID, $timefrom, $timeto) { | |
$values = getSensorValuesByHour($sensorID, $timefrom, $timeto); | |
$label = $sensorID; | |
$data = Array(); | |
$tzoffset = $this->get_timezone_offset("UTC"); | |
foreach ($values as $value) { | |
$data[] = Array((strtotime($value['time']) + $tzoffset) * 1000, intval($value['avg'])); | |
} | |
$this->output | |
->set_content_type('application/json') | |
->set_output(json_encode(Array("label" => $label, "data" => $data, | |
"previous" => Array( | |
"from" => $timefrom - (24 * 60 * 60), | |
"to" => $timefrom) | |
, | |
"next" => Array( | |
"to" => $timeto + (24 * 60 * 60), | |
"from" => $timeto) | |
) | |
)); | |
} | |
function json_data_description($sensorID, $timefrom, $timeto) { | |
$timefrom = strtotime($timefrom); | |
$timeto = strtotime($timeto); | |
$years = getSensorDataYears($sensorID, $timefrom, $timeto); | |
$months = getSensorDataMonths($sensorID, $timefrom, $timeto); | |
$days = getSensorDataDays($sensorID, $timefrom, $timeto); | |
return json_encode(Array("years" => $years, "months" => $months, "days" => $days | |
)); | |
} | |
?> | |
<?php | |
date_default_timezone_set("Australia/Sydney"); | |
$basePath = ""; | |
$DATA_DIR = "./data"; | |
/** Returns the offset from the origin timezone to the remote timezone, in seconds. | |
* @param $remote_tz; | |
* @param $origin_tz; If null the servers current timezone is used as the origin. | |
* @return int; | |
*/ | |
function get_timezone_offset($remote_tz, $origin_tz = null) { | |
if ($origin_tz === null) { | |
if (!is_string($origin_tz = date_default_timezone_get())) { | |
return false; // A UTC timestamp was returned -- bail out! | |
} | |
} | |
$origin_dtz = new DateTimeZone($origin_tz); | |
$remote_dtz = new DateTimeZone($remote_tz); | |
$origin_dt = new DateTime("now", $origin_dtz); | |
$remote_dt = new DateTime("now", $remote_dtz); | |
$offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt); | |
return $offset; | |
} | |
function getSensorValuesByHour($sensorID, $timeFrom, $timeTo) { | |
$sql = 'select min(call_timestamp) as time, count(*), min(length), max(length), avg(length), stddev(length) from recordings | |
group by tgid, date_trunc(\'hour\', call_timestamp) order by time'; | |
$query = $this->db->query($sql, Array($sensorID, $timeFrom, $timeTo)); | |
return $query->result_array(); | |
} | |
function getSensorValuesByDay($sensorID, $dayFrom, $dayTo) { | |
$sql = 'select min(time) as time, min(value), max(value), avg(value), stddev(value) from sensor_values where sensor_id = ? | |
group by sensor_id, date_trunc(\'day\', time) order by time'; | |
$query = $this->db->query($sql, Array($sensorID)); | |
return $query->result_array(); | |
} | |
function getSensorDataYears($sensorID, $timeFrom, $timeTo) { | |
$sql = "select distinct extract('year' from call_timestamp) as year from recordings where tgid = ? order by year"; | |
$query = $this->db->query($sql, Array($sensorID)); | |
return $query->result_array(); | |
} | |
function getSensorDataMonths($sensorID, $timeFrom, $timeTo) { | |
$sql = "select distinct extract('month' from time) as month, extract('year' from time) as year from sensor_values where sensor_id = ? order by year, month"; | |
$query = $this->db->query($sql, Array($sensorID)); | |
return $query->result_array(); | |
} | |
function getSensorDataDays($sensorID, $timeFrom, $timeTo) { | |
$sql = "select distinct extract('day' from time) as day, extract('month' from time) as month, extract('year' from time) as year from sensor_values where sensor_id = ? order by year,month,day"; | |
$query = $this->db->query($sql, Array($sensorID)); | |
return $query->result_array(); | |
} | |
function include_header($title) { | |
global $basePath; | |
?> | |
<!DOCTYPE html> | |
<!-- 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 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 gt IE 8]><!--> <html lang="en"> <!--<![endif]--> | |
<head> | |
<meta charset="utf-8" /> | |
<!-- Set the viewport width to device width for mobile --> | |
<meta name="viewport" content="width=device-width" /> | |
<title><?php echo $title; ?> - Scannr</title> | |
<!-- Included CSS Files --> | |
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/foundation.css"> | |
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/app.css"> | |
<!--[if lt IE 9]> | |
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/ie.css"> | |
<![endif]--> | |
<!-- IE Fix for HTML5 Tags --> | |
<!--[if lt IE 9]> | |
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> | |
<![endif]--> | |
</head> | |
<body xmlns:schema="http://schema.org/" xmlns:foaf="http://xmlns.com/foaf/0.1/"> | |
<!-- navBar --> | |
<div id="navbar" class="container"> | |
<div class="row"> | |
<div class="four columns"> | |
<h1><a href="/">Disclosr</a></h1> | |
</div> | |
<div class="eight columns hide-on-phones"> | |
<strong class="right"> | |
<a href="getAgency.php">Agencies</a> | |
<a href="about.php">About/FAQ</a> | |
</strong> | |
</div> | |
</div> | |
</div> | |
<!-- /navBar --> | |
<!-- container --> | |
<div class="container"> | |
<?php | |
} | |
function include_footer() { | |
global $basePath; | |
?> | |
</div> | |
<!-- container --> | |
<!-- Included JS Files --> | |
<script src="<?php echo $basePath; ?>js/foundation.js"></script> | |
<script src="<?php echo $basePath; ?>js/app.js"></script> | |
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> | |
<script>window.jQuery || document.write('<script src="js/jquery-1.8.2.min.js"><\/script>')</script> | |
<script type="text/javascript" src="<?php echo $basePath ?>js/flotr2/flotr2.js"></script> | |
<?php | |
if (strpos($_SERVER['SERVER_NAME'], ".gs")) { | |
?> | |
<script type="text/javascript"> | |
var _gaq = _gaq || []; | |
_gaq.push(['_setAccount', 'UA-12341040-2']); | |
_gaq.push(['_trackPageview']); | |
(function() { | |
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; | |
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; | |
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); | |
})(); | |
</script> | |
</body> | |
</html> | |
<?php | |
} | |
} | |
-- | |
-- PostgreSQL database dump | |
-- | |
-- Dumped from database version 9.1.2 | |
-- Dumped by pg_dump version 9.1.2 | |
-- Started on 2012-10-08 22:16:52 | |
SET statement_timeout = 0; | |
SET client_encoding = 'UTF8'; | |
SET standard_conforming_strings = on; | |
SET check_function_bodies = false; | |
SET client_min_messages = warning; | |
-- | |
-- TOC entry 162 (class 3079 OID 11639) | |
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: | |
-- | |
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; | |
-- | |
-- TOC entry 1856 (class 0 OID 0) | |
-- Dependencies: 162 | |
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: | |
-- | |
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; | |
SET search_path = public, pg_catalog; | |
SET default_tablespace = ''; | |
SET default_with_oids = false; | |
-- | |
-- TOC entry 161 (class 1259 OID 62391) | |
-- Dependencies: 1847 6 | |
-- Name: recordings; Type: TABLE; Schema: public; Owner: postgres; Tablespace: | |
-- | |
CREATE TABLE recordings ( | |
filename text NOT NULL, | |
tgid text, | |
tgname text, | |
sitename text, | |
call_timestamp timestamp with time zone DEFAULT now(), | |
length integer | |
); | |
ALTER TABLE public.recordings OWNER TO postgres; | |
-- | |
-- TOC entry 1850 (class 0 OID 62391) | |
-- Dependencies: 161 | |
-- Data for Name: recordings; Type: TABLE DATA; Schema: public; Owner: postgres | |
-- | |
COPY recordings (filename, tgid, tgname, sitename, call_timestamp, length) FROM stdin; | |
2012-09-30-1348998992.35-demo.wav 44028 CanberraBlackMnt 2012-09-30 19:56:35.268+10 254088 | |
2012-09-30-1348998995.69-demo.wav 44028 CanberraBlackMnt 2012-09-30 19:56:38.733+10 256136 | |
2012-09-30-1348998999.93-demo.wav 44028 CanberraBlackMnt 2012-09-30 19:56:45.913+10 587902 | |
2012-09-30-1348999006.13-demo.wav 44028 CanberraBlackMnt 2012-09-30 19:56:54.567+10 698570 | |
2012-09-30-1348999016.18-demo.wav 44028 CanberraBlackMnt 2012-09-30 19:57:00.87+10 481854 | |
2012-09-30-1348999732.25-demo.wav 44028 CanberraBlackMnt 2012-09-30 20:09:14.875+10 234110 | |
2012-10-01-1349049204.29-demo.wav 30004 L GEORG CanberraMtAinsli 2012-10-01 09:53:26.799+10 208816 | |
2012-10-01-1349049226.73-demo.wav 30004 L GEORG CanberraMtAinsli 2012-10-01 09:53:51.106+10 368776 | |
2012-10-01-1349049233.21-demo.wav 30004 L GEORG CanberraBlackMnt 2012-10-01 09:54:09.788+10 1388118 | |
2012-10-01-1349049249.98-demo.wav 30004 L GEORG CanberraBlackMnt 2012-10-01 09:54:17.872+10 663688 | |
2012-10-01-1349049264.24-demo.wav 30004 L GEORG CanberraMtAinsli 2012-10-01 09:54:30.636+10 538760 | |
2012-10-01-1349049270.91-demo.wav 30004 L GEORG CanberraMtAinsli 2012-10-01 09:54:33.547+10 223368 | |
2012-10-01-1349049332.89-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 09:55:35.416+10 211876 | |
2012-10-01-1349049500.43-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 09:58:24.513+10 342452 | |
2012-10-01-1349049504.69-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 09:58:26.976+10 194696 | |
2012-10-01-1349049507.06-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 09:58:29.354+10 194670 | |
2012-10-01-1349049509.44-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 09:58:34.742+10 396850 | |
2012-10-01-1349049779.09-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:03:04.97+10 492576 | |
2012-10-01-1349049786.9-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:03:12.308+10 452698 | |
2012-10-01-1349049792.46-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:03:25.6+10 1095920 | |
2012-10-01-1349049807.7-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:03:31.677+10 290840 | |
2012-10-01-1349049861.14-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:04:25.582+10 373762 | |
2012-10-01-1349049865.67-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:04:28.013+10 198792 | |
2012-10-01-1349049868.1-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:04:39.641+10 964280 | |
2012-10-01-1349049882.76-demo.wav 30004 L GEORG CanberraMtAinsli 2012-10-01 10:05:00.226+10 1464278 | |
2012-10-01-1349049900.31-demo.wav 30004 L GEORG CanberraMtAinsli 2012-10-01 10:05:10.501+10 856174 | |
2012-10-01-1349049931.19-demo.wav 40093 PCL Rural CanberraBlackMnt 2012-10-01 10:05:33.892+10 194482 | |
2012-10-01-1349050089.47-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:08:12.583+10 258960 | |
2012-10-01-1349050092.74-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:08:14.999+10 190600 | |
2012-10-01-1349050095.28-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:08:20.876+10 469114 | |
2012-10-01-1349050101.01-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:08:25.274+10 360540 | |
2012-10-01-1349050181.52-demo.wav 40093 PCL Rural CanberraBlackMnt 2012-10-01 10:09:44.577+10 257894 | |
2012-10-01-1349050559.5-demo.wav 10123 GOULB1 CanberraMtAinsli 2012-10-01 10:16:02.327+10 234682 | |
2012-10-01-1349050565.45-dem |