summaryrefslogtreecommitdiff
path: root/chimere/widgets.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/widgets.py')
-rw-r--r--chimere/widgets.py100
1 files changed, 46 insertions, 54 deletions
diff --git a/chimere/widgets.py b/chimere/widgets.py
index e7d104a..e357268 100644
--- a/chimere/widgets.py
+++ b/chimere/widgets.py
@@ -36,7 +36,7 @@ from django.template.loader import render_to_string
import re
-def getMapJS(area_name=''):
+def getMapJS(map_name=''):
'''Variable initialization for drawing the map
'''
# projection, center and bounds definitions
@@ -53,30 +53,30 @@ def getMapJS(area_name=''):
js += u"var map_layer = %s;\n" % settings.CHIMERE_DEFAULT_MAP_LAYER
js += u"var restricted_extent;\n"
- if area_name:
- js += u"var area_name='%s';\n" % area_name
+ if map_name:
+ js += u"var map_name='%s';\n" % map_name
js = u"<script type='text/javascript'><!--\n"\
u"%s// !--></script>\n" % js
return js
-def get_map_layers(area_name=''):
- from chimere.models import Area
- area = None
- if area_name:
+def get_map_layers(map_name='', force_default=False):
+ from chimere.models import Map
+ map = None
+ if map_name:
try:
- area = Area.objects.get(urn=area_name)
+ map = Map.objects.get(urn=map_name)
except ObjectDoesNotExist:
pass
else:
try:
- area = Area.objects.get(default=True)
+ map = Map.objects.get(default=True)
except ObjectDoesNotExist:
pass
map_layers, default = [], None
- if area and area.layers.count():
+ if not force_default and map and map.layers.count():
map_layers = [[layer.name, layer.layer_code, False]
- for layer in area.layers.order_by('arealayers__order').all()]
- def_layer = area.layers.filter(arealayers__default=True)
+ for layer in map.layers.order_by('maplayers__order').all()]
+ def_layer = map.layers.filter(maplayers__default=True)
if def_layer.count():
def_layer = def_layer.all()[0]
for order, map_layer in enumerate(map_layers):
@@ -85,7 +85,7 @@ def get_map_layers(area_name=''):
map_layers[order][2] = True
else:
map_layers[0][2] = True
- elif settings.CHIMERE_DEFAULT_MAP_LAYER:
+ elif not force_default and settings.CHIMERE_DEFAULT_MAP_LAYER:
map_layers = [(_(u"Default layer"), settings.CHIMERE_DEFAULT_MAP_LAYER,
True)]
else:
@@ -225,23 +225,11 @@ class DatePickerWidget(forms.TextInput):
class NominatimWidget(forms.TextInput):
class Media:
js = ["%schimere/js/nominatim-widget.js" % settings.STATIC_URL]
- def render(self, name, value, attrs=None, area_name=''):
- tpl = u"""
-<input type='hidden' name='nominatim_%(id)s_lat' id='nominatim_%(id)s_lat'/>
-<input type='hidden' name='nominatim_%(id)s_lon' id='nominatim_%(id)s_lon'/>
-<input type='text' class='nominatim-widget' name='nominatim_%(id)s' id='nominatim_%(id)s' value=""/>
-<label class='nominatim-label' id='nominatim_%(id)s_label'>&nbsp;</label>
-<script type='text/javascript'>
-var default_nominatim_lbl = "%(label)s";
-var nominatim_url = "%(nominatim_url)s";
-$("#nominatim_%(id)s").val(default_nominatim_lbl);
-$("#nominatim_%(id)s").click(function(){
- $("#nominatim_%(id)s").val('');
-});
-</script>
-""" % {'id':name, 'nominatim_url':settings.NOMINATIM_URL,
- 'label':_(u"Street, City, Country")}
- return mark_safe(tpl)
+ def render(self, name, value=None, attrs=None, map_name=''):
+ return mark_safe(
+ render_to_string('chimere/blocks/nominatim_widget.html',
+ {'id':name, 'nominatim_url':settings.NOMINATIM_URL}
+ ))
class PointChooserWidget(forms.TextInput):
"""
@@ -249,11 +237,11 @@ class PointChooserWidget(forms.TextInput):
"""
class Media:
css = {
- "all": settings.OSM_CSS_URLS + \
+ "all": settings.MAP_CSS_URLS[settings.CHIMERE_EDIT_RENDERER] + \
["%schimere/css/forms.css" % settings.STATIC_URL,]
}
- js = settings.OSM_JS_URLS + list(settings.JQUERY_JS_URLS) + \
- ["%schimere/js/jquery.chimere.js" % settings.STATIC_URL]
+ js = list(settings.JQUERY_JS_URLS) + \
+ settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER]
def render(self, name, value, attrs=None, area_name='', initialized=True):
'''
@@ -273,9 +261,12 @@ class PointChooserWidget(forms.TextInput):
value = None
else:
value = None
- map_layers, default_area = get_map_layers(area_name)
+ force = False
+ if settings.CHIMERE_EDIT_RENDERER != settings.CHIMERE_VIEW_RENDERER:
+ force = True
+ map_layers, default_map = get_map_layers(map_name, force_default=force)
map_layers = [js for n, js, default in map_layers]
- #TODO: manage area
+ #TODO: manage maps
return mark_safe(
render_to_string('chimere/blocks/live_coordinates.html',
{'lat': _("Latitude"),
@@ -286,7 +277,7 @@ class PointChooserWidget(forms.TextInput):
'val': val,
'initialized': initialized,
'isvalue': bool(value),
- 'default_area': "true" if default_area else "false",
+ 'default_map': "true" if default_map else "false",
}) % \
(settings.STATIC_URL,
settings.CHIMERE_EPSG_DISPLAY_PROJECTION,
@@ -331,20 +322,21 @@ class RouteChooserWidget(forms.TextInput):
Manage the edition of route on a map
"""
class Media:
- css = {"all": settings.OSM_CSS_URLS + \
- ["%schimere/css/forms.css" % settings.STATIC_URL,]
+ css = {
+ "all": settings.MAP_CSS_URLS[settings.CHIMERE_EDIT_RENDERER] + \
+ ["%schimere/css/forms.css" % settings.STATIC_URL,]
}
- js = settings.OSM_JS_URLS + list(settings.JQUERY_JS_URLS) + \
- ["%schimere/js/jquery.chimere.js" % settings.STATIC_URL,
- "%schimere/js/edit_route_map.js" % settings.STATIC_URL,
+ js = list(settings.JQUERY_JS_URLS) + \
+ settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER] + \
+ ["%schimere/js/edit_route_map.js" % settings.STATIC_URL,
"%schimere/js/base.js" % settings.STATIC_URL,]
- def render(self, name, value, attrs=None, area_name='', routefile_id=None):
+ def render(self, name, value, attrs=None, map_name='', routefile_id=None):
'''
Render a map and latitude, longitude information field
'''
- tpl = getMapJS(area_name)
- map_layers, default_area = get_map_layers(area_name)
+ tpl = getMapJS(map_name)
+ map_layers, default_map = get_map_layers(map_name)
map_layers = [js for nm, js, default in map_layers]
js = """
var resolutions;
@@ -366,12 +358,12 @@ class RouteChooserWidget(forms.TextInput):
settings.CHIMERE_EPSG_DISPLAY_PROJECTION,
settings.CHIMERE_EPSG_PROJECTION, settings.CHIMERE_DEFAULT_CENTER,
settings.CHIMERE_DEFAULT_ZOOM, ", ".join(map_layers))
- if default_area:
+ if default_map:
js += "chimere_init_options['selected_map_layer'] = %d;\n" % \
- default_area
+ default_map
tpl = u"<script type='text/javascript'><!--\n"\
u"%s// !--></script>\n" % js
- #TODO: manage area
+ #TODO: manage maps
help_create = ''
if not value:
help_create = u"<h3>%s</h3>\n"\
@@ -464,15 +456,15 @@ class RouteField(models.LineStringField):
class AreaWidget(forms.TextInput):
"""
- Manage the edition of an area on the map
+ Manage the edition of an areaon the map
"""
class Media:
css = {
- "all": settings.OSM_CSS_URLS + \
+ "all": settings.MAP_CSS_URLS[settings.CHIMERE_EDIT_RENDERER] + \
["%schimere/css/forms.css" % settings.STATIC_URL,]
}
- js = settings.OSM_JS_URLS + [
- "%schimere/js/edit_area.js" % settings.STATIC_URL,
+ js = settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER] + \
+ ["%schimere/js/edit_area.js" % settings.STATIC_URL,
"%schimere/js/base.js" % settings.STATIC_URL,]
def get_bounding_box_from_value(self, value):
@@ -567,11 +559,11 @@ class ImportFiltrWidget(AreaWidget):
"""
class Media:
css = {
- "all": settings.OSM_CSS_URLS + \
+ "all": settings.MAP_CSS_URLS[settings.CHIMERE_EDIT_RENDERER] + \
["%schimere/css/forms.css" % settings.STATIC_URL,]
}
- js = settings.OSM_JS_URLS + [
- "%schimere/js/edit_area.js" % settings.STATIC_URL,
+ js = settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER] + \
+ ["%schimere/js/edit_area.js" % settings.STATIC_URL,
"%schimere/js/base.js" % settings.STATIC_URL,]
def render(self, name, value, attrs=None):