From 11b86a6d8ab226a55fcd2e69c40989ebc2461853 Mon Sep 17 00:00:00 2001
From: Christopher Baines <cb15g11@soton.ac.uk>
Date: Tue, 3 Mar 2015 21:59:00 +0000
Subject: Route improvements

Work towards making the route parts an independant plugin. Also make several
other improvements in the process.
---
 src/leaflet-soton.js | 36 ++++++++++++++++++++++++------------
 1 file changed, 24 insertions(+), 12 deletions(-)

(limited to 'src')

diff --git a/src/leaflet-soton.js b/src/leaflet-soton.js
index 3edb8ba..4488f1a 100644
--- a/src/leaflet-soton.js
+++ b/src/leaflet-soton.js
@@ -548,20 +548,32 @@ SELECT * WHERE {\
                     content.appendChild(table);
                 });
             },
-            busStop: function(properties) {
+            busStop: function(properties, routeLayer) {
                 return getTemplateWrapper(properties, function(content) {
 
-                    var routeList = document.createElement("ul");
-                    routeList.className = "ls-route-list";
+                    var routesList = [];
+                    var routeMasters = routeLayer.getRouteMasters();
 
-                    properties.routes.forEach(function(route) {
-                        var routeLi = document.createElement("li");
-                        routeLi.textContent = route;
+                    for (var routeMasterName in routeMasters) {
+                        var routeMaster = routeMasters[routeMasterName];
 
-                        routeList.appendChild(routeLi);
+                        for (var i in routeMaster.routes) {
+                            var route = routeMaster.routes[i];
+
+                            if (properties.routes.indexOf(route.properties.ref) !== -1) {
+                                routesList.push(route);
+                            }
+                        }
+                    }
+
+                    var routeListControl = L.Control.Route.createRouteList({
+                        routes: routesList
+                    }, function(routeName) {
+                        routeLayer.resetRoutes();
+                        routeLayer.highlightRoute(routeName);
                     });
 
-                    content.appendChild(routeList);
+                    content.appendChild(routeListControl);
 
                     var IFrame = document.createElement('iframe');
                     IFrame.setAttribute('src', 'http://bus.southampton.ac.uk/bus-stop-iframe/' + properties.uri.slice(37)  + ".html")
@@ -885,7 +897,7 @@ SELECT * WHERE {\
                         routeOptions: {
                             onEachFeature: function(feature, layer) {
                                 layer.on('click', function(e) {
-                                    var content = busRouteTemplate(feature.properties);
+                                    var content = LS.infoTemplates.busRoute(feature.properties, routeLayer);
 
                                     map.showInfo(content, e.latlng);
                                 });
@@ -895,7 +907,7 @@ SELECT * WHERE {\
                         stopOptions: {
                             onEachFeature: function(feature, layer) {
                                 layer.on('click', function(e) {
-                                    var content = LS.infoTemplates.busStop(feature.properties);
+                                    var content = LS.infoTemplates.busStop(feature.properties, routeLayer);
 
                                     map.showInfo(content, e.latlng);
                                 });
@@ -905,7 +917,7 @@ SELECT * WHERE {\
                     routeLayer.addTo(map);
 
                     if (options.busRoutes && options.busRouteControl) {
-                        var routeControl = new L.Control.Route(routeLayer, "sidebar", {
+                        var routeControl = new L.Control.RouteSidebar(routeLayer, "sidebar", {
                             routeMasterSort: function(a, b) {
                                 var refs = {
                                     "U1": 1,
@@ -917,7 +929,7 @@ SELECT * WHERE {\
 
                                 return refs[a] - refs[b];
                             },
-                            position: "right"
+                            position: "left"
                         });
                         routeControl.addTo(map);
                         routeControl.show();
-- 
cgit v1.2.3