Expanded generation options. Multiple outfits support.

This commit is contained in:
Aodhan Collins
2026-02-19 00:40:29 +00:00
parent 1e7f252cf9
commit 5aede18ad5
65 changed files with 2086 additions and 477 deletions

View File

@@ -79,13 +79,77 @@
<div class="col-md-8">
<div class="d-flex justify-content-between align-items-center mb-4">
<h1>{{ character.name }}</h1>
<div>
<h1 class="mb-0">{{ character.name }}</h1>
<a href="{{ url_for('edit_character', slug=character.slug) }}" class="btn btn-sm btn-link text-decoration-none">Edit Profile</a>
</div>
<a href="/" class="btn btn-outline-secondary">Back to Gallery</a>
</div>
<!-- Outfit Switcher -->
{% set outfits = character.get_available_outfits() %}
{% if outfits|length > 1 %}
<div class="card mb-4 border-primary">
<div class="card-header bg-primary text-white d-flex justify-content-between align-items-center">
<span><i class="bi bi-shirt"></i> Active Outfit</span>
<span class="badge bg-light text-primary">{{ character.active_outfit or 'default' }}</span>
</div>
<div class="card-body">
<form action="{{ url_for('switch_outfit', slug=character.slug) }}" method="post" class="row g-2">
<div class="col-auto flex-grow-1">
<select name="outfit" class="form-select" id="outfit-select">
{% for outfit in outfits %}
<option value="{{ outfit }}" {% if outfit == character.active_outfit %}selected{% endif %}>
{{ outfit }}
</option>
{% endfor %}
</select>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary">Switch</button>
</div>
</form>
</div>
</div>
{% endif %}
<form id="generate-form" action="{{ url_for('generate_image', slug=character.slug) }}" method="post">
{% for section, details in character.data.items() %}
{% if section not in ['character_id', 'tags', 'name'] and details is mapping %}
{% if section == 'wardrobe' %}
{# Special handling for wardrobe - show active outfit #}
{% set active_wardrobe = character.get_active_wardrobe() %}
<div class="card mb-4">
<div class="card-header bg-light d-flex justify-content-between align-items-center">
<strong>
Wardrobe
{% if outfits|length > 1 %}
<span class="badge bg-secondary ms-2">{{ character.active_outfit or 'default' }}</span>
{% endif %}
</strong>
{% if outfits|length > 1 %}
<a href="{{ url_for('edit_character', slug=character.slug) }}#outfits" class="btn btn-sm btn-outline-secondary">Manage Outfits</a>
{% endif %}
</div>
<div class="card-body">
<dl class="row mb-0">
{% for key, value in active_wardrobe.items() %}
<dt class="col-sm-4 text-capitalize">
<input class="form-check-input me-1" type="checkbox" name="include_field" value="wardrobe::{{ key }}"
{% if preferences is not none %}
{% if 'wardrobe::' + key in preferences %}checked{% endif %}
{% elif character.default_fields is not none %}
{% if 'wardrobe::' + key in character.default_fields %}checked{% endif %}
{% else %}
{% if value %}checked{% endif %}
{% endif %}>
{{ key.replace('_', ' ') }}
</dt>
<dd class="col-sm-8">{{ value if value else '--' }}</dd>
{% endfor %}
</dl>
</div>
</div>
{% elif section not in ['character_id', 'tags', 'name'] and details is mapping %}
<div class="card mb-4">
<div class="card-header bg-light text-capitalize"><strong>{{ section.replace('_', ' ') }}</strong></div>
<div class="card-body">