summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chimere/forms.py4
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js50
-rw-r--r--chimere/templates/chimere/blocks/alternate_multimedia.html2
-rw-r--r--chimere/templates/chimere/blocks/routing.html5
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>