summaryrefslogtreecommitdiff
path: root/chimere
diff options
context:
space:
mode:
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
commit34930e7262e9aa5d826b371a7b4730a1da2030f9 (patch)
treebbf728fe2b49409c37e45caafefda2bffcec5f5b /chimere
parenta3a33b79b3cd43535a491c8d9762ebde5b5da9b5 (diff)
downloadChimère-34930e7262e9aa5d826b371a7b4730a1da2030f9.tar.bz2
Chimère-34930e7262e9aa5d826b371a7b4730a1da2030f9.zip
Zoom to the current area on edition
Diffstat (limited to 'chimere')
-rw-r--r--chimere/models.py6
-rw-r--r--chimere/templates/chimere/blocks/live_coordinates.html1
-rw-r--r--chimere/templates/chimere/blocks/polygon_edit.html1
-rw-r--r--chimere/templatetags/chimere_tags.py6
-rw-r--r--chimere/widgets.py21
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)
))