Add typed task input forms

This commit is contained in:
ajp_anton
2026-08-08 18:39:09 +00:00
parent 56d6194324
commit 0549ed1b0d
8 changed files with 521 additions and 16 deletions
+43
View File
@@ -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>