add location input fields
This commit is contained in:
		@@ -48,11 +48,19 @@ class TextInput(Input):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NumberInput(Input):
 | 
			
		||||
    def __init__(self, id, label, infotext=None):
 | 
			
		||||
        super().__init__(id, label, infotext)
 | 
			
		||||
        self.step = None
 | 
			
		||||
 | 
			
		||||
    def render_input(self, value):
 | 
			
		||||
        return """
 | 
			
		||||
            <input type="number" class="{classes}" id="{id}" name="{id}" placeholder="{label}" value="{value}">
 | 
			
		||||
            <input type="number" class="{classes}" id="{id}" name="{id}" placeholder="{label}" value="{value}" {step}>
 | 
			
		||||
        """.format(
 | 
			
		||||
            id=self.id, label=self.label, classes=self.input_classes(), value=value
 | 
			
		||||
            id=self.id,
 | 
			
		||||
            label=self.label,
 | 
			
		||||
            classes=self.input_classes(),
 | 
			
		||||
            value=value,
 | 
			
		||||
            step='step="{0}"'.format(self.step) if self.step else "",
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def convert_value(self, v):
 | 
			
		||||
@@ -63,6 +71,10 @@ class NumberInput(Input):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FloatInput(NumberInput):
 | 
			
		||||
    def __init__(self, id, label, infotext=None):
 | 
			
		||||
        super().__init__(id, label, infotext)
 | 
			
		||||
        self.step = "any"
 | 
			
		||||
 | 
			
		||||
    def convert_value(self, v):
 | 
			
		||||
        return float(v)
 | 
			
		||||
 | 
			
		||||
@@ -70,7 +82,30 @@ class FloatInput(NumberInput):
 | 
			
		||||
class LocationInput(Input):
 | 
			
		||||
    def render_input(self, value):
 | 
			
		||||
        # TODO make this work and pretty
 | 
			
		||||
        return "Placeholder for a map widget to select receiver location"
 | 
			
		||||
        return """
 | 
			
		||||
            <div class="row">
 | 
			
		||||
                {inputs}
 | 
			
		||||
            </div>
 | 
			
		||||
        """.format(
 | 
			
		||||
            inputs="".join(self.render_sub_input(value, id) for id in ["lat", "lon"])
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def render_sub_input(self, value, id):
 | 
			
		||||
        return """
 | 
			
		||||
            <div class="col">
 | 
			
		||||
                <input type="number" class="{classes}" id="{id}" name="{id}" placeholder="{label}" value="{value}" step="any">
 | 
			
		||||
            </div>
 | 
			
		||||
        """.format(
 | 
			
		||||
            id="{0}-{1}".format(self.id, id),
 | 
			
		||||
            label=self.label,
 | 
			
		||||
            classes=self.input_classes(),
 | 
			
		||||
            value=value[id],
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def parse(self, data):
 | 
			
		||||
        return {
 | 
			
		||||
            self.id: {k: float(data["{0}-{1}".format(self.id, k)][0]) for k in ["lat", "lon"]}
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TextAreaInput(Input):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user