From a47acfb77d874e62e2d699ae792fbb77c5f8f61a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 20 Feb 2015 21:09:12 +0100 Subject: Change JS transport and route management to be available on startup --- chimere/static/chimere/js/jquery.chimere.js | 31 +++++++++++++++++++---------- chimere/templates/chimere/blocks/map.html | 2 ++ chimere/templatetags/chimere_tags.py | 15 +++++++++++--- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index a9b237f..f9d956e 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -73,6 +73,8 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { routing_end_lat: null, routing_end_lon: null, routing_steps_lonlat: null, + routing_transport: null, + routing_speed: null, // Provide this function to make a custom click event on the marker on_marker_click: null, // Provide this function to override the feature detail display @@ -211,8 +213,12 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { // Make specific params params.checked_categories = settings.checked_categories; params.display_submited = settings.display_submited; - if(settings.current_feature) + if (settings.current_feature) params.current_feature = settings.current_feature.pk; + if (settings.routing_speed) + params.routing_speed = settings.routing_speed; + if (settings.routing_transport) + params.routing_transport = settings.routing_transport; if (settings.routing_start){ lonlat = settings.routing_start.lonlat.clone().transform( EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION); @@ -1106,7 +1112,14 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { } if (settings.routing_end && settings.routing_start) methods.route(); }, - + // change routing speed + routingChangeSpeed: function(speed){ + settings.routing_speed = speed; + }, + // change routing transport + routingChangeTransport: function(transport){ + settings.routing_transport = transport; + }, // add a step on the interface add_step_fx: function (){ settings.itinerary_step_number += 1; @@ -1196,16 +1209,12 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { steps.push(settings.routing_end.lonlat.clone()); // create the appropriate URL var uri = extra_url + "route/" - var transport = $('input[name=transport]:checked').val(); - if(transport){ - uri += transport + "/" - } - var speed = $('#id_speed option:selected').val(); - if(!speed){ - var speed = $('input[name=speed]:checked').val(); + if(settings.routing_transport){ + uri += settings.routing_transport + "/" } - if(speed){ - uri += speed.split('_')[1] + "/" + if(settings.routing_speed){ + //uri += speed.split('_')[1] + "/" + uri += routing_settings.speed + "/" } for (var i = 0; i < steps.length; i++) { var step = steps[i].transform( diff --git a/chimere/templates/chimere/blocks/map.html b/chimere/templates/chimere/blocks/map.html index 07f0618..764d07b 100644 --- a/chimere/templates/chimere/blocks/map.html +++ b/chimere/templates/chimere/blocks/map.html @@ -44,6 +44,8 @@ $(function(){ {% if p_routing_end_lon %}chimere_init_options["routing_end_lon"] = {{ p_routing_end_lon }};{% endif %} {% if p_routing_end_lat %}chimere_init_options["routing_end_lat"] = {{ p_routing_end_lat }};{% endif %} {% if p_routing_steps %}chimere_init_options["routing_steps_lonlat"] = [{{ p_routing_steps }}];{% endif %} + {% if p_routing_transport %}chimere_init_options["routing_transport"] = "{{ p_routing_transport }}";{% endif %} + {% if p_routing_speed %}chimere_init_options["routing_speed"] = "{{ p_routing_speed }}";{% endif %} chimere_init_options["icon_offset"] = new OpenLayers.Pixel({{icon_offset_x}}, {{icon_offset_y}}); chimere_init_options["dynamic_categories"] = {{ dynamic_categories }}; diff --git a/chimere/templatetags/chimere_tags.py b/chimere/templatetags/chimere_tags.py index 1dd091b..15b8afa 100644 --- a/chimere/templatetags/chimere_tags.py +++ b/chimere/templatetags/chimere_tags.py @@ -261,6 +261,13 @@ bounds.extend(new OpenLayers.LonLat(%f, %f)); context_data['checked_categories'] = cat context_data['dynamic_categories'] = 'true' \ if area and area.dynamic_categories else 'false' + if settings.CHIMERE_ROUTING_TRANSPORT: + context_data['p_routing_transport'] = settings.CHIMERE_ROUTING_TRANSPORT[0][0] + if settings.CHIMERE_ROUTING_SPEEDS and \ + context_data['p_routing_transport'] in settings.CHIMERE_ROUTING_SPEEDS: + context_data['p_routing_speed'] = \ + settings.CHIMERE_ROUTING_SPEEDS[ + context_data['p_routing_transport']][0][0] if 'request' not in context: return context_data request = context['request'] @@ -269,10 +276,12 @@ bounds.extend(new OpenLayers.LonLat(%f, %f)); if request.GET: for key in ('zoom', 'lon', 'lat', 'display_submited', 'current_feature', 'routing_start_lon', 'routing_start_lat', - 'routing_end_lon', 'routing_end_lat', 'routing_steps'): + 'routing_end_lon', 'routing_end_lat', 'routing_steps', + 'routing_transport', 'routing_speed'): + p_key = 'p_' + key if key in request.GET and request.GET[key]: - context_data['p_'+key] = request.GET[key] - else: + context_data[p_key] = request.GET[key] + elif p_key not in context_data: context_data['p_'+key] = None if 'checked_categories' in request.GET \ and request.GET['checked_categories']: -- cgit v1.2.3