From 77c4e8a2e20ace72a88bcada608be89dd588f49a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Sat, 25 Aug 2012 03:17:56 +0200 Subject: Improvement in route display and parsing --- chimere/route.py | 25 +++++++++++--- chimere/static/chimere/css/styles.css | 47 +++++++++++++++------------ chimere/static/chimere/js/jquery.chimere.js | 11 +++++-- chimere/static/chimere/js/nominatim-widget.js | 7 ++-- chimere/templates/chimere/blocks/routing.html | 8 +++++ chimere/views.py | 11 ++++--- chimere/widgets.py | 10 ++++-- 7 files changed, 84 insertions(+), 35 deletions(-) diff --git a/chimere/route.py b/chimere/route.py index bc08a39..9c8b59c 100644 --- a/chimere/route.py +++ b/chimere/route.py @@ -67,7 +67,7 @@ class RoutinoRouter(Router): p.communicate() ds = DataSource(tmp_dir + 'shortest-track.gpx') if not ds: - return [], None + return [], None, None layer = ds[0] trk_layer = None for layer in ds: @@ -83,10 +83,27 @@ class RoutinoRouter(Router): for line in open(tmp_dir + 'shortest.html').readlines(): if [True for r in self.re_desc if r.match(line)]: desc.append(BeautifulSoup(line).prettify()) - desc = [''] + desc[1:-2] + [desc[-1], '
'] - desc = BeautifulSoup('\n'.join(desc)).prettify() + total = self.webify(desc[-1]) + desc = desc[1:-2] + # very fragile piece of code but only break the numerotation + number_tpl = '%d.' + desc = [re.sub('', number_tpl % (idx/2+1), d) + if idx % 2 else d + for idx, d in enumerate(desc)] + desc = self.webify(BeautifulSoup('\n'.join(desc)).prettify()) + desc = re.sub(" \[", "", desc) + desc = re.sub(" \]", "", desc) shutil.rmtree(tmp_dir) - return res, desc + return res, desc, total + + @staticmethod + def webify(lbl): + lbl = re.sub("", "", lbl) + lbl = re.sub("", "", lbl) + lbl = re.sub("

{%endif%}

{{field}}

{% endfor %} + {% trans "Search" %}
@@ -23,6 +24,9 @@
+
+ +
{% trans "Start:"%}
@@ -41,6 +45,7 @@ $(document).ready(function() { height: 360, resizable: false }); + $('#search_routing').button({'disabled':true}); $('#routing_button').click(function(){ $('#chimere_itinerary_panel').dialog('open'); }); @@ -51,6 +56,9 @@ $(document).ready(function() { $('#chimere_itinerary_new').click(function(){ $('#map').chimere('routingClear'); }); + $('#search_routing').click(function(){ + $('#map').chimere('route'); + }); }); {% endif%} diff --git a/chimere/views.py b/chimere/views.py index c71b4eb..c8097a1 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -653,13 +653,16 @@ def route(request, area_name, lon1, lat1, lonlat_steps, lon2, lat2, steps = [(steps[i*2], steps[i*2+1]) for i in range(len(steps)/2)] except ValueError: return HttpResponse('no results') - jsons, desc = router.route(lon1, lat1, lon2, lat2, steps=steps, - transport=transport) + jsons, desc, total = router.route(lon1, lat1, lon2, lat2, steps=steps, + transport=transport) if not jsons: return HttpResponse('no results') jsonencoder = simplejson.JSONEncoder() - data = '{"properties":{"description":%s}, "type": "FeatureCollection",'\ - '"features":[%s]}' % (jsonencoder.encode(desc), ",".join(jsons)) + total = jsonencoder.encode(total) + desc = jsonencoder.encode(desc) + data = '{"properties":{"total":%s, "description":%s}, '\ + '"type": "FeatureCollection", "features":[%s]}' % (total, desc, + ",".join(jsons)) return HttpResponse(data) def rss(request, area_name=''): diff --git a/chimere/widgets.py b/chimere/widgets.py index b520fcd..23095c7 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -166,12 +166,18 @@ class NominatimWidget(forms.TextInput): tpl = u""" - + -""" % {'id':name, 'nominatim_url':settings.NOMINATIM_URL} +""" % {'id':name, 'nominatim_url':settings.NOMINATIM_URL, + 'label':_(u"Street, City, Country")} return mark_safe(tpl) class PointChooserWidget(forms.TextInput): -- cgit v1.2.3