Grouping of identical stops on trip view
--- a/common-net.inc.php
+++ b/common-net.inc.php
@@ -9,6 +9,7 @@
$page = curl_exec($ch);
if (curl_errno($ch)) echo "<font color=red> Database temporarily unavailable: " . curl_errno($ch) . " " . curl_error($ch) . "</font><br>";
curl_close($ch);
+ debug(print_r($page,true),"json");
return $page;
}
function curPageURL()
--- a/common-template.inc.php
+++ b/common-template.inc.php
@@ -6,7 +6,7 @@
<html>
<head>
<title>' . $pageTitle . '</title>';
- if (isDebug()) echo '<link rel="stylesheet" href="css/jquery-mobile-1.0a3.css" />
+ if (isDebugServer()) echo '<link rel="stylesheet" href="css/jquery-mobile-1.0a3.css" />
<script type="text/javascript" src="js/jquery-1.5.js"></script>
<script type="text/javascript" src="js/jquery-mobile-1.0a3.js"></script>';
else echo '<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.css" />
--- a/routeList.php
+++ b/routeList.php
@@ -14,7 +14,6 @@
echo ' <ul data-role="listview" data-inset="true">';
$url = $APIurl . "/json/routes";
$contents = json_decode(getPage($url));
-debug(print_r($contents, true));
function printRoutes($routes)
{
foreach ($routes as $row) {
--- a/stop.php
+++ b/stop.php
@@ -36,7 +36,6 @@
echo ' <ul data-role="listview" data-inset="true">';
$url = $APIurl . "/json/stoptrips?stop=" . $stopid . "&time=" . midnight_seconds() . "&service_period=" . service_period();
$trips = json_decode(getPage($url));
-debug(print_r($trips, true));
foreach ($trips as $row) {
echo '<li>';
echo '<h3><a href="trip.php?stopid=' . $stopid . '&tripid=' . $row[1][0] . '">' . $row[1][1];
--- a/stopList.php
+++ b/stopList.php
@@ -1,8 +1,8 @@
<?php
-include('common.inc.php');
-
-function navbar() {
- echo'
+include ('common.inc.php');
+function navbar()
+{
+ echo '
<div data-role="navbar">
<ul>
<li><a href="stopList.php">Timing Points</a></li>
@@ -15,87 +15,85 @@
}
// By suburb
if (isset($_REQUEST['suburbs'])) {
- include_header("Stops by Suburb","stopList");
- navbar();
- echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
- foreach ($suburbs as $suburb) {
- echo '<li><a href="stopList.php?suburb='.urlencode($suburb).'">'.$suburb.'</a></li>';
- }
-echo '</ul>';
-} else {
-// Timing Points / All stops
-
-if ($_REQUEST['allstops']) {
- $url = $APIurl."/json/stops";
- include_header("All Stops","stopList");
- navbar();
- timePlaceSettings();
-} else if ($_REQUEST['nearby']) {
- $url = $APIurl."/json/neareststops?lat={$_SESSION['lat']}&lon={$_SESSION['lon']}&limit=15";
-include_header("Nearby Stops","stopList");
- navbar();
- timePlaceSettings(true);
-} else if ($_REQUEST['suburb']) {
- $suburb = filter_var($_REQUEST['suburb'], FILTER_SANITIZE_STRING);
- $url = $APIurl."/json/stopzonesearch?q=".$suburb;
-include_header("Stops in ".ucwords($suburb),"stopList");
-if (isMetricsOn()) {
-// Create a new Instance of the tracker
-$owa = new owa_php($config);
-// Set the ID of the site being tracked
-$owa->setSiteId($owaSiteID);
-// Create a new event object
-$event = $owa->makeEvent();
-// Set the Event Type, in this case a "video_play"
-$event->setEventType('view_stop_list_suburb');
-// Set a property
-$event->set('stop_list_suburb',$suburb);
-// Track the event
-$owa->trackEvent($event);
- }
- navbar();
-} else {
- $url = $APIurl."/json/timingpoints";
- include_header("Timing Points / Major Stops","stopList");
- navbar();
- timePlaceSettings();
+ include_header("Stops by Suburb", "stopList");
+ navbar();
+ echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
+ foreach ($suburbs as $suburb) {
+ echo '<li><a href="stopList.php?suburb=' . urlencode($suburb) . '">' . $suburb . '</a></li>';
+ }
+ echo '</ul>';
}
- echo '<div class="noscriptnav"> Go to letter: ';
-foreach(range('A','Z') as $letter)
-{
- echo "<a href=\"#$letter\">$letter</a> ";
-}
-echo "</div>
+else {
+ // Timing Points / All stops
+ if ($_REQUEST['allstops']) {
+ $url = $APIurl . "/json/stops";
+ include_header("All Stops", "stopList");
+ navbar();
+ timePlaceSettings();
+ }
+ else if ($_REQUEST['nearby']) {
+ $url = $APIurl . "/json/neareststops?lat={$_SESSION['lat']}&lon={$_SESSION['lon']}&limit=15";
+ include_header("Nearby Stops", "stopList");
+ navbar();
+ timePlaceSettings(true);
+ }
+ else if ($_REQUEST['suburb']) {
+ $suburb = filter_var($_REQUEST['suburb'], FILTER_SANITIZE_STRING);
+ $url = $APIurl . "/json/stopzonesearch?q=" . $suburb;
+ include_header("Stops in " . ucwords($suburb) , "stopList");
+ if (isMetricsOn()) {
+ // Create a new Instance of the tracker
+ $owa = new owa_php($config);
+ // Set the ID of the site being tracked
+ $owa->setSiteId($owaSiteID);
+ // Create a new event object
+ $event = $owa->makeEvent();
+ // Set the Event Type, in this case a "video_play"
+ $event->setEventType('view_stop_list_suburb');
+ // Set a property
+ $event->set('stop_list_suburb', $suburb);
+ // Track the event
+ $owa->trackEvent($event);
+ }
+ navbar();
+ }
+ else {
+ $url = $APIurl . "/json/timingpoints";
+ include_header("Timing Points / Major Stops", "stopList");
+ navbar();
+ timePlaceSettings();
+ }
+ echo '<div class="noscriptnav"> Go to letter: ';
+ foreach (range('A', 'Z') as $letter) {
+ echo "<a href=\"#$letter\">$letter</a> ";
+ }
+ echo "</div>
<script>
$('.noscriptnav').hide();
</script>";
-echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
-$contents = json_decode(getPage($url));
-debug(print_r($contents,true));
-foreach ($contents as $key => $row) {
- $stopName[$key] = $row[1];
-}
-
-// Sort the stops by name
-array_multisort($stopName, SORT_ASC, $contents);
-
-$firstletter = "";
-foreach ($contents as $row)
-{
- if (substr($row[1],0,1) != $firstletter){
- echo "<a name=$firstletter></a>";
- $firstletter = substr($row[1],0,1);
- }
- echo '<li>';
- if (!startsWith($row[5],"Wj")) echo '<img src="css/images/time.png" alt="Timing Point" class="ui-li-icon">';
- echo '<a href="stop.php?stopid='.$row[0].(startsWith($row[5],"Wj") ? '&stopcode='. $row[5] : "") .'">';
- if (isset($_SESSION['lat']) && isset($_SESSION['lon'])){
- echo '<span class="ui-li-count">'.floor(distance($row[2], $row[3], $_SESSION['lat'], $_SESSION['lon'])).'m away</span>';
- }
- echo bracketsMeanNewLine($row[1]);
- echo '</a></li>';
- }
-echo '</ul>';
+ echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
+ $contents = json_decode(getPage($url));
+ foreach ($contents as $key => $row) {
+ $stopName[$key] = $row[1];
+ }
+ // Sort the stops by name
+ array_multisort($stopName, SORT_ASC, $contents);
+ $firstletter = "";
+ foreach ($contents as $row) {
+ if (substr($row[1], 0, 1) != $firstletter) {
+ echo "<a name=$firstletter></a>";
+ $firstletter = substr($row[1], 0, 1);
+ }
+ echo '<li>';
+ if (!startsWith($row[5], "Wj")) echo '<img src="css/images/time.png" alt="Timing Point" class="ui-li-icon">';
+ echo '<a href="stop.php?stopid=' . $row[0] . (startsWith($row[5], "Wj") ? '&stopcode=' . $row[5] : "") . '">';
+ if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
+ echo '<span class="ui-li-count">' . floor(distance($row[2], $row[3], $_SESSION['lat'], $_SESSION['lon'])) . 'm away</span>';
+ }
+ echo bracketsMeanNewLine($row[1]);
+ echo '</a></li>';
+ }
+ echo '</ul>';
}
include_footer();
?>
--- a/trip.php
+++ b/trip.php
@@ -3,21 +3,25 @@
$tripid = filter_var($_REQUEST['tripid'], FILTER_SANITIZE_NUMBER_INT);
$stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT);
$routeid = filter_var($_REQUEST['routeid'], FILTER_SANITIZE_NUMBER_INT);
+$routetrips = Array();
if ($_REQUEST['routeid']) {
$url = $APIurl . "/json/routetrips?route_id=" . $routeid;
- $trips = json_decode(getPage($url));
- debug(print_r($trips, true));
- foreach ($trips as $trip) {
+ $routetrips = json_decode(getPage($url));
+ foreach ($routetrips as $trip) {
if ($trip[0] < midnight_seconds()) {
$tripid = $trip[1];
break;
}
}
- if (!($tripid > 0)) $tripid = $trips[0][1];
+ if (!($tripid > 0)) $tripid = $routetrip[0][1];
}
$url = $APIurl . "/json/triprows?trip=" . $tripid;
$trips = array_flatten(json_decode(getPage($url)));
-debug(print_r($trips, true));
+if (sizeof($routetrips) == 0) {
+ $routeid = $trips[1]->route_id;
+ $url = $APIurl . "/json/routetrips?route_id=" . $trips[1]->route_id;
+ $routetrips = json_decode(getPage($url));
+}
include_header("Stops on " . $trips[1]->route_short_name . ' ' . $trips[1]->route_long_name, "trip");
if (isMetricsOn()) {
// Create a new Instance of the tracker
@@ -36,19 +40,59 @@
$owa->trackEvent($event);
}
timePlaceSettings();
+echo '<p> Other Trips: ';
+foreach ($routetrips as $othertrip) {
+ echo '<a href="trip.php?tripid=' . $othertrip[1] . "&routeid=" . $routeid . '">' . midnight_seconds_to_time($othertrip[0]) . '</a> ';
+}
+echo '</p> Other directions/timing periods: ';
echo ' <ul data-role="listview" data-inset="true">';
$url = $APIurl . "/json/tripstoptimes?trip=" . $tripid;
$json = json_decode(getPage($url));
-debug(print_r($json, true));
$stops = $json[0];
$times = $json[1];
+echo '<li data-role="list-divider">' . midnight_seconds_to_time($times[0]) . '-' . midnight_seconds_to_time($times[sizeof($times) - 1]) . '</li>';
+$stopsGrouped = Array();
foreach ($stops as $key => $row) {
- echo '<li>';
- echo '<h3><a href="stop.php?stopid=' . $row[0] . '">' . bracketsMeanNewLine($row[1]);
- if ($row[0] == $stopid) echo "<br><small> Current Location</small>";
- echo '</a></h3>';
- echo '<p class="ui-li-aside">' . midnight_seconds_to_time($times[$key]) . '</p>';
- echo '</li>';
+ if (($stops[$key][1] != $stops[$key + 1][1]) || $key + 1 >= sizeof($stops)) {
+ echo '<li>';
+ if (!startsWith($row[5], "Wj")) echo '<img src="css/images/time.png" alt="Timing Point" class="ui-li-icon">';
+ if (sizeof($stopsGrouped) > 0) {
+ // print and empty grouped stops
+ // subsequent duplicates
+ $stopsGrouped["stop_ids"][] = $row[0];
+ $stopsGrouped["endTime"] = $times[$key];
+ echo '<a href="stop.php?stopids=' . $stopsGrouped['stop_ids'] . '">';
+ echo '<p class="ui-li-aside">' . midnight_seconds_to_time($stopsGrouped['startTime']) . ' to ' . midnight_seconds_to_time($stopsGrouped['endTime']) . '</p>';
+ echo bracketsMeanNewLine($row[1]);
+ echo '</a></li>';
+ $stopsGrouped = Array();
+ }
+ else {
+ // just a normal stop
+ echo '<a href="stop.php?stopid=' . $row[0] . (startsWith($row[5], "Wj") ? '&stopcode=' . $row[5] : "") . '">';
+ echo '<p class="ui-li-aside">' . midnight_seconds_to_time($times[$key]) . '</p>';
+ echo bracketsMeanNewLine($row[1]);
+ echo '</a></li>';
+ }
+ }
+ else {
+ // this is a duplicated line item
+ if ($key - 1 <= 0 || ($stops[$key][1] != $stops[$key - 1][1])) {
+ // first duplicate
+ $stopsGrouped = Array(
+ "name" => $row[1],
+ "startTime" => $times[$key],
+ "stop_ids" => Array(
+ $row[0]
+ )
+ );
+ }
+ else {
+ // subsequent duplicates
+ $stopsGrouped["stop_ids"][] = $row[0];
+ $stopsGrouped["endTime"] = $times[$key];
+ }
+ }
}
echo '</ul>';
include_footer();