NAME
Quiq::Html::Table::List - HTML-Tabelle zum Anzeigen einer Liste von Elementen
BASE CLASS
DESCRIPTION
Die Klasse erzeugt eine HTML-Tabelle aus einer Liste von Objekten. Jedes Objekt wird durch eine Zeile dargestellt. Alle Zeilen- (tr-Elemente) und Zellenattribute (td-Elemente) können gesetzt werden. Die Klasse ist daher sehr flexibel.
Für jedes Objekt wird die Methode $e->rowCallback() gerufen (falls nicht angegeben, werden die Daten ohne Verarbeitung kopiert). Die Methode bekommt das Objekt und seine (0-basierte) Position in der Liste der Objekte (Attribut "rows") übergeben. Die Methode liefert die Spezifikation für die Zeile (tr) und ihre Zellen (td) zurück, wobei jede Spezifikation ein Array ist, das unmittelbar an die Methode tag() übergeben wird.
ATTRIBUTES
Zusätzlich zu den Attributen der Basisklasse definiert die Klasse folgende Attribute:
- align => \@arr (Default: [])
-
Ausrichtung des Kolumneninhalts.
- allowHtml => $bool|\@titles (Default: 0)
-
Erlaube HTML insgesamt oder auf den Kolumnen in @titles, d.h. ersetze die Werte der Kolumnen &, <, > nicht automatisch durch HTML-Entities.
- empty => $str (Default: ' ')
-
HTML-Code, der im Body der Tabelle gesetzt wird, wenn die Liste der Elemente leer ist. Wenn auf Leerstring, undef oder 0 gesetzt, wird kein Body angezeigt.
-
Setze die Titel @titles auch als Footer.
- rowCallback => $sub (Default: undef)
-
Referenz auf eine Subroutine, die für jedes Element die darzustellende Zeileninformation (für tr- und td-Tag) liefert. Ist kein rowCallback definiert, werden die Row-Daten unverändert verwendet.
- rowCallbackArguments => \@args (Default: [])
-
Liste von Argumenten, die zusätzlich zu den Standardargumenten an die Subroutine rowCallback() übergeben werden.
- rows => \@rows (Default: [])
-
Liste der Elemente. Für jedes Element wird die Callback-Methode (Attribut rowCallback) aufgerufen.
- titles => \@titles (Default: [])
-
Liste der Kolumnentitel.
EXAMPLES
Attribute von tr- und td-Elemeten setzen. Für jedes Element wird eine Arrayreferenz geliefert:
$e = Quiq::Html::Table::List->new(
titles => [qw/Id Name Vorname/],
align => [qw/right left left/],
rows => \@obj,
rowCallback => sub {
my ($row,$i) = @_;
my $trA = [class=>'TRCLASS'];
push my @tds,[class=>'TDCLASS',$row->get('ATTRIBUTE')];
...
return ($trA,@tds);
},
);
$html = $e->html($h);
Lediglich Werte ausgeben. Für das tr-Element wird undef
geliefert, für die td-Elemente ein skalarer Wert (der Content des Elements):
$e = Quiq::Html::Table::List->new(
titles => [qw/Id Name Vorname/],
align => [qw/right left left/],
rows => \@obj,
rowCallback => sub {
my ($row,$i) = @_;
push @arr,$row->get('ATTRIBUTE');
...
return (undef,@arr);
},
);
$html = $e->html($h);
METHODS
Konstruktor
new() - Instantiiere Objekt
Synopsis
$e = $class->new(@keyVal);
Description
Instantiiere ein Tabellenobjekt mit den Eingenschaften @keyVal und liefere eine Referenz auf dieses Objekt zurück.
Objektmethoden
html() - Generiere HTML
Synopsis
$html = $e->html($h);
$html = $class->html($h,@keyVal);
Description
Generiere HTML-Code für Tabellenobjekt $e und liefere diesen zurück. Bei Aufruf als Klassenmethode wird das Tabellenobjekt von der Methode aus den Argumenten @keyVal instantiiert.
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.