--- a/include/common-geo.inc.php +++ b/include/common-geo.inc.php @@ -1,7 +1,7 @@ <?php // 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"); -function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb", $collapsible = true) +function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb", $collapsible = true, $twotone = false) { global $labsPath; $width = 300; @@ -13,14 +13,11 @@ $metersperpixel[13] = 19.093 * $width; $metersperpixel[14] = 9.547 * $width; $metersperpixel[15] = 4.773 * $width; - $metersperpixel[16] = 2.387 * $width; + //$metersperpixel[16] = 2.387 * $width; // $metersperpixel[17]=1.193*$width; $center = ""; $markers = ""; - $minlat = 999; - $minlon = 999; - $maxlat = 0; - $maxlon = 0; + $mapwidthinmeters = 50; if (sizeof($mapPoints) < 1) return "map error"; if (sizeof($mapPoints) === 1) { if ($zoom == 0) $zoom = 14; @@ -29,27 +26,30 @@ } else { 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 ($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.= '<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=' . -$markers . '" width=' . $width . ' height=' . $height . '>'; + $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 . '>'; if ($collapsible) $output.= '</div>'; 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.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 @@ -12,4 +12,33 @@ } 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 = :id"; + debug($query, "database"); + $query = $conn->prepare($query); + $query->bindParam(":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'],$filter_class,$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/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 '<span class="content-secondary">'; + $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 '</span><span class="content-primary">'; } else if (isset($suburb)) { $stops = getStopsBySuburb($suburb); @@ -129,6 +143,7 @@ } } echo '</ul>'; + if (isset($nearby)) echo '</span>'; } include_footer(); ?>
--- a/trip.php +++ b/trip.php @@ -9,15 +9,23 @@ $trip = getTrip($tripid); $routeid = $trip["route_id"]; } -$routetrips = getRouteTrips($routeid); + include_header("Stops on " . $trip['route_short_name'] . ' ' . $trip['route_long_name'], "trip"); trackEvent("Route/Trip View", "View Route", $trip['route_short_name'] . ' ' . $trip['route_long_name'], $routeid); echo '<span class="content-secondary">'; echo '<a href="' . $trip['route_url'] . '">View Original Timetable/Map</a>'; echo '<h2>Via:</h2> <small>' . viaPointNames($tripid) . '</small>'; echo '<h2>Other Trips:</h2> '; -foreach (getRouteTrips($routeid) as $othertrip) { +$routeTrips = getRouteTrips($routeid); +foreach ($routeTrips as $key => $othertrip) { + if ($othertrip['trip_id']!= $tripid) { echo '<a href="trip.php?tripid=' . $othertrip['trip_id'] . "&routeid=" . $routeid . '">' . str_replace(" ", ":00", str_replace(":00", " ", $othertrip['arrival_time'])) . '</a> '; + } 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(); @@ -33,6 +41,10 @@ echo '</span><span class="content-primary">'; flush(); @ob_flush(); +echo "<div class='ui-header' style='overflow: visible; height: 1.5em'>"; +if($nextTrip) echo '<a href="trip.php?tripid=' . $nextTrip . "&routeid=" . $routeid . '" data-icon="arrow-r" class="ui-btn-right">Next Trip</a>'; +if($prevTrip) echo '<a href="trip.php?tripid=' . $prevTrip . "&routeid=" . $routeid . '" data-icon="arrow-l" class="ui-btn-left">Previous Trip</a>'; +echo "</div>"; echo ' <ul data-role="listview" data-inset="true">'; $stopsGrouped = Array(); $tripStopTimes = getTimeInterpolatedTrip($tripid);
--- a/tripPlanner.php +++ b/tripPlanner.php @@ -77,7 +77,7 @@ $legArray = object2array($leg); echo '<h3>Leg #' . ($legNumber + 1) . " ( {$legArray['@mode']} from: {$leg->from->name} to {$leg->to->name}, " . floor($leg->duration / 60000) . " minutes) </h3>\n"; if ($legArray["@mode"] === "BUS") { - echo "Take bus {$legArray['@route']} " . str_replace("To", "towards", $legArray['@headsign']) . "<br>"; + echo "Take bus {$legArray['@route']} " . str_replace("To", "towards", $legArray['@headsign']) . " departing at ". formatTime($leg->startTime)."<br>"; } else { $walkStepMarkers = array();