{% macro render_setting(setting, id_prefix="") %} {% set setting_id = (id_prefix ~ "-" if id_prefix else "") ~ setting.key|replace(".", "-") %}
{% if setting.description %} {% endif %}
{% if setting.ui_element == "textarea" %} {# Check if this is JSON content that should be expanded into controls #} {% if setting.value is mapping or (setting.value is string and (setting.value.startswith('{') and setting.value.endswith('}'))) %}
{% if setting.value is string %} {% set json_value = setting.value|tojson %} {% else %} {% set json_value = setting.value %} {% endif %} {# Store the original JSON in a hidden field #} {# Create individual form controls for each JSON property #}
{% for key, value in json_value.items() %}
{% if value is boolean %}
{{ key|replace("_", " ")|title }}
{% elif value is number %} {% elif value is string and value in ["ITERATION", "NONE"] %} {% else %} {% endif %}
{{ key|replace("_", " ")|title }}
{% endfor %}
{% else %} {% endif %} {% elif setting.ui_element == "select" %} {% if setting.key == "llm.provider" %} {% from "components/custom_dropdown.html" import render_dropdown %} {{ render_dropdown( input_id=setting.key, dropdown_id=setting_id + "-dropdown", placeholder="Select a provider", label=None, help_text=setting.description if setting.description else None, allow_custom=False, show_refresh=True, data_setting_key=setting.key ) }} {% else %} {% endif %} {% elif setting.ui_element == "checkbox" %}
{{ setting.name }}
{% elif setting.ui_element == "slider" or setting.ui_element == "range" %} {% set min_value = setting.min_value if setting.min_value is not none else 0 %} {% set max_value = setting.max_value if setting.max_value is not none else 100 %} {% set step = setting.step if setting.step is not none else 1 %}
{{ setting.value if setting.value is not none else min_value }}
{% elif setting.ui_element == "number" %} {% set min_value = setting.min_value if setting.min_value is not none else "" %} {% set max_value = setting.max_value if setting.max_value is not none else "" %} {% set step = setting.step if setting.step is not none else 1 %} {% elif setting.ui_element == "password" %} {% elif setting.key == "llm.model" or setting.key == "search.tool" %} {% from "components/custom_dropdown.html" import render_dropdown %} {{ render_dropdown( input_id=setting.key, dropdown_id=setting_id + "-dropdown", placeholder="Select or enter a value", label=None, help_text=setting.description if setting.description else None, allow_custom=setting.key == "llm.model", show_refresh=True, refresh_aria_label="Refresh model list" if setting.key == "llm.model" else "Refresh search engine list", data_setting_key=setting.key ) }} {% else %} {% if setting.value is mapping or (setting.value is string and (setting.value.startswith('{') and setting.value.endswith('}'))) %}
{% if setting.value is string %} {% set json_value = setting.value|tojson %} {% else %} {% set json_value = setting.value %} {% endif %} {# Store the original JSON in a hidden field #} {# Create individual form controls for each JSON property #}
{% for key, value in json_value.items() %}
{% if value is boolean %}
{{ key|replace("_", " ")|title }}
{% elif value is number %} {% else %} {% endif %}
{{ key|replace("_", " ")|title }}
{% endfor %}
{% else %} {% endif %} {% endif %} {% if setting.description and setting.key != "llm.model" and setting.key != "search.tool" and setting.key != "llm.provider" %}
{{ setting.description }}
{% endif %}
{% endmacro %} {% macro render_settings_section(section_title, section_id, settings, form_id='settings-form') %}
{{ section_title }}
{% for setting in settings %} {{ render_setting(setting, form_id) }} {% endfor %}
{% endmacro %} {% macro render_settings_form(settings_by_category, form_id, form_action) %}
{% for category, settings in settings_by_category.items() %} {{ render_settings_section(category, category|lower|replace(' ', '-'), settings, form_id) }} {% endfor %}
{% endmacro %}