summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/forms.py27
-rw-r--r--ishtar_common/templates/blocks/CentimeterMeterWidget.html21
-rw-r--r--ishtar_common/templates/blocks/GramKilogramWidget.html21
-rw-r--r--ishtar_common/widgets.py30
4 files changed, 90 insertions, 9 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 66f99d08b..9e64a901a 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -199,19 +199,28 @@ class BaseFindForm(CustomForm, ManageOldType):
label=_(u"Comment on dating"), required=False, widget=forms.Textarea)
HEADERS['length'] = FormHeader(_(u"Dimensions"))
- length = FloatField(label=_(u"Length (cm)"), required=False)
- width = FloatField(label=_(u"Width (cm)"), required=False)
- height = FloatField(label=_(u"Height (cm)"), required=False)
- diameter = FloatField(label=_(u"Diameter (cm)"), required=False)
- thickness = FloatField(label=_(u"Thickness (cm)"), required=False)
+ length = FloatField(label=_(u"Length (cm)"),
+ widget=widgets.CentimeterMeterWidget, required=False)
+ width = FloatField(label=_(u"Width (cm)"), required=False,
+ widget=widgets.CentimeterMeterWidget)
+ height = FloatField(label=_(u"Height (cm)"),
+ widget=widgets.CentimeterMeterWidget, required=False)
+ thickness = FloatField(label=_(u"Thickness (cm)"),
+ widget=widgets.CentimeterMeterWidget, required=False)
+ diameter = FloatField(label=_(u"Diameter (cm)"),
+ widget=widgets.CentimeterMeterWidget, required=False)
volume = FloatField(label=_(u"Volume (l)"), required=False)
- weight = FloatField(label=_(u"Weight (g)"), required=False)
+ weight = FloatField(label=_(u"Weight (g)"),
+ widget=widgets.GramKilogramWidget, required=False)
clutter_long_side = FloatField(
- label=_(u"Clutter long side (cm)"), required=False)
+ label=_(u"Clutter long side (cm)"),
+ widget=widgets.CentimeterMeterWidget, required=False)
clutter_short_side = FloatField(
- label=_(u"Clutter short side (cm)"), required=False)
+ label=_(u"Clutter short side (cm)"),
+ widget=widgets.CentimeterMeterWidget, required=False)
clutter_height = FloatField(
- label=_(u"Clutter height (cm)"), required=False)
+ label=_(u"Clutter height (cm)"),
+ widget=widgets.CentimeterMeterWidget, required=False)
dimensions_comment = forms.CharField(
label=_(u"Dimensions comment"), required=False, widget=forms.Textarea)
diff --git a/ishtar_common/templates/blocks/CentimeterMeterWidget.html b/ishtar_common/templates/blocks/CentimeterMeterWidget.html
new file mode 100644
index 000000000..00c1614b5
--- /dev/null
+++ b/ishtar_common/templates/blocks/CentimeterMeterWidget.html
@@ -0,0 +1,21 @@
+<div class="input-group">
+ <input class="area_widget form-control" type="text"{{final_attrs|safe}}>
+ <div class="input-group-append">
+ <div class="input-group-text">
+ {{unit}} (<span id="meter_{{id}}">0</span>&nbsp;m)
+ </div>
+ </div>
+</div>
+<script type="text/javascript"><!--//
+ function evaluate_{{safe_id}}(){
+ value = parseFloat($("#{{id}}").val());
+ if(!isNaN(value)){
+ value = value/100;
+ } else {
+ value = 0;
+ }
+ $("#meter_{{id}}").html(value);
+ }
+ $("#{{id}}").keyup(evaluate_{{safe_id}});
+ $(document).ready(evaluate_{{safe_id}}());
+//--></script>
diff --git a/ishtar_common/templates/blocks/GramKilogramWidget.html b/ishtar_common/templates/blocks/GramKilogramWidget.html
new file mode 100644
index 000000000..27c066d13
--- /dev/null
+++ b/ishtar_common/templates/blocks/GramKilogramWidget.html
@@ -0,0 +1,21 @@
+<div class="input-group">
+ <input class="area_widget form-control" type="text"{{final_attrs|safe}}>
+ <div class="input-group-append">
+ <div class="input-group-text">
+ {{unit}} (<span id="kg_{{id}}">0</span>&nbsp;kg)
+ </div>
+ </div>
+</div>
+<script type="text/javascript"><!--//
+ function evaluate_{{safe_id}}(){
+ value = parseFloat($("#{{id}}").val());
+ if(!isNaN(value)){
+ value = value/1000;
+ } else {
+ value = 0;
+ }
+ $("#kg_{{id}}").html(value);
+ }
+ $("#{{id}}").keyup(evaluate_{{safe_id}});
+ $(document).ready(evaluate_{{safe_id}}());
+//--></script>
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index f668ee534..326966064 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -470,6 +470,36 @@ class SquareMeterWidget(forms.TextInput):
return mark_safe(rendered)
+class GramKilogramWidget(forms.TextInput):
+ def render(self, name, value, attrs=None, renderer=None):
+ if not value:
+ value = u""
+ final_attrs = flatatt(
+ self.build_attrs(attrs, {"name": name, "value": value}))
+ dct = {'final_attrs': final_attrs,
+ 'unit': u"g",
+ 'id': attrs['id'],
+ "safe_id": attrs['id'].replace('-', '_')}
+ t = loader.get_template('blocks/GramKilogramWidget.html')
+ rendered = t.render(dct)
+ return mark_safe(rendered)
+
+
+class CentimeterMeterWidget(forms.TextInput):
+ def render(self, name, value, attrs=None, renderer=None):
+ if not value:
+ value = u""
+ final_attrs = flatatt(
+ self.build_attrs(attrs, {"name": name, "value": value}))
+ dct = {'final_attrs': final_attrs,
+ 'unit': u"cm",
+ 'id': attrs['id'],
+ "safe_id": attrs['id'].replace('-', '_')}
+ t = loader.get_template('blocks/CentimeterMeterWidget.html')
+ rendered = t.render(dct)
+ return mark_safe(rendered)
+
+
AreaWidget = forms.TextInput
if settings.SURFACE_UNIT == 'square-metre':