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_page: 25,
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_name, bool $desc ) : string
|
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 |