Przejdź do głównej treści

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:

  1. Stworzenie obiektu lista w dialogu:
$naszaNowaLista = new ProjectList($this->name.'LST', md5(__CLASS__));
  1. Wywołanie metody createList() w celu utworzenia listy w dialogu:
$naszaNowaLista->createList();
  1. 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)

  1. SQLDataSource
  2. ArrayDataSource

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:

  1. keyval - zostanie przypisany do wartości id w wierszu wyświetlonej tabeli (html) oraz do keyval
  2. 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:

  1. Plugin dla Ustawień, które wyświetlają się w stopce tabeli 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'));
  1. Plugin do odświeżania tabeli Plugin do odświeżania tabeli
require_once(LIB_PATH.'dbviews/SimpleTableRefreshListPlugin.inc');
$this->list->plugIn(new SimpleTableRefreshListPlugin($this->name.'RefLiPlug'));
  1. Plugin do zliczania liczby wierszy Plugin do zliczania liczby wierszy
require_once(LIB_PATH.'dbviews/SimpleTableCountPlugin.inc');
$this->list->plugIn(new SimpleTableCountPlugin($this->name.'CountPlug'));
  1. Plugin do stronicowania Plugin do stronicowania
require_once(LIB_PATH.'dbviews/SimpleTablePagerPlugin.inc');
$this->list->plugIn(new SimpleTablePagerPlugin($this->name.'PagerPlug'));
  1. Plugin do ustawiania liczby wierszy przy zastosowaniu stronicowania Plugin do ustawiania liczby wierszy przy zastosowaniu stronicowania
require_once(LIB_PATH.'dbviews/SimpleTableResizePlugin.inc');
$this->list->plugIn(new SimpleTableResizePlugin($this->name.'ResPlug'));
  1. Plugin do wyszukiwania 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:

  1. css - w formie stringa,
$this->list->format['projid']['css'] = 'width:150px; text-align: left;';
  1. resize - w formie bool-a, czy możemy rozszerzać kolumnę,
$this->list->format['projid']['resize'] = TRUE;
  1. searchable - w formie bool-a, czy ma być możliwe wyszukiwanie
$this->list->format['projid']['searchable'] = TRUE;
  1. tooltip - w formie stringa,
$this->list->format['projid']['tooltip'] = 'extended';
  1. info__ - w formie stringa,
$this->list->format['projid']['info'] = Translator::translate('Imię nazwisko');
  1. static - w formie tablicy, przekazujemy nazwę statycznej metody, którą chcemy wykorzystać
$this->list->format['projid']['static'] = [__CLASS__.'::printPhoto', $this->path];
  1. 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];