Jet\UI_dataGrid

Komplexní element pro zobrazování seznamů dat. Tedy taková ta "klasika" co zobrazí hlavičku se seznamem sloupců, aktuální data a ovládací prvky pro stránkování dat.

Jelikož nejde o úplně triviální element, skládá se z několika prvků:

  • Sloupce (definice sloupce)
    Sloupce musí být definovány. Viz metoda addColumn.
  • Záhlaví
    Záhlaví zobrazuje titulky sloupečků a má samostatný subrenderer. Viz metoda header().
  • Tělo
    Tělo zobrazuje samotná data, také má samostatný subrenderer. Viz metoda body().
  • Zápatí
    Zápatí zobrazuje zejména ovládací prvky stránkování. I zápatí má samostatný subrenderer. Viz metoda footer().

Dědí od Jet\UI_Renderer_Single

Příklad použití

Důležité je zdůraznit, že tato komponenta má na starosti pouze zobrazení gridu. Nic víc a ani nic míň. Jak bude fungovat logika, tedy kde a jak aplikace získá data k zobrazení, jak je bude stránkovat a tak dále UI komponenta neřeší. To je záležitost vaší aplikace, potažmo dalších komponent Jetu.

Pokud hledáte komplexní věc, co pořeší zobrazování dat jako celek, tak Jet má řešení v podobě Jet\DataListing, které vše zastřešuje a pochopitelně využívá i UI_dataGrid pro samotné zobrazení. Doporučuji používat právě Jet\DataListing.

Ale v následující ukázce si předvedeme jak lze tuto UI komponentu použít přímo - bez nadstavby. Ukázka je jednoduchý přehled uživatelů - registrovaných návštěvníků webu (nebo zákazníků ...): namespace JetApplication;

use 
Jet\Data_Paginator;
use 
Jet\Http_Request;
use 
Jet\Tr;
use 
Jet\UI_dataGrid;

$GET Http_Request::GET();


$grid = new UI_dataGrid();

$paginator = new Data_Paginator(
    
current_page_no$GET->getInt('page_no'1),
    
items_per_page25,
    
URL_creator: function( int $page_no ) : string {
        return 
Http_Request::currentURI( ['page_no'=>$page_no] );
    }
);

$grid->setPaginator$paginator );

$users Auth_Visitor_User::getList();
$grid->setData$users );


$grid->addColumn('username'Tr::_('Username'));
$grid->addColumn('locale'Tr::_('Users language'));

Grid je samozřejmě nutné předat view a následně ve view skriptu zobrazit. Ovšem před tím je nutné definovat renderery pro sloupce. View skrit tedy může vypadat například takto: namespace JetApplication;

use 
Jet\MVC_View;
use 
Jet\UI;
use 
Jet\UI_dataGrid;

/**
 * @var MVC_View $this
 * @var UI_dataGrid $grid
 */
$grid $this->getRaw('grid');

$grid->getColumn('username')->setRenderer(function( Auth_Visitor_User $user ) {
    echo 
$user->getUsername();
});


$grid->getColumn('locale')->setRenderer(function( Auth_Visitor_User $user ) {
    
$locale $user->getLocale();
    if(
$locale) {
        echo 
UI::flag($locale).UI::locale($locale);
    }
});

echo 
$grid;

Přehled metod

Metoda Význam
public addColumn(
string $name,
string $title
) : UI_dataGrid_column
Vytvoří definici sloupce určitého jména (parametr $name - slouží pro identifikaci sloupce) a s určitým titulkem (parametr $title).

Vrátí instanci definice sloupce (která slouží i jako renderer titulku sloupce).
public hasColumn(
string $name
) : bool
Ověří zda grid má definovaný určitý sloupec. Užitečné pro gridy s dynamicky generovanými seznamy sloupců. Tedy v situaci, kdy si například sám uživatel může určovat co chce v seznamu dat vidět.
public getColumns(
) : UI_dataGrid_column[]
Vrátí seznam definovaných sloupců.
public getColumn(
string $name
) : UI_dataGrid_column
Vrátí definici konkrétního sloupce.
public setData(
DataModel_Fetch_Instances|array $data
) : void
Nastaví data, která se mají v seznamu zobrazovat.
public getData(
) : iterable
Vrátí data, která se mají v seznamu zobrazovat.
public setSortUrlCreator(
callable $sort_url_creator
) : static
Nastaví vytvářeč řadících URL. Prototyp vytvářeče: function( string $column_namebool $desc ) : string
{
      
//... ... create URL
      
return $URL;
}
public getSortUrlCreator(
) : callable
Vrátí vytvářeč řadících URL.

Viz metoda setSortUrlCreator.
public getSortURL(
string $column_name,
bool $desc=false
) : string
Pomocí vytvářeče (viz metoda setSortUrlCreator) vygeneruje URL pro řazení určitého sloupce v určeném pořadí.
public setSortBy(
string $sort_by
) : static
Nastavuje podle jakého sloupce jsou data řazena.

Parametr $sort_by je název sloupce, ovšem s prefixem. Prefix jsou znaky - a +, které určují směr řazení.

Znak "-" znamená řazení sestupné, znak "+" je řazení vzestupné.
public getSortBy(
) : string
Vrací aktuální řazení. Viz metoda setSortBy.
public setPaginator(
Data_Paginator $paginator
) : static
Nastaví instanci stránkovače dat.
public getPaginator(
) : Data_Paginator|null
Vrátí instanci stránkovače dat.
public header(
) : UI_dataGrid_header
Přístup k rendereru hlavičky gridu
public body(
) : UI_dataGrid_body
Přístup k rendereru těla gridu
public footer(
) : UI_dataGrid_footer
Přístup k rendereru zápatí gridu
Předchozí kapitola
Jet\UI_icon
Další kapitola
Jet\UI_dataGrid_column