2017 © Pedro Peláez
 

library nette-grid-table

Grid table component for Nette Framework

image

geniv/nette-grid-table

Grid table component for Nette Framework

  • Monday, July 23, 2018
  • by geniv
  • Repository
  • 2 Watchers
  • 0 Stars
  • 150 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 15 Versions
  • 500 % Grown

The README.md

Grid table

inspired by: http://grid.mesour.com/version2/column/actions/, (*1)

Installation

$ composer require geniv/nette-grid-table

or, (*2)

"geniv/nette-grid-table": "^1.4"

require:, (*3)

"php": ">=7.0",
"nette/application": ">=2.4",
"nette/caching": ">=2.5",
"nette/component-model": ">=2.3",
"nette/utils": ">=2.4",
"geniv/nette-general-form": ">=1.0"

Include in application

neon configure services:, (*4)

services:
    - GridTable\GridTable

usage:, (*5)

protected function createComponentGridTable(GridTable $gridTable, VisualPaginator $visualPaginator): GridTable
{
    $visualPaginator->setPathTemplate(__DIR__ . '/templates/visualPaginator.latte');
    $gridTable->setPaginator($visualPaginator->getPaginator(), $visualPaginator);
    $gridTable->setItemPerPage($this->getDatabaseLimit());
//    $gridTable->setPage((int) 4);
//    $gridTable->setSortable(false);

    $gridTable->setTemplatePath(__DIR__ . '/templates/gridTable.latte');
    $gridTable->setSource($this->getSource());
//    $gridTable->setCacheId('123'.$neco);
//    $gridTable->setSource(new ArrayDataSource($this->configureSection->getListSection()));
//    $gridTable->setSource(new ApiDataSource(function ($limit, $offset) {
//        return $this->apiModel->getListApi($limit, $offset);
//    }, 'totalCount', 'result'));

    $pk = 'id';
    $gridTable->setPrimaryKey($pk);
    $gridTable->setDefaultOrder(['id' => 'asc']);
    $gridTable->setDefaultOrder(['name+0', 'id asc']);

    $gridTable->addColumn($pk, '#');

    $column = $gridTable->addColumn('username', 'Jmeno');
    $column->setOrdering(true);
    $column->setData(['foo' => 'bar']);

//        $column->setCallback(function ($data, Column $context) { return $data; });
    $column->setCallback(function ($data) { return $data; });

    $column = $gridTable->addColumn('username', 'Jmeno');
    $column->setTemplatePath(__DIR__ . '/templates/gridTableCheckbox.latte');

    // edit
    $gridTable->addButton('content-grid-table-edit')
        ->setLink($this->presenterName . ':edit', ['idSection' => $this->idSection, 'id' => '%id', null])
        ->setClass('edit-class')
        ->setData(['svg' => self::SVG_USE_EDIT])
        ->setPermission($this->idSection, 'edit');
//        ->setData($configure);

    // delete
    $gridTable->addButton('content-grid-table-delete')
        ->setLink($this->presenterName . ':delete', ['idSection' => $this->idSection, 'id' => '%id'])
        ->setClass('btn btn-delete')
        ->setData(['svg' => self::SVG_USE_DELETE])
        ->setPermission($this->idSection, 'delete')
        ->setConfirm('content-grid-table-delete-confirm')
        ->setCallback(function (array $data, Button $context) { return $data; });

    return $gridTable;
}
Drivers:
  • Dibi IDataSource instance (native)
  • DibiDataSource($data)
  • ArrayDataSource(array $data)
  • FinderDataSource(Finder $finder)
  • ApiDataSource(callable $function($limit, $offset){ return ApiCall($limit, $offset); }, 'totalCount', 'result')
class GridTable
cleanCache($name = 'grid')
setTemplatePath(string $path)
setSource(IDataSource $source): self
setSourceLimit(int $limit, int $offset = 0): self
setItemPerPage(int $itemPerPage, bool $exception = false): self  - probably load data from session
setPage(int $page, bool $exception = false)
setPaginator(IComponent $visualPaginator = null, callable $callback = null): self
setPaginatorRange(array $range): self
setSortable(bool $state): self
isSortable(): bool
setPrimaryKey(string $pk): self
setDefaultOrder(array $order): self
addButton(string $caption): Button
addColumn(string $name, string $header = null): Column

onSelectRow(array $array)
onColumnOrder(string $column, string|null $direction)
onSelectFilter(string $column, string $filter)
onSelectPaginatorRange(int $value)
class Column
setOrdering(bool $ordering = true): self
setOrderingBy(string $column): self
setData(array $data): self
// internal variable: $column, $value, $data + custom over setData([])
setCallback(callable $callback): self  -  function ($data, Column $context) { return $data[$context->getName()]; }
setTemplatePath(string $path, array $data = []): self
setFormatDateTime(string $format): self
setFormatBoolean(): self
setFormatString(string $format): self
//setFilter(array $values): self
class Button
setCaption(string $caption): self
setLink(string $link, array $arguments = []): self
setUrl(array $arguments = []): self
setConfirm(string $text): self
setPermission(string $resource, string $privilege): self
setClass(string $class): self
setData(array $data): self
setCallback(callable $callback): self  -  function ($data, Button $context) { return $data[$context->getName()]; }

set page in external call:, (*6)

$this['gridTable']->setPage((int) $page);

usage:, (*7)

<a n:if="$user->isAllowed(...)" n:href="add">add</a>
<br>
{control gridTable}

usage with Multiplier:, (*8)

public function createComponentGridTableMultiplier(GridTable $gridTable): Multiplier
{
    return new Multiplier(function ($index) use ($gridTable) {
        $gridTable = clone $gridTable;

        $source = clone $this->getSource();
        // ...

        return $gridTable;
    });
}

The Versions

23/07 2018

dev-develop

dev-develop

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

09/07 2018

dev-master

9999999-dev

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

09/07 2018

v1.1.2

1.1.2.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

08/07 2018

v1.1.1

1.1.1.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

07/07 2018

v1.1.0

1.1.0.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

06/07 2018

v1.0.9

1.0.9.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

02/07 2018

v1.0.8

1.0.8.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

30/06 2018

v1.0.7

1.0.7.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

25/06 2018

v1.0.6

1.0.6.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

22/06 2018

v1.0.5

1.0.5.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

16/06 2018

v1.0.4

1.0.4.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

03/06 2018

v1.0.3

1.0.3.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

18/05 2018

v1.0.2

1.0.2.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

27/04 2018

v1.0.1

1.0.1.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv

09/04 2018

v1.0.0

1.0.0.0

Grid table component for Nette Framework

  Sources   Download

MIT

The Requires

 

by Radek Frystak

table grid nette geniv