diff options
| -rw-r--r-- | chimere/forms.py | 4 | ||||
| -rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 50 | ||||
| -rw-r--r-- | chimere/templates/chimere/blocks/alternate_multimedia.html | 2 | ||||
| -rw-r--r-- | chimere/templates/chimere/blocks/routing.html | 5 |
4 files changed, 47 insertions, 14 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index bcf3b8a..5403e21 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -323,6 +323,10 @@ class RouteForm(RouteAdminForm): if k in marker_fields]) marker_dct['status'] = new_route.status categories = [] + if not marker_dct['point']: + first_point = new_route.route.coords[0] + marker_dct['point'] = 'POINT(%f %f)' % (first_point[0], + first_point[1]) new_marker, created = Marker.objects.get_or_create(route=new_route, defaults=marker_dct) if not created: diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index c3ecf0e..0e7def5 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -94,6 +94,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { current_control: null, // To store the current control current_popup: null, // To store the current POI popup displayed current_category: null, // To store the current category clicked in list + current_route_feature: null, // To store the current route find by routing icon_offset: new OpenLayers.Pixel(0, 0), edition: false, // edition mode edition_type_is_route: false, // route or POI edition @@ -679,6 +680,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { settings.routing_start = null; settings.routing_end = null; settings.routing_steps = new Array(); + settings.current_route_feature = null; }, // display a route @@ -695,7 +697,9 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { // create the appropriate URL var uri = extra_url + "route/" var transport = $('input:radio[name=transport]:checked').val(); - uri += transport + "/" + if(transport){ + uri += transport + "/" + } for (var i = 0; i < steps.length; i++) { var step = steps[i].transform( settings.map.getProjectionObject(), @@ -710,7 +714,8 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { success: function (data) { settings.layerRoute.removeAllFeatures(); for (var i = 0; i < data.features.length; i++) { - methods.putRoute(data.features[i]); + settings.current_route_feature = + methods.putRoute(data.features[i]); } settings.map.zoomToExtent( settings.layerRoute.getDataExtent()); @@ -720,8 +725,12 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { $('#chimere_itinerary_content').html( data.properties.description); $('#chimere_itinerary').show(); - $('#chimere_itinerary_form').hide(); - settings.routing_panel_open(); + if(!settings.edition_type_is_route){ + $('#chimere_itinerary_form').hide(); + settings.routing_panel_open(); + } else { + methods.updateRoutingInput(); + } }, error: function (data) { settings.layerRoute.removeAllFeatures(); @@ -748,6 +757,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { current_route.style = style; current_route.geometry = linestring; settings.layerRoute.addFeatures([current_route]); + return current_route; }, display_feature_detail: function (pk) { /* @@ -864,13 +874,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { settings.current_edit_feature = new OpenLayers.Marker(lonlat.clone(), settings.default_icon); settings.layerMarkers.addMarker(settings.current_edit_feature); - lonlat = lonlat.clone().transform(settings.map.getProjectionObject(), - EPSG_DISPLAY_PROJECTION); - $('#id_point').val('POINT(' + lonlat.lon + ' ' + lonlat.lat + ')'); - if($('#live_latitude').length){ - $('#live_latitude').val(lonlat.lat); - $('#live_longitude').val(lonlat.lon); - } + methods.updateMarkerInput(); /* zoom to the point */ if (zoom){ var bounds = settings.layerMarkers.getDataExtent(); @@ -878,6 +882,30 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { } return; }, + updateMarkerInput: function(){ + settings.edition_type_is_route = false; + if (!settings.current_edit_feature) { + return; + } + lonlat = settings.current_edit_feature.lonlat.clone().transform( + settings.map.getProjectionObject(), + EPSG_DISPLAY_PROJECTION); + $('#id_point').val('POINT(' + lonlat.lon + ' ' + lonlat.lat + ')'); + if($('#live_latitude').length){ + $('#live_latitude').val(lonlat.lat); + $('#live_longitude').val(lonlat.lon); + } + + }, + updateRoutingInput: function(){ + settings.edition_type_is_route = true; + if (!settings.current_route_feature) { + return; + } + var current_geo = settings.current_route_feature.geometry.clone(); + current_geo.transform(EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION); + jQuery('#id_route').val(current_geo); + }, activateCurrentControl: function(){ if (settings.current_control){ settings.current_control.activate(); diff --git a/chimere/templates/chimere/blocks/alternate_multimedia.html b/chimere/templates/chimere/blocks/alternate_multimedia.html index e2e7631..ccee804 100644 --- a/chimere/templates/chimere/blocks/alternate_multimedia.html +++ b/chimere/templates/chimere/blocks/alternate_multimedia.html @@ -119,7 +119,7 @@ contener.append(content); if ($('#media_type_image:checked').val() && $("#picture-"+current_image_number+"-picture").val()){ - // the file item cannot be recopied - security issue + // the file field cannot be recopied - security issue // so it is moved var file_item = $('#picture-'+current_image_number+'-picture'); var cloned = file_item.clone(true); diff --git a/chimere/templates/chimere/blocks/routing.html b/chimere/templates/chimere/blocks/routing.html index 20a0606..7272201 100644 --- a/chimere/templates/chimere/blocks/routing.html +++ b/chimere/templates/chimere/blocks/routing.html @@ -8,8 +8,9 @@ {{ hidden }} {% endfor %} {% for field in itinerary_form.visible_fields %} - {% if field.label %}<p><label for='{{field.auto_id}}'>{{ field.label }}</label></p>{%endif%} - <p>{{field}}</p> + <div id='{{field.auto_id}}_div'> + {% if field.label %}<label for='{{field.auto_id}}'>{{ field.label }}</label>{%endif%} + {{field}}</div> {% endfor %} <span id='search_routing'>{% trans "Search" %}</span> </div> |
