diff options
Diffstat (limited to 'chimere/widgets.py')
-rw-r--r-- | chimere/widgets.py | 100 |
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'> </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): |