diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-05-15 19:09:17 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-05-15 19:09:17 +0200 |
commit | 34930e7262e9aa5d826b371a7b4730a1da2030f9 (patch) | |
tree | bbf728fe2b49409c37e45caafefda2bffcec5f5b /chimere | |
parent | a3a33b79b3cd43535a491c8d9762ebde5b5da9b5 (diff) | |
download | Chimère-34930e7262e9aa5d826b371a7b4730a1da2030f9.tar.bz2 Chimère-34930e7262e9aa5d826b371a7b4730a1da2030f9.zip |
Zoom to the current area on edition
Diffstat (limited to 'chimere')
-rw-r--r-- | chimere/models.py | 6 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/live_coordinates.html | 1 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/polygon_edit.html | 1 | ||||
-rw-r--r-- | chimere/templatetags/chimere_tags.py | 6 | ||||
-rw-r--r-- | chimere/widgets.py | 21 |
5 files changed, 23 insertions, 12 deletions
diff --git a/chimere/models.py b/chimere/models.py index 8dacdb7..cc90d63 100644 --- a/chimere/models.py +++ b/chimere/models.py @@ -1575,6 +1575,12 @@ class SimpleArea: return subcats + def getExtent(self): + return (unicode(self.upper_left_corner.x), + unicode(self.upper_left_corner.y), + unicode(self.lower_right_corner.x), + unicode(self.lower_right_corner.y)) + class Layer(models.Model): name = models.CharField(_(u"Name"), max_length=150) diff --git a/chimere/templates/chimere/blocks/live_coordinates.html b/chimere/templates/chimere/blocks/live_coordinates.html index 7e8cfd9..17e0676 100644 --- a/chimere/templates/chimere/blocks/live_coordinates.html +++ b/chimere/templates/chimere/blocks/live_coordinates.html @@ -44,6 +44,7 @@ {% else %} $('#map_edit').chimere('activateDraw'); {% endif %} + $('#map_edit').chimere('zoom', { 'area':%s }); function update_marker_on_map(){ var mylonlat = [$('#live_longitude').val(), diff --git a/chimere/templates/chimere/blocks/polygon_edit.html b/chimere/templates/chimere/blocks/polygon_edit.html index be112d2..f8c7d06 100644 --- a/chimere/templates/chimere/blocks/polygon_edit.html +++ b/chimere/templates/chimere/blocks/polygon_edit.html @@ -26,6 +26,7 @@ function init_map_edit(){% raw %}{{{% endraw %} $('#map_edit').chimere(chimere_init_options); $('#map_edit').chimere('activateDraw'); + $('#map_edit').chimere('zoom', {% raw %} {{ 'area':{zoom} }} {% endraw %}); {% if value %}$('#map_edit').chimere('initFeature', '{{value}}'); {% endif %} {% raw %}}}{% endraw %} diff --git a/chimere/templatetags/chimere_tags.py b/chimere/templatetags/chimere_tags.py index 8242a9e..bdd925f 100644 --- a/chimere/templatetags/chimere_tags.py +++ b/chimere/templatetags/chimere_tags.py @@ -250,11 +250,7 @@ def map(context, map_id='map'): subcat_layer = subcat_layer.filter(areas__pk=area.pk) context_data['area_id'] = area_name if 'zoomout' in context and context['zoomout']: - context_data['zoom'] = "[%s]" % ",".join(( - unicode(area.upper_left_corner.x), - unicode(area.upper_left_corner.y), - unicode(area.lower_right_corner.x), - unicode(area.lower_right_corner.y))) + context_data['zoom'] = "[%s]" % ",".join(area.getExtent()) context_data['display_category_menu'] = area.display_category_menu q_checked = None if not area.display_category_menu: diff --git a/chimere/widgets.py b/chimere/widgets.py index 96d36b9..237c609 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -59,7 +59,7 @@ def getMapJS(area_name=''): return js -def get_map_layers(area_name=''): +def get_map_layers(area_name='', get_area_zoom=False): from chimere.models import Area area = None if area_name: @@ -94,7 +94,12 @@ def get_map_layers(area_name=''): style: 'Road', source: new ol.source.MapQuest({layer: 'osm'}) })""", True)] - return map_layers, default + if not get_area_zoom: + return map_layers, default + if not area: + return map_layers, default, settings.CHIMERE_DEFAULT_ZOOM + zoom = "[%s]" % ",".join(area.getExtent()) + return map_layers, default, zoom class ChosenSelectWidget(forms.Select): @@ -313,7 +318,8 @@ class PointChooserWidget(forms.TextInput): value = None else: value = None - map_layers, default_area = get_map_layers(area_name) + 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] # TODO: manage area return mark_safe( @@ -336,7 +342,8 @@ class PointChooserWidget(forms.TextInput): settings.CHIMERE_DEFAULT_CENTER[1]), settings.CHIMERE_DEFAULT_ZOOM, settings.STATIC_URL, - ", ".join(map_layers) + ", ".join(map_layers), + zoom ) ) @@ -632,7 +639,8 @@ class PolygonChooserWidget(forms.TextInput): val = '' if value: val = str(value) - map_layers, default_area = get_map_layers(area_name) + 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 'OpenLayers' not in js] tpl = render_to_string( @@ -642,13 +650,12 @@ class PolygonChooserWidget(forms.TextInput): 'default_area': "true" if default_area else "false", 'value': value} ) - # TODO: manage area return mark_safe(tpl.format( static_url=settings.STATIC_URL, display_projection=settings.CHIMERE_EPSG_DISPLAY_PROJECTION, projection=settings.CHIMERE_EPSG_PROJECTION, center=list(settings.CHIMERE_DEFAULT_CENTER), - zoom=settings.CHIMERE_DEFAULT_ZOOM, + zoom=zoom, map_layers=", ".join(map_layers) )) |