Javascript-less navigation using anchor tags on long lists
[bus.git] / busui / routeList.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
include('common.inc.php');
include_header("Routes","routeList");
echo'
                <div data-role="navbar"> 
                        <ul> 
                                <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?bysuburb=yes">By Suburb... </a></li>
                                <li><a href="routeList.php?nearby=yes">Nearby... </a></li>
                        </ul>
                </div>
        ';
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) {
                                echo  '<li>'.$row[1].' <a href="trip.php?routeid='.$row[0].'">'.$row[2]." (".ucwords($row[3]).")</a></li>\n";
                        }
}
 
if ($_REQUEST['bynumber']) {
        $routeSeries = Array();
        $seriesRange = Array();
        foreach ($contents as $key => $row) {
                foreach (explode(" ",$row[1]) as $routeNumber ) {
                        $seriesNum = substr($routeNumber, 0, -1)."0";
                        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;
                }
        }
        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)
        {
                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);
                echo "</ul></li>\n";
        }
} else {
        foreach ($contents as $key => $row) {
            $routeDestinations[$row[2]][]  = $row;
        }
        echo '<div class="noscriptnav"> Go to Destination: ';
                foreach(ksort($routeDestinations) as $destination => $routes) 
                { 
                   echo "<a href=\"#$destination\">$destination</a>&nbsp;"; 
                }
                echo "</div>
                        <script>
                $('.noscriptnav').hide();
                        </script>";
        foreach ($routeDestinations as $destination => $routes)
        {
                echo '<a name="'.$destination.'"></a>';
                echo '<li>'.$destination."... <ul>\n";
                printRoutes($routes);
                echo "</ul></li>\n";
        }
}
echo "</ul>\n";
 
 
include_footer();
?>