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): | 
