From 11b86a6d8ab226a55fcd2e69c40989ebc2461853 Mon Sep 17 00:00:00 2001 From: Christopher Baines 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