Simple Table 2
Widok
Przykładowy plik z listą można pobrać tutaj.
Listy należy tworzyć w osobnym pliku z postfix-em List, np. UsersList
Dzięki temu w dialogu tworzymy instancję listy:
- Stworzenie obiektu lista w dialogu:
$naszaNowaLista = new ProjectList($this->name.'LST', md5(__CLASS__));
- Wywołanie metody
createList()
w celu utworzenia listy w dialogu:
$naszaNowaLista->createList();
- Ustawienie minimalnej liczby wierszy za pomocą polecenia:
$naszaNowaLista->minRows = 15;
Simple Table 2 może używać typów źródeł danych, (dokumentację jak utworzyć konkretny typ DataSource znajdziesz tutaj)
Listę należy przypisać do atrybutu klasy. Umożliwia to sprawdzenie czy jej instancja została wcześniej utworzona.
Dla listy typu SimpleTable2 możemy ustawić parametry:
- keyval - zostanie przypisany do wartości id w wierszu wyświetlonej tabeli (html) oraz do keyval
- clsnam - zostanie przypisany do wartości clsnam w wierszu wyświetlonej tabeli (html)
$this->list = new SimpleTable2($this->name, NULL, $this->saveName);
$this->list->setDataSource($this->createDataSource());
$this->list->top = '50px';
$this->list->left = '0px';
$this->list->height = '90%';
$this->list->width = '100%';
$this->list->class = 'b-s-b sbg';
$this->list->keyval = 'prc_id';
$this->list->clsnam = 'projid';
W celu dodania kolumny należy utworzyć tabelę z odpowiednimi kluczami i przesłać ją do metody setColumns
$this->list->setColumns([
'projid' => Translator::translate('ID'),
'projnm' => Translator::translate('Nazwa'),
'fullnm' => Translator::translate('Osoba'),
'start_' => Translator::translate('Start'),
'end___' => Translator::translate('Koniec'),
]);
Następnie należy ustawić formatowanie dla kolumn za pomocą odwołania się do atrybutu format
, która jest tablicą wcześniej ustawionych kolumn.
Przykładowo dla klucza projid
odwołujemy się za pomocą:
$this->list->format['projid']
Następnie możemy ustawić dodatkowe własności kolumny, takie jak:
- 'css' czyli style css-owe,
- 'resize' czyli możliwość zmiany szerokości,
- 'searchable' czyli dodanie do wyszukiwarki, by móc wyszukiwać dane wg tego parametru,
- 'builtin' czyli format danych np. jako 'date' itp.
W liście możemy używać pluginów:
- Plugin dla Ustawień, które wyświetlają się w stopce tabeli
require_once(LIB_PATH.'dbviews/SimpleTableControlsPlugin.inc');
$this->list->plugIn(new SimpleTableControlsPlugin($this->name.'CtrlPlug'));
- Plugin do odświeżania tabeli
require_once(LIB_PATH.'dbviews/SimpleTableRefreshListPlugin.inc');
$this->list->plugIn(new SimpleTableRefreshListPlugin($this->name.'RefLiPlug'));
- Plugin do zliczania liczby wierszy
require_once(LIB_PATH.'dbviews/SimpleTableCountPlugin.inc');
$this->list->plugIn(new SimpleTableCountPlugin($this->name.'CountPlug'));
- Plugin do stronicowania
require_once(LIB_PATH.'dbviews/SimpleTablePagerPlugin.inc');
$this->list->plugIn(new SimpleTablePagerPlugin($this->name.'PagerPlug'));
- Plugin do ustawiania liczby wierszy przy zastosowaniu stronicowania
require_once(LIB_PATH.'dbviews/SimpleTableResizePlugin.inc');
$this->list->plugIn(new SimpleTableResizePlugin($this->name.'ResPlug'));
- Plugin do wyszukiwania
require_once(LIB_PATH.'dbviews/SimpleTableSearchBarPlugin.inc');
$this->searchPlugin = new SimpleTableSearchBarPlugin($this->name.'_SearchPlug');
$this->searchPlugin->setFilterControl($this->searchFilter->getName());
$this->searchPlugin->onSearch = 'App.'.$this->name.'.refresh(null, true);';
$this->searchPlugin->onClear = 'App.'.$this->name.'.refresh(null, true);';
$this->list->plugIn($this->searchPlugin);
$this->searchPlugin->printDock();
Formatowanie wierszy
Możemy formatować całe wiersze wg. wybranej kolumny z bazy. By móc to zrobić wystarczy użyć onPrintRow
$this->list->onPrintRow = [__CLASS__.'::onPrintRow', $this->path];
oraz dodać w klasie nową metodę
public static function onPrintRow($row, &$css): void {
if (isset($row['is_del']) AND ($row['is_del'] == 't')) {
$css .= SimpleTable2::DELETED_STYLE;
}
}
dzięki zastosowaniu ** SimpleTable2::DELETED_STYLE ** tekst w całym wierszu zostanie przekreślony.
Formatowanie danych
Realizujemy przez wywołanie metody format
, a następnie przekazujemy klucz w tablicy pierw klucz Kolumny np. 'projid'
$this->list->format['projid']
Typy formatowania:
- css - w formie stringa,
$this->list->format['projid']['css'] = 'width:150px; text-align: left;';
- resize - w formie bool-a, czy możemy rozszerzać kolumnę,
$this->list->format['projid']['resize'] = TRUE;
- searchable - w formie bool-a, czy ma być możliwe wyszukiwanie
$this->list->format['projid']['searchable'] = TRUE;
- tooltip - w formie stringa,
$this->list->format['projid']['tooltip'] = 'extended';
- info__ - w formie stringa,
$this->list->format['projid']['info'] = Translator::translate('Imię nazwisko');
- static - w formie tablicy, przekazujemy nazwę statycznej metody, którą chcemy wykorzystać
$this->list->format['projid']['static'] = [__CLASS__.'::printPhoto', $this->path];
- arg - tablica argumentów, którą chcemy przekazać do wcześniej zadeklarowanej metody w
static
$this->list->format['projid']['arg'] = ['name' => $this->name];
Przykład formatowania
$this->list->format['projid']['css'] = 'width:150px; text-align: left;';
$this->list->format['projid']['resize'] = TRUE;
$this->list->format['projid']['searchable'] = TRUE;
$this->list->format['projid']['tooltip'] = 'extended';
$this->list->format['projid']['info__'] = Translator::translate('Imię nazwisko - stanowisko');
$this->list->format['projid']['static'] = [__CLASS__.'::printPhoto', $this->path];
$this->list->format['projid']['arg'] = ['name' => $this->name];