diff options
Diffstat (limited to 'chimere/widgets.py')
-rw-r--r-- | chimere/widgets.py | 23 |
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, |