snapshot: refine builder field rules and conditional summaries

This commit is contained in:
Md Bayazid Bostame
2026-03-27 23:03:17 +01:00
parent e84ddd558b
commit 8e950de994
5 changed files with 1405 additions and 553 deletions

View File

@@ -1,5 +1,6 @@
{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
{% get_current_language as CURRENT_LANGUAGE %}
{% block title %}{% trans "Form Builder" %}{% endblock %}
@@ -33,6 +34,26 @@
</a>
</nav>
<div class="builder-sidebar-card builder-sidebar-context">
<span class="builder-sidebar-eyebrow">{% trans "Aktive Ansicht" %}</span>
<div class="builder-context-stack">
<div class="builder-context-row">
<span class="builder-context-label">{% trans "Workflow" %}</span>
<strong>{{ active_form_type_label }}</strong>
</div>
<div class="builder-context-row">
<span class="builder-context-label">{% trans "Modul" %}</span>
<strong>{{ active_module_label }}</strong>
</div>
{% if active_focus_label %}
<div class="builder-context-row">
<span class="builder-context-label">{% trans "Fokus" %}</span>
<strong>{{ active_focus_label }}</strong>
</div>
{% endif %}
</div>
</div>
<div class="builder-sidebar-card builder-sidebar-stats">
<div class="builder-side-stat">
<strong>{{ builder_summary.configurable_field_count }}</strong>
@@ -57,6 +78,12 @@
<p class="builder-hero-sub">{% trans "Steuern Sie Struktur, Regeln und Inhalte Ihrer Standard-Workflows an einem Ort." %}</p>
</div>
<div class="builder-hero-actions">
<form method="post" action="{% url 'set_language' %}" class="builder-lang-switch">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.get_full_path }}" />
<button class="builder-lang-btn {% if CURRENT_LANGUAGE == 'de' %}active{% endif %}" type="submit" name="language" value="de">DE</button>
<button class="builder-lang-btn {% if CURRENT_LANGUAGE == 'en' %}active{% endif %}" type="submit" name="language" value="en">EN</button>
</form>
{% for key, label in form_types %}
<a
class="tab {% if form_type == key %}active{% endif %}"
@@ -69,6 +96,28 @@
</div>
</section>
<section class="builder-toolbar" aria-label="{% trans 'Arbeitskontext' %}">
<div class="builder-toolbar-main">
<span class="builder-toolbar-chip">
<span class="builder-toolbar-chip-label">{% trans "Workflow" %}</span>
<strong>{{ active_form_type_label }}</strong>
</span>
<span class="builder-toolbar-chip">
<span class="builder-toolbar-chip-label">{% trans "Modul" %}</span>
<strong>{{ active_module_label }}</strong>
</span>
{% if active_focus_label %}
<span class="builder-toolbar-chip">
<span class="builder-toolbar-chip-label">{% trans "Aktiv" %}</span>
<strong>{{ active_focus_label }}</strong>
</span>
{% endif %}
</div>
<div class="builder-toolbar-note">
{% trans "Arbeiten Sie jeweils nur in einem Bereich und speichern Sie Änderungen abschnittsweise." %}
</div>
</section>
{% include 'workflows/includes/messages.html' %}
<div id="status-message" class="status" aria-live="polite"></div>
@@ -281,6 +330,7 @@
<div class="field-rule-main">
<input type="hidden" name="field_rule_ids" value="{{ item.id }}" />
<strong>{{ item.label }}</strong>
<div class="field-rule-summary">{{ item.summary }}</div>
<div class="field-rule-meta">
<span class="entity-meta">{{ item.field_name }}</span>
<div class="field-rule-status field-rule-status-inline">
@@ -357,11 +407,20 @@
<section class="conditional-rule-card">
<div class="conditional-rule-head">
<div class="conditional-rule-head-main">
<span class="conditional-rule-eyebrow">{% trans "Sichtbarkeit" %}</span>
<h3>{{ item.title }}</h3>
{% if item.description %}
<p class="mini">{{ item.description }}</p>
{% endif %}
<div class="conditional-rule-title-row">
<span class="conditional-rule-eyebrow">{% trans "Sichtbarkeit" %}</span>
<h3>{{ item.title }}</h3>
</div>
<div class="conditional-rule-target-inline">
<span class="conditional-target-label">{% trans "Steuert" %}</span>
<div class="conditional-target-chips">
{% for field_name in item.target_fields %}
<span class="preview-chip">{{ field_name }}</span>
{% empty %}
<span class="mini">{% trans "Keine Ziel-Felder." %}</span>
{% endfor %}
</div>
</div>
</div>
<label class="conditional-toggle">
<span>{% trans "Aktiv" %}</span>
@@ -371,33 +430,14 @@
<div class="conditional-meta-grid">
<div class="conditional-rule-summary">
<span class="conditional-summary-prefix">{% trans "Sichtbar, wenn" %}</span>
<div class="conditional-summary-chips">
{% with first_clause=item.clauses.0 second_clause=item.clauses.1 %}
{% if first_clause.field %}
<span class="preview-chip">{{ first_clause.field }}</span>
<span class="preview-chip">{{ first_clause.operator }}</span>
{% if first_clause.value %}<span class="preview-chip">{{ first_clause.value }}</span>{% endif %}
{% else %}
<span class="preview-chip">{% trans "Keine Bedingung" %}</span>
{% endif %}
{% if second_clause.field %}
<span class="preview-chip">{% trans "und" %}</span>
<span class="preview-chip">{{ second_clause.field }}</span>
<span class="preview-chip">{{ second_clause.operator }}</span>
{% if second_clause.value %}<span class="preview-chip">{{ second_clause.value }}</span>{% endif %}
{% endif %}
{% endwith %}
</div>
<div class="conditional-summary-text">{{ item.summary }}</div>
</div>
<div class="conditional-targets">
<span class="conditional-target-label">{% trans "Steuert" %}</span>
<div class="conditional-target-chips">
{% for field_name in item.target_fields %}
<span class="preview-chip">{{ field_name }}</span>
{% empty %}
<span class="mini">{% trans "Keine Ziel-Felder." %}</span>
{% endfor %}
</div>
<div class="conditional-rule-state">
<span class="conditional-summary-prefix">{% trans "Status" %}</span>
<strong>{% if item.is_active %}{% trans "Aktiv" %}{% else %}{% trans "Inaktiv" %}{% endif %}</strong>
{% if item.description %}
<span class="mini">{{ item.description }}</span>
{% endif %}
</div>
</div>
<div class="conditional-sentence-builder">