From: maxious
Date: Fri, 15 Jul 2011 04:54:45 +0000
Subject: Merge service alerts relating to stops into their page
X-Git-Url: http://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=94b4506782530c63129d0f229042aeb1b13f4731
---
Merge service alerts relating to stops into their page
---
--- a/include/common-geo.inc.php
+++ b/include/common-geo.inc.php
@@ -1,7 +1,7 @@
$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 ($mapPoint[0] < $minlat) $minlat = $mapPoint[0];
- if ($mapPoint[0] > $maxlat) $maxlat = $mapPoint[0];
- if ($mapPoint[1] < $minlon) $minlon = $mapPoint[1];
- if ($mapPoint[1] > $maxlon) $maxlon = $mapPoint[1];
+ $dist = distance($mapPoints[0][0], $mapPoint[0][1], $mapPoint[0], $mapPoint[1]);
+ $mapwidthinmeters = ($dist > $mapwidthinmeters ? $dist : $mapwidthinmeters);
$totalLat+= $mapPoint[0];
$totalLon+= $mapPoint[1];
}
if ($zoom == 0) {
$mapwidthinmeters = distance($minlat, $minlon, $minlat, $maxlon);
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);
}
$output = "";
if ($collapsible) $output.= 'Open Map...
';
- $output.= '
';
+ $output.= '
';
if ($collapsible) $output.= '
';
return $output;
}
@@ -67,11 +67,11 @@
$c = 2 * atan2(sqrt($a) , sqrt(1 - $a));
$km = $r * $c;
if ($roundLargeValues) {
- if ($km < 1) return floor($km * 1000);
- else return round($km,2)."k";
- } else return floor($km * 1000);
+ if ($km < 1) return floor($km * 1000);
+ else return round($km, 2) . "k";
+ }
+ else return floor($km * 1000);
}
-
function decodePolylineToArray($encoded)
{
// source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5
--- a/include/common-template.inc.php
+++ b/include/common-template.inc.php
@@ -138,21 +138,7 @@
-moz-border-radius: 15px;
border-radius: 15px;
}
-
-/*#leftcolumn {
- float: none;
-}
-.min-width-768px #leftcolumn {
- float: left;
- width: 30%;
-}
-#rightcolumn {
- float: none;
-}
-.min-width-768px #rightcolumn {
- float: right;
- width: 68%;
-}*/
+
#footer {
clear:both;
@@ -175,6 +161,134 @@
width:auto;
height:auto;
}
+
+
+// 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%;
+ }
+}
+
';
if (strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad')) {
echo '
@@ -208,10 +322,6 @@
$(document).ready(function() {
$('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;});
$('#here').show();
- /*if ($.mobile.media('screen and (min-width: 768px)')) {
- $('map a:first').click();
- $('#settings a:first').click();
- }*/
});
";
if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") echo "geolocate();";
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -6,7 +6,7 @@
"phperror",
"awsotp",
//"squallotp",
- "vanilleotp",
+ //"vanilleotp",
"database",
"other"
);
--- a/include/db/servicealert-dao.inc.php
+++ b/include/db/servicealert-dao.inc.php
@@ -2,7 +2,7 @@
function getServiceOverride($date="") {
global $conn;
$query = "Select * from calendar_dates where date = :date and exception_type = '1' LIMIT 1";
- debug($query,"database");
+ // debug($query,"database");
$query = $conn->prepare($query); // Create a prepared statement
$query->bindParam(":date", date("Ymd",($date != "" ? $date : time())));
$query->execute();
@@ -12,4 +12,42 @@
}
return $query->fetch(PDO::FETCH_ASSOC);
}
+
+function getCurrentAlerts() {
+ global $conn;
+ $query = "SELECT * from servicealerts_alerts";
+ //debug($query, "database");
+ $query = $conn->prepare($query);
+ //if ($stop_sequence != "") $query->bindParam(":stop_sequence", $stop_sequence);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+function getInformedAlerts($id,$filter_class,$filter_id) {
+
+ global $conn;
+ $query = "SELECT * from servicealerts_informed where servicealert_id = :servicealert_id";
+
+ if ($filter_class != "" && $filter_id != "") {
+ $query .= " AND (informed_class = :informed_class OR informed_class = 'network') AND informed_id = :informed_id";
+
+ }
+ //debug($query, "database");
+ $query = $conn->prepare($query);
+ if ($filter_class != "" && $filter_id != "") {
+ $query->bindParam(":informed_class", $filter_class);
+ $query->bindParam(":informed_id", $filter_id);
+ }
+ $query->bindParam(":servicealert_id", $id);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
?>
--- a/servicealerts_api.php
+++ b/servicealerts_api.php
@@ -6,48 +6,43 @@
- add,remove,patch
- stop
- trip
+ - network
- patterns (WHERE=)
- route (short_name or route_id)
- street
- stop
- trip */
-/* header {
- gtrtfs_version: "1"
- timestamp: 1307926866
+$return = Array();
+$return['header']['gtrtfs_version'] = "1";
+$return['header']['timestamp'] = time();
+$return['entities'] = Array();
+foreach(getCurrentAlerts() as $alert) {
+ $informedEntities = getInformedAlerts($alert['id'],$_REQUEST['filter_class'],$_REQUEST['filter_id']);
+ if (sizeof($informedEntities) >0) {
+ $entity = Array();
+ $entity['id'] = $alert['id'];
+ $entity['alert']['active_period']['start'] = $alert['start'];
+ $entity['alert']['active_period']['start'] = $alert['end'];
+ $entity['alert']['url']['translation'] = $alert['url'];
+ $entity['alert']['description']['translation'] = $alert['description'];
+
+ foreach ($informedEntities as $informedEntity) {
+ $informed = Array();
+ $informed[$informedEntity['informed_class']."_id"] = $informedEntity['informed_id'];
+ if ($informedEntity['informed_action'] != "") $informed["x-action"] = $informedEntity['informed_action'];
+ //$informed[$informedEntity['class']."_type"] = $informedEntity['type'];
+ $entity['informed'][] = $informed;
+ }
+ $return['entities'][] = $entity;
+ }
}
-entity {
- id: "21393"
- alert {
- active_period {
- start: 1307955600
- end: 1307988000
- }
- informed_entity {
- route_id: "100"
- route_type: 1
- }
- url {
- translation {
- text: "http://trimet.org/alerts/"
- }
- }
- description_text {
- translation {
- text: "Rose Festival fleet departures will cause bridge lifts until around 10 a.m. Expect delays."
- }
- }
- }
-}*/
-$return = Array();
-
-header('Content-Type: text/javascript; charset=utf8');
+//header('Content-Type: text/javascript; charset=utf8');
// header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/');
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
if (isset($_GET['callback'])) {
$json = '(' . json_encode($return) . ');'; //must wrap in parens and end with semicolon
- print_r($_GET['callback'] . $json); //callback is prepended for json-p
-
+ //print_r($_GET['callback'] . $json); //callback is prepended for json-p
}
else echo json_encode($return);
?>
--- a/stop.php
+++ b/stop.php
@@ -12,6 +12,7 @@
// expand out to all platforms
}*/
+
$stops = Array();
$stopPositions = Array();
$stopNames = Array();
@@ -60,7 +61,13 @@
}
}
include_header($stop['stop_name'], "stop");
-echo '';
+/*$serviceAlerts = json_decode(getPage(curPageURL() . "/servicealerts_api.php?filter_class=stop&filter_id=".$stopid) , true);
+
+foreach($serviceAlerts['entities'] as $serviceAlert) {
+ echo ''.$serviceAlert['alert']['description']['translation'].'
';
+}*/
+
+echo '';
timePlaceSettings();
echo $stopLinks;
if (sizeof($stops) > 0) {
@@ -76,7 +83,7 @@
)
)) ;
}
-echo '';
+echo '';
echo ' ';
if (sizeof($allStopsTrips) > 0) {
sktimesort($allStopsTrips,"arrival_time", true);
--- a/stopList.php
+++ b/stopList.php
@@ -47,12 +47,26 @@
include_header("Nearby Stops", "stopList", true, true);
trackEvent("Stop Lists", "Stops Nearby", $_SESSION['lat'] . "," . $_SESSION['lon']);
navbar();
- timePlaceSettings(true);
if (!isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "") {
+ timePlaceSettings(true);
include_footer();
die();
}
$stops = getNearbyStops($_SESSION['lat'], $_SESSION['lon'], 15);
+ echo '';
+ $stopPositions[] = Array(
+ $_SESSION['lat'],
+ $_SESSION['lon']
+ );
+ foreach ($stops as $sub_stop) {
+ $stopPositions[] = Array(
+ $sub_stop["stop_lat"],
+ $sub_stop["stop_lon"]
+ );
+ }
+ echo staticmap($stopPositions, 0, "iconb", true, true);
+ timePlaceSettings(true);
+ echo '';
}
else if (isset($suburb)) {
$stops = getStopsBySuburb($suburb);
@@ -129,6 +143,7 @@
}
}
echo '
';
+ if (isset($nearby)) echo '';
}
include_footer();
?>
--- a/trip.php
+++ b/trip.php
@@ -1,40 +1,54 @@
';
-echo 'View Original Timetable/Map';
+trackEvent("Route/Trip View", "View Route", $trip['route_short_name'] . ' ' . $trip['route_long_name'], $routeid);
+echo '';
+echo 'View Original Timetable/Map';
echo 'Via:
' . viaPointNames($tripid) . '';
echo 'Other Trips:
';
-foreach (getRouteTrips($routeid) as $othertrip) {
- echo '' . str_replace(" ",":00",str_replace(":00"," ",$othertrip['arrival_time'])). ' ';
+$routeTrips = getRouteTrips($routeid);
+foreach ($routeTrips as $key => $othertrip) {
+ if ($othertrip['trip_id']!= $tripid) {
+ echo '' . str_replace(" ", ":00", str_replace(":00", " ", $othertrip['arrival_time'])) . ' ';
+ } else {
+ // skip this trip but look forward/back
+ if ($key-1 > 0) $prevTrip = $routeTrips[$key-1]['trip_id'];
+ if ($key+1 < sizeof($routeTrips)) $nextTrip = $routeTrips[$key+1]['trip_id'];
+
+ }
}
-flush(); @ob_flush();
+flush();
+@ob_flush();
echo 'Other directions/timing periods:
';
+$otherDir = 0;
foreach (getRoutesByNumber($trip['route_short_name']) as $row) {
- if ($row['route_id'] != $routeid) echo '' . $row['route_long_name'] . ' (' . ucwords($row['service_id']) . ') ';
+ if ($row['route_id'] != $routeid) {
+ echo '' . $row['route_long_name'] . ' (' . ucwords($row['service_id']) . ') ';
+ $otherDir++;
+ }
}
-echo '';
-flush(); @ob_flush();
+if ($otherDir == 0) echo "None";
+echo '';
+flush();
+@ob_flush();
+echo "";
echo ' ';
$stopsGrouped = Array();
$tripStopTimes = getTimeInterpolatedTrip($tripid);
-echo '- ' . $tripStopTimes[0]['arrival_time'] . ' to ' . $tripStopTimes[sizeof($tripStopTimes) - 1]['arrival_time'] . ' ' . $trip['route_long_name'] . ' (' . ucwords($tripStopTimes[0]['service_id']).')
';
-
+echo '- ' . $tripStopTimes[0]['arrival_time'] . ' to ' . $tripStopTimes[sizeof($tripStopTimes) - 1]['arrival_time'] . ' ' . $trip['route_long_name'] . ' (' . ucwords($tripStopTimes[0]['service_id']) . ')
';
foreach ($tripStopTimes as $key => $tripStopTime) {
if (($tripStopTimes[$key]["stop_name"] != $tripStopTimes[$key + 1]["stop_name"]) || $key + 1 >= sizeof($tripStopTimes)) {
echo '- ';
@@ -46,27 +60,28 @@
$stopsGrouped["endTime"] = $tripStopTime['arrival_time'];
echo '';
echo '
' . $stopsGrouped['startTime'] . ' to ' . $stopsGrouped['endTime'];
-
- if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
- echo '
' . distance($tripStopTime['stop_lat'],$tripStopTime['stop_lon'], $_SESSION['lat'], $_SESSION['lon'], true) . 'm away';
- }
- echo '
';
+ if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
+ echo '
' . distance($tripStopTime['stop_lat'], $tripStopTime['stop_lon'], $_SESSION['lat'], $_SESSION['lon'], true) . 'm away';
+ }
+ echo '
';
echo bracketsMeanNewLine($tripStopTime["stop_name"]);
echo '';
- flush(); @ob_flush();
+ flush();
+ @ob_flush();
$stopsGrouped = Array();
}
else {
// just a normal stop
echo '';
- echo '' . $tripStopTime['arrival_time'];
+ echo '
' . $tripStopTime['arrival_time'];
if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
- echo '
' . distance($tripStopTime['stop_lat'],$tripStopTime['stop_lon'], $_SESSION['lat'], $_SESSION['lon'], true) . 'm away';
- }
- echo '
';
- echo bracketsMeanNewLine($tripStopTime['stop_name']);
+ echo '
' . distance($tripStopTime['stop_lat'], $tripStopTime['stop_lon'], $_SESSION['lat'], $_SESSION['lon'], true) . 'm away';
+ }
+ echo '';
+ echo bracketsMeanNewLine($tripStopTime['stop_name']);
echo '';
- flush(); @ob_flush();
+ flush();
+ @ob_flush();
}
}
else {
@@ -89,7 +104,6 @@
}
}
echo '';
-
echo '';
include_footer();
?>
--- a/tripPlanner.php
+++ b/tripPlanner.php
@@ -1,6 +1,6 @@
$errorMessage";
+ echo "$errorMessage";
echo '
';
- echo "";
}
function processItinerary($itineraryNumber, $itinerary)
{
@@ -83,7 +77,7 @@
$legArray = object2array($leg);
echo '
Leg #' . ($legNumber + 1) . " ( {$legArray['@mode']} from: {$leg->from->name} to {$leg->to->name}, " . floor($leg->duration / 60000) . " minutes)
\n";
if ($legArray["@mode"] === "BUS") {
- echo "Take bus {$legArray['@route']} " . str_replace("To", "towards", $legArray['@headsign']) . "
";
+ echo "Take bus {$legArray['@route']} " . str_replace("To", "towards", $legArray['@headsign']) . " departing at ". formatTime($leg->startTime)."
";
}
else {
$walkStepMarkers = array();
@@ -117,7 +111,6 @@
}
else if (strpos($to, "(") !== false) {
$toParts = explode("(", $to);
- print_r($toParts);
$toPlace = str_replace( ")", "", $toParts[1]);
}
else {