<?php | |
header('Content-type: text/css'); | |
ob_start("compress"); | |
function compress($buffer) { | |
/* remove comments */ | |
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); | |
/* remove tabs, spaces, newlines, etc. */ | |
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); | |
return $buffer; | |
} | |
echo ' | |
.ui-li-thumb, .ui-li-icon { position: relative; } | |
.ui-navbar { | |
width: 100%; | |
} | |
.ui-btn-inner { | |
white-space: normal !important; | |
} | |
.ui-li-heading { | |
white-space: normal !important; | |
} | |
.ui-listview-filter { | |
margin: 0 !important; | |
} | |
.ui-icon-navigation { | |
background-image: url('.$_REQUEST['labsPath'].'css/images/113-navigation.png); | |
background-position: 1px 0; | |
} | |
.ui-icon-beaker { | |
background-image: url('.$_REQUEST['labsPath'].'css/images/91-beaker-2.png); | |
background-position: 1px 0; | |
} | |
#footer { | |
text-size: 0.75em; | |
text-align: center; | |
} | |
body { | |
background-color: #F0F0F0; | |
} | |
#jqm-homeheader { | |
text-align: center; | |
} | |
.viaPoints { | |
display: none; | |
text-size: 0.2em; | |
} | |
.min-width-480px .viaPoints { | |
display: inline; | |
} | |
#extrainfo { | |
visibility: hidden; | |
display: none; | |
} | |
#servicewarning { | |
padding: 1em; | |
margin-bottom: 0.5em; | |
text-size: 0.2em; | |
background-color: #FF9; | |
-moz-border-radius: 15px; | |
border-radius: 15px; | |
} | |
#footer { | |
clear:both; | |
text-align:center; | |
} | |
// source http://webaim.org/techniques/skipnav/ | |
#skip a, #skip a:hover, #skip a:visited | |
{ | |
position:absolute; | |
left:0px; | |
top:-500px; | |
width:1px; | |
height:1px; | |
overflow:hidden; | |
} | |
#skip a:active, #skip a:focus | |
{ | |
position:static; | |
width:auto; | |
height:auto; | |
}'; | |
//if (false) | |
echo ' | |
// adaptive layout from jQuery Mobile docs site | |
.type-interior .content-secondary { | |
border-right: 0; | |
border-left: 0; | |
margin: 10px -15px 0; | |
background: #fff; | |
border-top: 1px solid #ccc; | |
} | |
.type-home .ui-content { | |
margin-top: 5px; | |
} | |
.type-interior .ui-content { | |
padding-bottom: 0; | |
} | |
.content-secondary .ui-collapsible-contain { | |
padding: 10px 15px; | |
} | |
.content-secondary .ui-collapsible-heading { | |
margin: 0 0 30px; | |
} | |
.content-secondary .ui-collapsible-heading-collapsed, | |
.content-secondary .ui-collapsible-content { | |
padding:0; | |
margin: 0; | |
} | |
@media all and (min-width: 650px){ | |
.content-secondary { | |
text-align: left; | |
float: left; | |
width: 45%; | |
background: none; | |
border-top: 0; | |
} | |
.content-secondary, | |
.type-interior .content-secondary { | |
margin: 30px 0 20px 2%; | |
padding: 20px 4% 0 0; | |
background: none; | |
} | |
.type-index .content-secondary { | |
padding: 0; | |
} | |
.type-index .content-secondary .ui-listview { | |
margin: 0; | |
} | |
.content-primary { | |
width: 45%; | |
float: right; | |
margin-top: 30px; | |
margin-right: 1%; | |
padding-right: 1%; | |
} | |
.content-primary ul:first-child { | |
margin-top: 0; | |
} | |
.type-interior .content-primary { | |
padding: 1.5em 6% 3em 0; | |
margin: 0; | |
} | |
/* fix up the collapsibles - expanded on desktop */ | |
.content-secondary .ui-collapsible-heading { | |
display: none; | |
} | |
.content-secondary .ui-collapsible-contain { | |
margin:0; | |
} | |
.content-secondary .ui-collapsible-content { | |
display: block; | |
margin: 0; | |
padding: 0; | |
} | |
.type-interior .content-secondary .ui-li-divider { | |
padding-top: 1em; | |
padding-bottom: 1em; | |
} | |
.type-interior .content-secondary { | |
margin: 0; | |
padding: 0; | |
} | |
} | |
@media all and (min-width: 750px){ | |
.type-home .ui-content, | |
.type-interior .ui-content { | |
background-position: 39%; | |
} | |
.content-secondary { | |
width: 34%; | |
} | |
.content-primary { | |
width: 56%; | |
padding-right: 1%; | |
} | |
.type-interior .ui-content { | |
background-position: 34%; | |
} | |
} | |
@media all and (min-width: 1200px){ | |
.type-home .ui-content{ | |
background-position: 38.5%; | |
} | |
.type-interior .ui-content { | |
background-position: 30%; | |
} | |
.content-secondary { | |
width: 30%; | |
padding-right:6%; | |
margin: 30px 0 20px 5%; | |
} | |
.type-interior .content-secondary { | |
margin: 0; | |
padding: 0; | |
} | |
.content-primary { | |
width: 50%; | |
margin-right: 5%; | |
padding-right: 3%; | |
} | |
.type-interior .content-primary { | |
width: 60%; | |
} | |
}'; | |
ob_end_flush(); | |
?> | |
#!/bin/bash | #!/bin/bash |
#dotcloud postinstall | #dotcloud postinstall |
curl http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ | curl http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ |
-o /home/dotcloud/current/cbrfeed.zip | -o /home/dotcloud/current/cbrfeed.zip |
wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ | curl http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ |
-O /tmp/Graph.obj | -o /tmp/Graph.obj |
#db setup | #db setup |
#curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz | #curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz |
#curl https://github.com/maxious/ACTBus-ui/raw/master/lib/postgis.sql -o postgis.sql | #curl https://github.com/maxious/ACTBus-ui/raw/master/lib/postgis.sql -o postgis.sql |
#createlang -d transitdata plpgsql | #createlang -d transitdata plpgsql |
#psql -d transitdata -f postgis.sql | #psql -d transitdata -f postgis.sql |
#gunzip /var/www/transitdata.cbrfeed.sql.gz | #gunzip /var/www/transitdata.cbrfeed.sql.gz |
#psql -d transitdata -f transitdata.cbrfeed.sql | #psql -d transitdata -f transitdata.cbrfeed.sql |
#createuser transitdata -SDRP | #createuser transitdata -SDRP |
#password transitdata | #password transitdata |
#psql -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\" | #psql -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\" |
<?php | <?php |
if (php_uname('n') == "actbus-www") { | if (php_uname('n') == "actbus-www") { |
$conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=bus-main.lambdacomplex.org"); | $conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=bus-main.lambdacomplex.org"); |
} | } |
else if (isDebugServer()) { | else if (isDebugServer()) { |
$conn = new PDO("pgsql:dbname=transitdata;user=postgres;password=snmc;host=localhost"); | $conn = new PDO("pgsql:dbname=transitdata;user=postgres;password=snmc;host=localhost"); |
} | } |
else { | else { |
$conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=localhost"); | $conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=localhost"); |
} | } |
if (!$conn) { | if (!$conn) { |
die("A database error occurred.\n"); | die("A database error occurred.\n"); |
} | } |
if (isDebug()) { | |
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | |
} | |
function databaseError($errMsg) | function databaseError($errMsg) |
{ | { |
die($errMsg); | die($errMsg); |
} | } |
include ('db/route-dao.inc.php'); | include ('db/route-dao.inc.php'); |
include ('db/trip-dao.inc.php'); | include ('db/trip-dao.inc.php'); |
include ('db/stop-dao.inc.php'); | include ('db/stop-dao.inc.php'); |
include ('db/servicealert-dao.inc.php'); | include ('db/servicealert-dao.inc.php'); |
?> | ?> |
<?php | <?php |
// SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',') | // SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',') |
$suburbs = explode(",", "Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O'Connor,O'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla"); | $suburbs = explode(",", "Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O'Connor,O'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla"); |
function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb", $collapsible = true) | function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb", $collapsible = true, $twotone = false) |
{ | { |
global $labsPath; | global $labsPath; |
$width = 300; | $width = 300; |
$height = 300; | $height = 300; |
$metersperpixel[9] = 305.492 * $width; | $metersperpixel[9] = 305.492 * $width; |
$metersperpixel[10] = 152.746 * $width; | $metersperpixel[10] = 152.746 * $width; |
$metersperpixel[11] = 76.373 * $width; | $metersperpixel[11] = 76.373 * $width; |
$metersperpixel[12] = 38.187 * $width; | $metersperpixel[12] = 38.187 * $width; |
$metersperpixel[13] = 19.093 * $width; | $metersperpixel[13] = 19.093 * $width; |
$metersperpixel[14] = 9.547 * $width; | $metersperpixel[14] = 9.547 * $width; |
$metersperpixel[15] = 4.773 * $width; | $metersperpixel[15] = 4.773 * $width; |
$metersperpixel[16] = 2.387 * $width; | //$metersperpixel[16] = 2.387 * $width; |
// $metersperpixel[17]=1.193*$width; | // $metersperpixel[17]=1.193*$width; |
$center = ""; | $center = ""; |
$markers = ""; | $markers = ""; |
$minlat = 999; | $mapwidthinmeters = 50; |
$minlon = 999; | |
$maxlat = 0; | |
$maxlon = 0; | |
if (sizeof($mapPoints) < 1) return "map error"; | if (sizeof($mapPoints) < 1) return "map error"; |
if (sizeof($mapPoints) === 1) { | if (sizeof($mapPoints) === 1) { |
if ($zoom == 0) $zoom = 14; | if ($zoom == 0) $zoom = 14; |
$markers.= "{$mapPoints[0][0]},{$mapPoints[0][1]},$markerimage"; | $markers.= "{$mapPoints[0][0]},{$mapPoints[0][1]},$markerimage"; |
$center = "{$mapPoints[0][0]},{$mapPoints[0][1]}"; | $center = "{$mapPoints[0][0]},{$mapPoints[0][1]}"; |
} | } |
else { | else { |
foreach ($mapPoints as $index => $mapPoint) { | foreach ($mapPoints as $index => $mapPoint) { |
$markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . $markerImage . ($index + 1); | if ($twotone && $index == 0) { |
$markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . "iconr" . ($index + 1); | |
$center = "{$mapPoints[0][0]},{$mapPoints[0][1]}"; | |
} | |
else { | |
$markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . $markerImage . ($index + 1); | |
} | |
if ($index + 1 != sizeof($mapPoints)) $markers.= "|"; | if ($index + 1 != sizeof($mapPoints)) $markers.= "|"; |
if ($mapPoint[0] < $minlat) $minlat = $mapPoint[0]; | $dist = distance($mapPoints[0][0], $mapPoint[0][1], $mapPoint[0], $mapPoint[1]); |
if ($mapPoint[0] > $maxlat) $maxlat = $mapPoint[0]; | $mapwidthinmeters = ($dist > $mapwidthinmeters ? $dist : $mapwidthinmeters); |
if ($mapPoint[1] < $minlon) $minlon = $mapPoint[1]; | |
if ($mapPoint[1] > $maxlon) $maxlon = $mapPoint[1]; | |
$totalLat+= $mapPoint[0]; | $totalLat+= $mapPoint[0]; |
$totalLon+= $mapPoint[1]; | $totalLon+= $mapPoint[1]; |
} | } |
if ($zoom == 0) { | if ($zoom == 0) { |
$mapwidthinmeters = distance($minlat, $minlon, $minlat, $maxlon); | $mapwidthinmeters = distance($minlat, $minlon, $minlat, $maxlon); |
foreach (array_reverse($metersperpixel, true) as $zoomLevel => $maxdistance) { | foreach (array_reverse($metersperpixel, true) as $zoomLevel => $maxdistance) { |
if ($zoom == 0 && $mapwidthinmeters < ($maxdistance + 50)) $zoom = $zoomLevel; | if ($zoom == 0 && $mapwidthinmeters * 1.5 < ($maxdistance)) $zoom = $zoomLevel; |
} | } |
} | } |
$center = $totalLat / sizeof($mapPoints) . "," . $totalLon / sizeof($mapPoints); | $center = $totalLat / sizeof($mapPoints) . "," . $totalLon / sizeof($mapPoints); |
} | } |
$output = ""; | $output = ""; |
if ($collapsible) $output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>'; | if ($collapsible) $output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>'; |
$output.= '<img class="map" src="' . curPageURL() . '/'. $labsPath. '/lib/staticmaplite/staticmap.php?center=' . $center . '&zoom=' . $zoom . '&size=' . $width . 'x' . $height . '&markers=' . | $output.= '<img class="map" src="' . curPageURL() . '/' . $labsPath . '/lib/staticmaplite/staticmap.php?center=' . $center . '&zoom=' . $zoom . '&size=' . $width . 'x' . $height . '&markers=' . $markers . '" width=' . $width . ' height=' . $height . '>'; |
$markers . '" width=' . $width . ' height=' . $height . '>'; | |
if ($collapsible) $output.= '</div>'; | if ($collapsible) $output.= '</div>'; |
return $output; | return $output; |
} | } |
function distance($lat1, $lng1, $lat2, $lng2, $roundLargeValues = false) | function distance($lat1, $lng1, $lat2, $lng2, $roundLargeValues = false) |
{ | { |
$pi80 = M_PI / 180; |