summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitbc1ad1f8452cdbab08b05d3a5bec8bcc5ad0dcae (patch)
treedbfedfc6709f4a2f80d72382ba3450ee9fed02b7
parent1ec422545704e35f9a1fe2eaa5f974cc82d5179f (diff)
downloadIshtar-bc1ad1f8452cdbab08b05d3a5bec8bcc5ad0dcae.tar.bz2
Ishtar-bc1ad1f8452cdbab08b05d3a5bec8bcc5ad0dcae.zip
cm->m / g->kg widget
-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':