diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-12-03 17:41:46 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-12-03 17:41:46 +0100 |
commit | bc1ad1f8452cdbab08b05d3a5bec8bcc5ad0dcae (patch) | |
tree | dbfedfc6709f4a2f80d72382ba3450ee9fed02b7 | |
parent | 1ec422545704e35f9a1fe2eaa5f974cc82d5179f (diff) | |
download | Ishtar-bc1ad1f8452cdbab08b05d3a5bec8bcc5ad0dcae.tar.bz2 Ishtar-bc1ad1f8452cdbab08b05d3a5bec8bcc5ad0dcae.zip |
cm->m / g->kg widget
-rw-r--r-- | archaeological_finds/forms.py | 27 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/CentimeterMeterWidget.html | 21 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/GramKilogramWidget.html | 21 | ||||
-rw-r--r-- | ishtar_common/widgets.py | 30 |
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> 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> 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': |