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-request.inc.php +++ b/include/common-request.inc.php @@ -15,7 +15,7 @@ $nearby = true; } if (isset($_REQUEST['suburb'])) { - $suburb = filter_var($_REQUEST['suburb'], FILTER_SANITIZE_STRING); + $suburb = $_REQUEST['suburb']; } $pageKey = filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT); $lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); --- 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-transit.inc.php +++ b/include/common-transit.inc.php @@ -23,9 +23,12 @@ return 'weekday'; } } -function midnight_seconds() +function midnight_seconds($time = "") { // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html + if ($time != "") { + return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); + } if (isset($_SESSION['time'])) { $time = strtotime($_SESSION['time']); return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); --- 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/labs/myway_timeliness.php +++ b/labs/myway_timeliness.php @@ -1,16 +1,6 @@ prepare($query); -$query->execute(); -if (!$query) { - databaseError($conn->errorInfo()); - return Array(); -} - ?> @@ -19,26 +9,76 @@
--- a/routeList.php +++ b/routeList.php @@ -38,7 +38,7 @@ navbar(); timePlaceSettings(); trackEvent("Route Lists", "Routes By Suburb", $suburb); - $routes = getRoutesbysuburbs($suburb); + $routes = getRoutesBySuburb($suburb); } if (isset($nearby)) { include_header("Routes Nearby", "routeList", true, true); --- 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,39 +1,54 @@ '; +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 "
"; +if($nextTrip) echo 'Next Trip'; +if($prevTrip) echo 'Previous Trip'; +echo "
"; echo ' '; - echo '
'; include_footer(); ?> --- a/tripPlanner.php +++ b/tripPlanner.php @@ -1,6 +1,6 @@ $errorMessage"; + echo "
$errorMessage"; echo '
- +
- +
@@ -34,13 +34,7 @@
'; - 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 {