diff options
Diffstat (limited to 'chimere/widgets.py')
| -rw-r--r-- | chimere/widgets.py | 23 | 
1 files changed, 18 insertions, 5 deletions
| diff --git a/chimere/widgets.py b/chimere/widgets.py index 7209102..ab827d8 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -65,14 +65,21 @@ def get_map_layers(area_name=''):              area = Area.objects.get(default=True)          except ObjectDoesNotExist:              pass -    map_layers = [] +    map_layers, default = [], None      if area and area.layers.count(): -        map_layers = [layer.layer_code for layer in area.layers.all()] +        map_layers = [layer.layer_code +                for layer in area.layers.order_by('arealayers__order').all()] +        def_layer = area.layers.filter(arealayers__default=True) +        if def_layer.count(): +            def_layer = def_layer.all()[0] +            for order, map_layer in enumerate(map_layers): +                if map_layer == def_layer.layer_code: +                    default = order      elif settings.CHIMERE_DEFAULT_MAP_LAYER:          map_layers = [settings.CHIMERE_DEFAULT_MAP_LAYER]      else:          map_layers = ["new OpenLayers.Layer.OSM.Mapnik('Mapnik')"] -    return map_layers +    return map_layers, default  class ChosenSelectWidget(forms.Select):      """ @@ -144,7 +151,7 @@ class PointChooserWidget(forms.TextInput):                      value = None              else:                  value = None -        map_layers = get_map_layers(area_name) +        map_layers, default_area = get_map_layers(area_name)          js = """          OpenLayers.ImgPath = '%schimere/img/';          var EPSG_DISPLAY_PROJECTION = epsg_display_projection = new OpenLayers.Projection('EPSG:%s'); @@ -161,6 +168,9 @@ class PointChooserWidget(forms.TextInput):                settings.CHIMERE_EPSG_PROJECTION, settings.CHIMERE_DEFAULT_CENTER,                settings.CHIMERE_DEFAULT_ZOOM, settings.STATIC_URL,                ", ".join(map_layers)) +        if default_area: +            js += "chimere_init_options['selected_map_layer'] = %d;\n" % \ +                  default_area          #TODO: manage area          tpl = u"<script type='text/javascript'><!--\n"\                u"%s// !--></script>\n" % js @@ -220,7 +230,7 @@ class RouteChooserWidget(forms.TextInput):          Render a map and latitude, longitude information field          '''          tpl = getMapJS(area_name) -        map_layers = get_map_layers(area_name) +        map_layers, default_area = get_map_layers(area_name)          js = """          OpenLayers.ImgPath = '%schimere/img/';          var EPSG_DISPLAY_PROJECTION = epsg_display_projection = new OpenLayers.Projection('EPSG:%s'); @@ -236,6 +246,9 @@ class RouteChooserWidget(forms.TextInput):          """ % (settings.STATIC_URL, settings.CHIMERE_EPSG_DISPLAY_PROJECTION,                settings.CHIMERE_EPSG_PROJECTION, settings.CHIMERE_DEFAULT_CENTER,                settings.CHIMERE_DEFAULT_ZOOM, ", ".join(map_layers)) +        if default_area: +            js += "chimere_init_options['selected_map_layer'] = %d;\n" % \ +                  default_area          tpl = u"<script type='text/javascript'><!--\n"\                u"%s// !--></script>\n" % js          #TODO: manage area | 
