summaryrefslogtreecommitdiff
path: root/chimere/widgets.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/widgets.py')
-rw-r--r--chimere/widgets.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/chimere/widgets.py b/chimere/widgets.py
index 237c609..2e43b26 100644
--- a/chimere/widgets.py
+++ b/chimere/widgets.py
@@ -75,7 +75,7 @@ def get_map_layers(area_name='', get_area_zoom=False):
map_layers, default = [], None
if area and area.layers.count():
map_layers = [
- [layer.name, layer.layer_code, False]
+ [layer.name, layer.layer_code, False, layer.extra_js_code or '']
for layer in area.layers.order_by('arealayers__order').all()]
def_layer = area.layers.filter(arealayers__default=True)
if def_layer.count():
@@ -88,12 +88,12 @@ def get_map_layers(area_name='', get_area_zoom=False):
map_layers[0][2] = True
elif settings.CHIMERE_DEFAULT_MAP_LAYER:
map_layers = [(_(u"Default layer"), settings.CHIMERE_DEFAULT_MAP_LAYER,
- True)]
+ True, '')]
else:
map_layers = [(u"Mapquest", """new ol.layer.Tile({
style: 'Road',
source: new ol.source.MapQuest({layer: 'osm'})
-})""", True)]
+})""", True, '')]
if not get_area_zoom:
return map_layers, default
if not area:
@@ -320,7 +320,9 @@ class PointChooserWidget(forms.TextInput):
value = None
map_layers, default_area, zoom = get_map_layers(area_name,
get_area_zoom=True)
- map_layers = [js for n, js, default in map_layers if js]
+ map_layers = [js for n, js, default, extra_js in map_layers if js]
+ extra_js = [extra_js for n, js, default, extra_js in map_layers
+ if extra_js]
# TODO: manage area
return mark_safe(
render_to_string('chimere/blocks/live_coordinates.html',
@@ -331,6 +333,7 @@ class PointChooserWidget(forms.TextInput):
'name': name,
'val': val,
'initialized': initialized,
+ 'extra_js': "\n".join(extra_js),
'isvalue': bool(value),
'default_area': "true" if default_area
else "false",
@@ -399,6 +402,8 @@ class RouteChooserWidget(forms.TextInput):
tpl = getMapJS(area_name)
map_layers, default_area = get_map_layers(area_name)
map_layers = [js for nm, js, default in map_layers]
+ extra_js = [extra_js for n, js, default, extra_js in map_layers
+ if extra_js]
js = """
var resolutions;
var zoomOffset;
@@ -413,6 +418,7 @@ class RouteChooserWidget(forms.TextInput):
var CENTER_LONLAT = centerLonLat;
var DEFAULT_ZOOM = %s;
var chimere_init_options = {};
+ %s
chimere_init_options["map_layers"] = [%s];
chimere_init_options['dynamic_categories'] = false;
chimere_init_options['edition'] = true;
@@ -423,7 +429,9 @@ class RouteChooserWidget(forms.TextInput):
settings.CHIMERE_EPSG_PROJECTION,
settings.CHIMERE_DEFAULT_CENTER[0],
settings.CHIMERE_DEFAULT_CENTER[1],
- settings.CHIMERE_DEFAULT_ZOOM, ", ".join(map_layers))
+ settings.CHIMERE_DEFAULT_ZOOM,
+ "\n".join(extra_js),
+ ", ".join(map_layers))
if default_area:
js += "chimere_init_options['selected_map_layer'] = %d;\n" % \
default_area
@@ -643,12 +651,15 @@ class PolygonChooserWidget(forms.TextInput):
get_area_zoom=True)
map_layers = [js for n, js, default in map_layers
if 'OpenLayers' not in js]
+ extra_js = [extra_js for n, js, default, extra_js in map_layers
+ if extra_js]
tpl = render_to_string(
'chimere/blocks/polygon_edit.html',
{'name': name, 'val': val, 'initialized': initialized,
'isvalue': bool(value),
'default_area': "true" if default_area else "false",
- 'value': value}
+ 'value': value, 'extra_js': "\n".join(extra_js),
+ }
)
return mark_safe(tpl.format(
static_url=settings.STATIC_URL,