The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

DESCRIPTION

jQuery::DataTables - серверная часть для выполнения AJAX запросов DataTables

SYNOPSYS

use strict; use jQuery::DataTables;

... my $dt = new jQuery::DataTables( cgi => $cgi, dbh => $c->app->dbh ); my $res = $dt->getTableData( 'SELECT DISTINCT id, col_int, col_text, col_real FROM datatable', [qw{id col_int col_text col_real}] ); $c->render( json => $res );

prepareDataTableRequest()

Подготавливает данные из DataTable запроса для удобного использования и возвращает хэш с данными. Делается это для упрощения использования странного формата, заложенного в DataTables изначально.

DataTables param() - описания из документации

    Type    Name    Info
    --------------------
    int     iDisplayStart       Display start point in the current data set.
    $iDisplayStart

    int     iDisplayLength      Number of records that the table can display in the current draw.
    $iDisplayLength             It is expected that the number of records returned will be equal to this number,
                                unless the server has fewer records to return.

    int     iColumns            Number of columns being displayed (useful for getting individual column search info)
    $iColumns

    string  sSearch             Global search field
    $sSearch

    bool    bRegex              True if the global filter should be treated as a regular expression for advanced filtering, false if not.
    $bRegex

    bool    bSearchable_(int)   Indicator for if a column is flagged as searchable or not on the client-side
    @abSearchable

    string  sSearch_(int)       Individual column filter
    @asSearch

    bool    bRegex_(int)        True if the individual column filter should be treated as a regular expression
    @abRegex                     for advanced filtering, false if not

    bool    bSortable_(int)     Indicator for if a column is flagged as sortable or not on the client-side
    @abSortable

    int     iSortingCols        Number of columns to sort on
    $iSortingCols

    int     iSortCol_(int)      Column being sorted on (you will need to decode this number for your database)
    @aiSortCol

    string  sSortDir_(int)      Direction to be sorted - "desc" or "asc".
    @asSortDir

    string  mDataProp_(int)     The value specified by mDataProp for each column. This can be useful
    @amDataProp                  for ensuring that the processing of data is independent from the order of the columns.

    string  sEcho               Information for DataTables to use for rendering.
    $sEcho

getTableData ()

Мы можем вызывать эту функцию с указанием запроса и какие столбцы он возвращает, например

    getTableData ('SELECT a,b,c FROM table', ['a', 'b', 'c'])

Названия столбцов в фильтрах будут использоваться с указанием их в кавычках, так что надо указывать имена столбцов так, чтобы база данных их правильно поняла. Многие СУБД позволяют имена столюцов возвращать большими или маленькими буквами, по флагу FetchHashKeyName => 'NAME_lc' или FetchHashKeyName => 'NAME_uc'.

К этому запросу добавляется поисковое выражение WHERE, сортировка ORDER BY и лимиты LIMIT ... OFFSET

Поисковое выражение может быть одно на все столбцы, либо разные выражения на разные (некоторые!) столбцы.

Поисковое выражение должно трактоваться как regexp либо для всех столбцов, либо regexp для некоторых столбцов.

Сначала выполняется общее поисковое выражение (если указано), затем для полученного результата выполняются индивидуальные для столбцов поисковые выражения. Ясно, что лучше использовать только индивидуальные выражения.

Данная реализация не учитывает флаг bRegex - так как пока непонятно, как обеспечить исполнение этого флага для разных СУБД.

AUTHORS

Konstantin Tokar <konstantin@tokar.ru>

1 POD Error

The following errors were encountered while parsing the POD:

Around line 21:

Non-ASCII character seen before =encoding in 'серверная'. Assuming UTF-8