summaryrefslogtreecommitdiff
path: root/chimere/widgets.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/widgets.py')
-rw-r--r--chimere/widgets.py29
1 files changed, 22 insertions, 7 deletions
diff --git a/chimere/widgets.py b/chimere/widgets.py
index d5e502e..e357268 100644
--- a/chimere/widgets.py
+++ b/chimere/widgets.py
@@ -243,11 +243,11 @@ class PointChooserWidget(forms.TextInput):
js = list(settings.JQUERY_JS_URLS) + \
settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER]
- def render(self, name, value, attrs=None, map_name=''):
+ def render(self, name, value, attrs=None, area_name='', initialized=True):
'''
Render a map and latitude, longitude information field
'''
- val = '0'
+ val = ''
value_x, value_y = 0, 0
if value:
val = str(value)
@@ -275,6 +275,7 @@ class PointChooserWidget(forms.TextInput):
'value_x': value_x,
'name': name,
'val': val,
+ 'initialized': initialized,
'isvalue': bool(value),
'default_map': "true" if default_map else "false",
}) % \
@@ -288,12 +289,26 @@ class PointChooserWidget(forms.TextInput):
)
)
+class HiddenPointChooserWidget(PointChooserWidget):
+ """
+ OpenLayers doesn't initialize well on an hidden field so specific JS
+ must be loaded.
+ """
+ def render(self, *args, **kwargs):
+ kwargs['initialized'] = False
+ return super(HiddenPointChooserWidget, self).render(*args, **kwargs)
+
class PointField(models.PointField):
'''
Set the widget for the form field
'''
+ def __init__(self, *args, **kwargs):
+ self.widget = kwargs.pop('widget') if 'widget' in kwargs \
+ else PointChooserWidget
+ return super(PointField, self).__init__(*args, **kwargs)
+
def formfield(self, **keys):
- defaults = {'widget': PointChooserWidget}
+ defaults = {'widget': self.widget}
keys.update(defaults)
return super(PointField, self).formfield(**keys)
@@ -504,19 +519,19 @@ class AreaWidget(forms.TextInput):
help_msg = _(u"Hold CTRL, click and drag to select area on the map")
tpl += u"<p class='help-osm'>%s</p>\n" % help_msg
tpl += u"<script type='text/javascript'>\n"
- tpl += u"function init_map_form (){\ninit();\n"
+ tpl += u"function init_map_form (){\ninit('map_edit_area');\n"
if value:
tpl += u"var extent = new OpenLayers.Bounds(%f, %f, %f, %f);\n"\
u"extent.transform(epsg_display_projection, epsg_projection);\n"\
u"updateForm(extent);\n"\
- u"map.zoomToExtent(extent, true);\n"\
- u"map.zoomOut();" % (upper_left_lon, upper_left_lat,
+ u"area_map.zoomToExtent(extent, true);\n"\
+ u"area_map.zoomOut();" % (upper_left_lon, upper_left_lat,
lower_right_lon, lower_right_lat)
tpl += u"}\n"
if initialized:
tpl += u"$(document).ready(function($) {init_map_form()});\n"
tpl += u"</script>\n"
- tpl += u"<div id='map_edit'>\n"
+ tpl += u"<div id='map_edit_area'>\n"
return mark_safe(tpl)
def value_from_datadict(self, data, files, name):