summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-11-13 22:01:39 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-11-13 22:01:39 +0100
commit40d7d3b373a392b68b43524a4049216b1223c81c (patch)
treec94245ae5f85c82018463628918ebfa3ce19fbb8
parent1def4a4322e699cedd602143586eefa42edfabf8 (diff)
downloadChimère-40d7d3b373a392b68b43524a4049216b1223c81c.tar.bz2
Chimère-40d7d3b373a392b68b43524a4049216b1223c81c.zip
Fail properly when the routing engine don't find a route - JS: manage routing messages
-rw-r--r--chimere/route.py6
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js15
-rw-r--r--chimere/static/chimere/js/nominatim-widget.js3
-rw-r--r--chimere/templates/chimere/blocks/routing.html5
-rw-r--r--chimere/templatetags/chimere_tags.py9
-rw-r--r--example_project/settings.py4
6 files changed, 31 insertions, 11 deletions
diff --git a/chimere/route.py b/chimere/route.py
index 040a7be..eaa762a 100644
--- a/chimere/route.py
+++ b/chimere/route.py
@@ -26,6 +26,7 @@ import os, re, shutil, tempfile
from BeautifulSoup import BeautifulSoup
from subprocess import Popen, PIPE
from django.contrib.gis.gdal import DataSource
+from django.contrib.gis.gdal.error import OGRException
from django.conf import settings
@@ -71,7 +72,10 @@ class RoutinoRouter(Router):
tmp_dir = tempfile.mkdtemp(prefix='chimere_') + os.sep
p = Popen(args, stdout=PIPE, cwd=tmp_dir)
p.communicate()
- ds = DataSource(tmp_dir + 'shortest-track.gpx')
+ try:
+ ds = DataSource(tmp_dir + 'shortest-track.gpx')
+ except OGRException:
+ return [], None, None
if not ds:
return [], None, None
layer = ds[0]
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index 520127b..57943c7 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -1128,6 +1128,10 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
dataType: "json",
success: function (data) {
settings.layerRoute.removeAllFeatures();
+ if (!data.features.length){
+ methods.displayMessage(routing_fail_message);
+ return;
+ }
for (var i = 0; i < data.features.length; i++) {
var feat = data.features[i];
if(feat.type == 'LineString'){
@@ -1144,11 +1148,11 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
var marker = new OpenLayers.Marker(lonlat,
new OpenLayers.Icon(
feat.properties.icon_path,
- new OpenLayers.Size(icon_width,
- icon_height),
- new OpenLayers.Pixel(
- -(icon_width/2),
- -icon_height))
+ new OpenLayers.Size(icon_width,
+ icon_height),
+ new OpenLayers.Pixel(
+ -(icon_width/2),
+ -icon_height))
);
settings.layerRouteMarker.addMarker(marker);
}
@@ -1177,6 +1181,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
console.log(errorThrown);
console.log(textStatus);
settings.layerRoute.removeAllFeatures();
+ methods.displayMessage(routing_fail_message);
}
});
diff --git a/chimere/static/chimere/js/nominatim-widget.js b/chimere/static/chimere/js/nominatim-widget.js
index 80aa03a..99f7034 100644
--- a/chimere/static/chimere/js/nominatim-widget.js
+++ b/chimere/static/chimere/js/nominatim-widget.js
@@ -27,7 +27,8 @@ var nominatim_widget_options = {
$('#'+$(this).attr('id')+'_lat').val(ui.item.lat);
$('#'+$(this).attr('id')+'_lon').val(ui.item.lon);
$('#'+$(this).attr('id')+'_label').html(ui.item.label);
- $('#chimere_'+$(this).attr('id').substring(10)+'_label').html(ui.item.label);
+ $('#chimere_'+$(this).attr('id').substring(10)+'_label').html(
+ ui.item.label);
$('#'+$(this).attr('id')).val(default_nominatim_lbl);
jQuery("#map").chimere("routingInputChange", $(this).attr('id'));
return false;
diff --git a/chimere/templates/chimere/blocks/routing.html b/chimere/templates/chimere/blocks/routing.html
index 15aee04..db97191 100644
--- a/chimere/templates/chimere/blocks/routing.html
+++ b/chimere/templates/chimere/blocks/routing.html
@@ -40,6 +40,9 @@
</div>
</div>
<script language='javascript' type='text/javascript'>
-step_label = "{% trans "Step" %}";
+<!--
+var step_label = "{% trans "Step" %}";
+var routing_fail_message = "{{routing_fail_message|safe}}";
+// -->
</script>
{% endif%}
diff --git a/chimere/templatetags/chimere_tags.py b/chimere/templatetags/chimere_tags.py
index c2d66b4..db62c64 100644
--- a/chimere/templatetags/chimere_tags.py
+++ b/chimere/templatetags/chimere_tags.py
@@ -163,9 +163,12 @@ def map_menu(context):
@register.inclusion_tag('chimere/blocks/routing.html', takes_context=True)
def routing(context):
- context_data = {'routing':settings.CHIMERE_ENABLE_ROUTING,
- 'itinerary_form':context['itinerary_form'],
- 'routing_transport':context['routing_transport']}
+ context_data = {
+ 'routing':settings.CHIMERE_ENABLE_ROUTING,
+ 'itinerary_form':context['itinerary_form'],
+ 'routing_fail_message':_(settings.CHIMERE_ROUTING_FAIL_MESSAGE
+ ).replace('\n', '\\n'),
+ 'routing_transport':context['routing_transport']}
context_data['STATIC_URL'] = settings.STATIC_URL
return context_data
diff --git a/example_project/settings.py b/example_project/settings.py
index 45c7af2..00e2b8c 100644
--- a/example_project/settings.py
+++ b/example_project/settings.py
@@ -95,6 +95,10 @@ CHIMERE_ROUTING_ENGINE = {
'DB_PATH': '/var/local/routino/',
}
+CHIMERE_ROUTING_FAIL_MESSAGE = _(u"Routing engine has failed to find an "
+ u"appropriate route. Start point or end point may be too far from "
+ u"an existing path.")
+
NOMINATIM_URL = 'http://nominatim.openstreetmap.org/search'
# thumbnail