diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-07-05 19:03:07 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-07-05 19:03:07 +0200 |
commit | b5128f3043e3d08e6a89325b246c87439531a930 (patch) | |
tree | fa02c0356a1f895ed31c3e75319f19b37bdf2a97 /chimere/widgets.py | |
parent | 2e83c74da087e9965f37797314059c8e5420e9b3 (diff) | |
download | Chimère-b5128f3043e3d08e6a89325b246c87439531a930.tar.bz2 Chimère-b5128f3043e3d08e6a89325b246c87439531a930.zip |
Map: manage layer order, manage default layer on a map
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 |