summaryrefslogtreecommitdiff
path: root/chimere/widgets.py
diff options
context:
space:
mode:
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
commitb5128f3043e3d08e6a89325b246c87439531a930 (patch)
treefa02c0356a1f895ed31c3e75319f19b37bdf2a97 /chimere/widgets.py
parent2e83c74da087e9965f37797314059c8e5420e9b3 (diff)
downloadChimè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.py23
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