{# Reusable component to display talk feedback with scales and free-text. Required variables: - talk: The Talk object - event: The Event object - feedback_data: Dict with keys: - interesting: {1: count, 2: count, 3: count, 4: count} - mastery: {1: count, 2: count, 3: count, 4: count} - questions: {1: count, 2: count, 3: count, 4: count} - material: {1: count, 2: count, 3: count, 4: count} - good: [list of text] - improvements: [list of text] - free_text: [list of text] - chart_prefix: String prefix for chart IDs (e.g., 'talk-123') Optional variables: - show_links: Boolean, default True. Set to False to hide links (for public pages) #} {% set show_links = show_links if show_links is defined else True %} {# Helper macro for scale table #} {% macro scale_table(counts) %} {% set scale_labels = { 1: 'auf jeden Fall', 2: 'eher ja', 3: 'eher nein', 4: 'auf keinen Fall' } %} {% for scale in [1, 2, 3, 4] %} {% endfor %}
Antwort Anzahl
{{ scale_labels[scale] }} {{ counts[scale] }}
{% endmacro %}

{% if show_links %} {% include 'components/talk_link.html' %} {% else %} {{ talk.title }} {% endif %}

{% if talk.speakers_m2m %} Speaker: {% for speaker in talk.speakers_m2m %} {% if show_links %} {% include 'components/speaker_link.html' %}{% if not loop.last %}, {% endif %} {% else %} {{ speaker.name }}{% if not loop.last %}, {% endif %} {% endif %} {% endfor %}
{% endif %} {% if talk.room %}Raum: {{ talk.room }} {% endif %} {% if talk.duration_minutes %}Dauer: {{ talk.duration_minutes }} min{% endif %} {% set people_count = talk.people_counts.first() %} {% if people_count %}
Anzahl Teilnehmer: {{ people_count.count }}{% endif %}
{# Show feedback count if available #} {% if feedback_data.feedback_count %}
Anzahl ausgefüllter Feedbackbögen: {{ feedback_data.feedback_count }}
{% endif %} {# Scale feedback #} {% set has_scales = feedback_data.interesting[1] + feedback_data.interesting[2] + feedback_data.interesting[3] + feedback_data.interesting[4] > 0 or feedback_data.mastery[1] + feedback_data.mastery[2] + feedback_data.mastery[3] + feedback_data.mastery[4] > 0 or feedback_data.questions[1] + feedback_data.questions[2] + feedback_data.questions[3] + feedback_data.questions[4] > 0 or feedback_data.material[1] + feedback_data.material[2] + feedback_data.material[3] + feedback_data.material[4] > 0 %} {% if has_scales %}

Bewertungen

{% if feedback_data.interesting[1] + feedback_data.interesting[2] + feedback_data.interesting[3] + feedback_data.interesting[4] > 0 %}
War der Vortrag interessant?
{% endif %} {% if feedback_data.mastery[1] + feedback_data.mastery[2] + feedback_data.mastery[3] + feedback_data.mastery[4] > 0 %}
Hat der Vortragende das Thema beherrscht?
{% endif %} {% if feedback_data.questions[1] + feedback_data.questions[2] + feedback_data.questions[3] + feedback_data.questions[4] > 0 %}
Konnten Fragen beantwortet werden?
{% endif %} {% if feedback_data.material[1] + feedback_data.material[2] + feedback_data.material[3] + feedback_data.material[4] > 0 %}
War das Material (Folien u.ä.) ansprechend?
{% endif %}
{% endif %} {# Free-text feedback #} {% if feedback_data.good or feedback_data.improvements or feedback_data.free_text %}

Freitext-Antworten

{% if feedback_data.good %}
Besonders gut gefallen:
{% for text in feedback_data.good %}
{{ text }}
{% endfor %}
{% endif %} {% if feedback_data.improvements %}
Verbesserungsvorschläge:
{% for text in feedback_data.improvements %}
{{ text }}
{% endfor %}
{% endif %} {% if feedback_data.free_text %}
Freitext:
{% for text in feedback_data.free_text %}
{{ text }}
{% endfor %}
{% endif %} {% endif %} {# Show message if no feedback #} {% if not has_scales and not feedback_data.good and not feedback_data.improvements and not feedback_data.free_text %}

Noch kein Feedback für diesen Talk vorhanden.

{% endif %}