Javascript-less navigation using anchor tags on long lists
[bus.git] / busui / routeList.php
blob:a/busui/routeList.php -> blob:b/busui/routeList.php
<?php <?php
include('common.inc.php'); include('common.inc.php');
include_header("Routes"); include_header("Routes");
echo' echo'
<div data-role="navbar"> <div data-role="navbar">
<ul> <ul>
<li><a href="routeList.php" class="ui-btn-active">By Final Destination...</a></li> <li><a href="routeList.php">By Final Destination...</a></li>
<li><a href="routeList.php?bynumber=yes">By Number... </a></li> <li><a href="routeList.php?bynumber=yes">By Number... </a></li>
<li><a href="routeList.php?bysuburb=yes">By Suburb... </a></li> <!--<li><a href="routeList.php?bysuburb=yes">By Suburb... </a></li>-->
</ul> </ul>
</div> </div>
'; ';
echo ' <ul data-role="listview">'; echo ' <ul data-role="listview">';
$url = $APIurl."/json/routes"; $url = $APIurl."/json/routes";
   
$contents = json_decode(getPage($url)); $contents = json_decode(getPage($url));
debug(print_r($contents,true)); debug(print_r($contents,true));
   
function printRoutes($routes){ function printRoutes($routes){
foreach($routes as $row) { foreach($routes as $row) {
echo '<li>'.$row[1].' <a href="trip.php?routeid='.$row[0].'">'.$row[2]." (".ucwords($row[3]).")</a></li>\n"; echo '<li>'.$row[1].' <a href="trip.php?routeid='.$row[0].'">'.$row[2]." (".ucwords($row[3]).")</a></li>\n";
} }
} }
   
if ($_REQUEST['bynumber']) { if ($_REQUEST['bynumber']) {
$routeSeries = Array(); $routeSeries = Array();
  $seriesRange = Array();
foreach ($contents as $key => $row) { foreach ($contents as $key => $row) {
foreach (explode(" ",$row[1]) as $routeNumber ) { foreach (explode(" ",$row[1]) as $routeNumber ) {
$seriesNum = substr($routeNumber, 0, -1)."0"; $seriesNum = substr($routeNumber, 0, -1)."0";
if ($seriesNum == "0") $seriesNum = $routeNumber; if ($seriesNum == "0") $seriesNum = $routeNumber;
  $finalDigit = substr($routeNumber, sizeof($routeNumber)-1, 1);
  if (isset($seriesRange[$seriesNum])) {
  if ($finalDigit < $seriesRange[$seriesNum]['max'])
  $seriesRange[$seriesNum]['max'] = $routeNumber;
  if ($finalDigit > $seriesRange[$seriesNum]['min'])
  $seriesRange[$seriesNum]['min'] = $routeNumber;
  } else {
  $seriesRange[$seriesNum]['max'] = $routeNumber;
  $seriesRange[$seriesNum]['min'] = $routeNumber;
  }
$routeSeries[$seriesNum][$seriesNum."-".$row[1]."-".$row[0]] = $row; $routeSeries[$seriesNum][$seriesNum."-".$row[1]."-".$row[0]] = $row;
   
   
} }
} }
ksort($routeSeries); ksort($routeSeries);
  ksort($seriesRange);
  echo '<div class="noscriptnav"> Go to route numbers: ';
  foreach ($seriesRange as $series => $range)
  {
  if ($range['min'] == $range['max']) echo "<a href=\"#$series\">$series</a>&nbsp;";
  else echo "<a href=\"#$series\">{$range['min']}-{$range['max']}</a>&nbsp;";
  }
  echo "</div>
  <script>
  $('.noscriptnav').hide();
  </script>";
foreach ($routeSeries as $series => $routes) foreach ($routeSeries as $series => $routes)
{ {
echo '<li>'.$series."... <ul>\n"; echo '<a name="'.$series.'"></a>';
  if ($series <= 9) echo '<li>'.$series."<ul>\n";
  else echo "<li>{$seriesRange[$series]['min']}-{$seriesRange[$series]['max']}<ul>\n";
printRoutes($routes); printRoutes($routes);
echo "</ul></li>\n"; echo "</ul></li>\n";
} }
} else { } else {
foreach ($contents as $key => $row) { foreach ($contents as $key => $row) {
$routeDestinations[$row[2]][] = $row; $routeDestinations[$row[2]][] = $row;
} }
  echo '<div class="noscriptnav"> Go to Destination: ';
  foreach($routeDestinations as $destination => $routes)
  {
  echo "<a href=\"#$destination\">$destination</a>&nbsp;";
  }
  echo "</div>
  <script>
  $('.noscriptnav').hide();
  </script>";
foreach ($routeDestinations as $destination => $routes) foreach ($routeDestinations as $destination => $routes)
{ {
  echo '<a name="'.$destination.'"></a>';
echo '<li>'.$destination."... <ul>\n"; echo '<li>'.$destination."... <ul>\n";
printRoutes($routes); printRoutes($routes);
echo "</ul></li>\n"; echo "</ul></li>\n";
} }
} }
echo "</ul>\n"; echo "</ul>\n";
   
   
include_footer(); include_footer();
?> ?>