Add typed task input forms
This commit is contained in:
@@ -36,6 +36,49 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
<form method="post" action="{{ url_for('run_task', task_id=task.id) }}">
|
||||
{% set values = form_values.get(task.id, {}) %}
|
||||
{% set errors = input_errors.get(task.id, {}) %}
|
||||
{% for field in task.inputs %}
|
||||
<div class="task-input">
|
||||
{% if field.type == "multi_choice" %}
|
||||
<fieldset>
|
||||
<legend>{{ field.label }}{% if field.required %} (required){% endif %}</legend>
|
||||
{% set selected = values.get(field.name, field.default or ()) %}
|
||||
{% for option in field.options %}
|
||||
<label>
|
||||
<input type="checkbox" name="{{ field.name }}" value="{{ option.value }}" {% if option.value in selected %}checked{% endif %}>
|
||||
{{ option.label }}
|
||||
</label>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
{% elif field.type == "choice" %}
|
||||
<label>{{ field.label }}{% if field.required %} (required){% endif %}
|
||||
<select name="{{ field.name }}" {% if field.required %}required{% endif %}>
|
||||
{% if not field.required %}<option value="">No selection</option>{% endif %}
|
||||
{% set selected = values.get(field.name, field.default or "") %}
|
||||
{% for option in field.options %}
|
||||
<option value="{{ option.value }}" {% if option.value == selected %}selected{% endif %}>{{ option.label }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</label>
|
||||
{% else %}
|
||||
{% set html_type = "number" if field.type == "integer" else "datetime-local" if field.type == "datetime" else field.type %}
|
||||
<label>{{ field.label }}{% if field.required %} (required){% endif %}
|
||||
<input
|
||||
type="{{ html_type }}"
|
||||
name="{{ field.name }}"
|
||||
value="{{ values.get(field.name, field.default if field.default is not none else "") }}"
|
||||
{% if field.required %}required{% endif %}
|
||||
{% if field.minimum is not none %}min="{{ field.minimum }}"{% endif %}
|
||||
{% if field.maximum is not none %}max="{{ field.maximum }}"{% endif %}
|
||||
{% if field.step is not none %}step="{{ field.step }}"{% endif %}
|
||||
{% if field.pattern %}pattern="{{ field.pattern }}"{% endif %}
|
||||
>
|
||||
</label>
|
||||
{% endif %}
|
||||
{% if errors.get(field.name) %}<p class="input-error">{{ errors[field.name] }}</p>{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<button type="submit">Run</button>
|
||||
</form>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user