Was sind sich selbst wiederholende Abschnitte (Schleifen)?

Wiederholende Abschnitte sind Bereiche in einem Dokument, die basierend auf Datenarrays dynamisch wiederholt werden. Jede Wiederholung verwendet dieselbe Vorlage, aber mit unterschiedlichen Daten. Dies ist besonders nützlich für Listen von Kunden, Rechnungspositionen, Verbrauchsdaten oder anderen strukturierten Informationen.

Typische Anwendungsfälle:

  • Auflistung von Zählerständen und Verbrauchsperioden
  • Rechnungspositionen
  • Kunden- oder Mandantenlisten
  • Termine und Serviceleistungen
  • Tarifkomponenten und Preisaufschlüsselungen

Spezielle Formen: Tabellen sind spezielle Formen von wiederholenden Abschnitten, die in separaten Abschnitten behandelt werden. Diese Seite fokussiert sich auf Block-Level-Wiederholungen.

Die häufigste Form von wiederholenden Inhalten in Output.Rocks Vorlagen sind die "Block-Level"-Wiederholungen, die mit dem <<rs_>> (repeat section) Element und dem entsprechenden <<es_>> (end section) Element definiert werden. Wiederholende Abschnitte können beliebige Inhalte enthalten, die so lange wiederholt werden, wie Daten anzuzeigen sind.

Grundlegende Syntax

Die allgemeine Syntax für einen wiederholenden Abschnitt ist:

<<rs_wiederholender-abschnitt-name>>
[ Der Text und die Elemente des wiederholenden Abschnitts. ]
<<es_wiederholender-abschnitt-name>> oder einfach <<es_>>

Die End-Syntax <<es_NAME>> sollte mit der Start-Syntax <<rs_NAME>> übereinstimmen, um Konflikte beim Rendern zu vermeiden. Alternativ kann einfach <<es_>> verwendet werden.

<<rs_verbrauchsdaten>>
Zählernummer: <<zaehlerNummer>>
Zeitraum: <<von>> bis <<bis>>
Verbrauch: <<verbrauch>> kWh
Grundpreis: <<grundpreis>> €
Arbeitspreis: <<arbeitspreis>> €/kWh
<<es_verbrauchsdaten>>

Wichtige Hinweise:

  • Die Start- und Endfelder des wiederholenden Abschnitts werden aus dem resultierenden Dokument entfernt
  • Wenn sich jedes Feld auf einer eigenen Zeile befindet, wird die gesamte Zeile entfernt
  • Wiederholende Abschnitte können ineinander verschachtelt werden für komplexe Hierarchien

Automatische Variablen in Schleifen

Beim Durchlaufen eines wiederholenden Abschnitts erstellt Output.Rocks automatisch eingebaute Variablen für die Schleifenkontrolle:

  • $itemidx: Schleifenindex beginnend bei 0 (0, 1, 2, ...)
  • $itemnum: Schleifennummer beginnend bei 1 (1, 2, 3, ...)
<<rs_kunden>>
<<$itemnum>>. <<name>> (Index: <<$itemidx>>)
<<es_kunden>>

Schrittweise Wiederholung (Stepping)

Output.Rocks unterstützt das Konzept der schrittweisen Wiederholung ("Stepping"). Jeder "Schritt" ist eine kleinere Teilmenge des vollständigen Datenarrays, ideal für tabellarische Darstellungen oder mehrspaltige Layouts.

Stepping-Anwendungsfälle:

  • Kundenlisten in Spalten für Übersichtlichkeit
  • Zählerstände in tabellarischer Form
  • Tarifvergleiche nebeneinander
  • Kompakte Darstellung von Serviceterminen

Horizontales Stepping (Across)

Mit dem :step Attribut können Elemente horizontal in einer Zeile platziert werden.

<<rs_zaehlerstaende:step3>>
<<$i1>>     <<$i2>>     <<$i3>>
<<es_zaehlerstaende>>

Die Anweisung :step3 weist Output.Rocks an, die Daten in Gruppen von 3 zu durchlaufen. Output.Rocks erstellt automatisch die Variablen $i1, $i2 und $i3 für das erste, zweite und dritte Element jeder Gruppe.

Vertikales Stepping (Down)

Mit :stepDown werden die Daten zuerst spaltenweise arrangiert.

<<rs_tarife:step3down>>
<<$i1>>     <<$i2>>     <<$i3>>
<<es_tarife>>

Bei vertikalem Stepping werden die Elemente zuerst die erste Spalte hinunter, dann die zweite usw. angeordnet. Output.Rocks balanciert die Daten automatisch in die richtige Anzahl von Zeilen.

Sortieren in wiederholenden Abschnitten

Output.Rocks unterstützt das Sortieren von Daten in einem wiederholenden Abschnitt mit der :sort Anweisung. Dies ist besonders nützlich für die Darstellung von Kundenlisten, Rechnungspositionen oder Verbrauchsdaten in einer bestimmten Reihenfolge.

<<rs_kunden:sort(nachname)>>
<<$itemnum>>. <<nachname>>, <<vorname>>
<<es_kunden>>

Sortieroptionen und -typen

Verfügbare Sortiertypen:

  • :sort - Alphanumerische Sortierung (Standard)
  • :sortStr - Einfache String-Sortierung
  • :sortNum - Numerische Sortierung für Zahlen
  • :sortDate - Datumssortierung

Sortierrichtung:

  • :sort(ASC, feldname) - Aufsteigend (Standard)
  • :sort(DESC, feldname) - Absteigend

Zusätzliche Optionen:

  • CASE_SENSITIVE / CASE_INSENSITIVE (Standard)
  • NULLS_FIRST / NULLS_LAST für fehlende Werte

Kritische Syntax-Regel für String-Vergleiche:

In Output.Rocks müssen String-Werte in Sortier- und Filterausdrücken immer mit einfachen Anführungszeichen (') angegeben werden:

<<rs_kunden:filter(tarif=='Ökostrom')>>    ✓ Richtig
<<rs_kunden:filter(tarif=="Ökostrom")>>    ✗ Falsch

Filtern in wiederholenden Abschnitten

Output.Rocks unterstützt das Filtern von Daten in wiederholenden Abschnitten mit der :filter Anweisung. Dies ermöglicht die selektive Anzeige von Datensätzen basierend auf bestimmten Kriterien.

<<rs_personen:filter(alter >= 18)>>
<<$itemnum>>. <<name>> (<<alter>> Jahre)
<<es_personen>>

Kombinierte Sortierung und Filterung

Sie können Sortierung und Filterung kombinieren für komplexere Datenmanipulationen:

<<rs_kunden:filter(tarif=='Premium'):sort(DESC, verbrauch)>>
Premium-Kunde: <<name>>
Jahresverbrauch: <<verbrauch>> kWh
<<es_kunden>>

Performance-Hinweise:

  • Filterung wird vor der Sortierung angewendet
  • Verwenden Sie spezifische Filter, um die Datenmenge zu reduzieren
  • Bei großen Datensätzen sollten Sie die Filterkriterien optimieren
  • Kombinieren Sie mehrere Bedingungen mit && (UND) oder || (ODER)

Best Practices und Tipps

Empfohlene Vorgehensweisen:

  1. Eindeutige Namen: Verwenden Sie beschreibende Namen für wiederholende Abschnitte (verbrauchsdaten, rechnungspositionen, kundenliste)

  2. Korrekte Syntax: Achten Sie darauf, dass die Endtags (<<es_>>) korrekt platziert sind

  3. Automatische Variablen nutzen: Verwenden Sie $itemnum für Nummerierungen und $itemidx für Index-basierte Logik

  4. Verschachtelung minimieren: Verschachteln Sie wiederholende Abschnitte nur bei komplexen Hierarchien

  5. Stepping für Layout: Nutzen Sie Stepping für tabellarische Darstellungen und mehrspaltige Layouts

  6. Kombinierte Operationen: Kombinieren Sie Sortierung und Filterung für optimale Datenaufbereitung

  7. String-Syntax beachten: Verwenden Sie immer einfache Anführungszeichen (') für String-Vergleiche