NAME

Quiq::Html::Table::List - HTML-Tabelle zum Anzeigen einer Liste von Elementen

BASE CLASS

Quiq::Html::Table::Base

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: '&nbsp;')

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.220

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2024 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.