diff --git a/.docs/README.md b/.docs/README.md deleted file mode 100644 index 16b38c9..0000000 --- a/.docs/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# Contributte\datagrid-nette-database-data-source - -## Content - -- [Usage - how use it](#usage) - -## Usage - -```php -/** - * @var Nette\Database\Context - * @inject - */ -public $ndb; - - -public function createComponentNetteGrid($name) -{ - /** - * @type Ublaboo\DataGrid\DataGrid - */ - $grid = new DataGrid($this, $name); - - $query = - 'SELECT p.*, GROUP_CONCAT(v.code SEPARATOR ", ") AS variants - FROM product p - LEFT JOIN product_variant p_v - ON p_v.product_id = p.id - WHERE p.deleted IS NULL - AND (product.status = ? OR product.status = ?)'; - - $params = [1, 2]; - - /** - * @var Ublaboo\NetteDatabaseDataSource\NetteDatabaseDataSource - * - * @param Nette\Database\Context - * @param $query - * @param $params|NULL - */ - $datasource = new NetteDatabaseDataSource($this->ndb, $query, $params); - - $grid->setDataSource($datasource); - - $grid->addColumnText('name', 'Name') - ->setSortable(); - - $grid->addColumnNumber('id', 'Id') - ->setSortable(); - - $grid->addColumnDateTime('created', 'Created'); - - $grid->addFilterDateRange('created', 'Created:'); - - $grid->addFilterText('name', 'Name and id', ['id', 'name']); - - $grid->addFilterSelect('status', 'Status', ['' => 'All', 1 => 'Online', 0 => 'Ofline', 2 => 'Standby']); - - /** - * Etc - */ -} -``` diff --git a/README.md b/README.md index 1963f7e..19f040d 100644 --- a/README.md +++ b/README.md @@ -17,25 +17,81 @@ Website 🚀 contributte.org | Contact 👨🏻‍💻 paveljanda.com, f3l1x.io | Twitter 🐦 @contributte

-## Usage +Nette Database data source adapter for [ublaboo/datagrid](https://github.com/contributte/datagrid), useful for grids backed by custom SQL queries. + +## Versions -To install latest version of `contributte/datagrid-nette-database-data-source` use [Composer](https://getcomposer.org). +| State | Version | Branch | PHP | +|--------|---------|--------|------| +| dev | ~3.0.0 | master | ^7.2 | +| stable | ~2.0.0 | master | ^7.2 | +| stable | ~1.1.0 | master | ^5.6 | + +## Installation + +To install latest version of `ublaboo/datagrid-nette-database-data-source` use [Composer](https://getcomposer.org). ```bash composer require ublaboo/datagrid-nette-database-data-source ``` -## Documentation +## Usage -For details on how to use this package, check out our [documentation](.docs). +Use this data source when your grid is backed by a custom SQL query instead of a Nette Database selection. Pass the Nette Database connection, SQL, and parameters to `NetteDatabaseDataSource`, then configure the grid normally. -## Versions +```php +use Nette\Database\Context; +use Ublaboo\DataGrid\DataGrid; +use Ublaboo\NetteDatabaseDataSource\NetteDatabaseDataSource; + +final class ProductPresenter extends Nette\Application\UI\Presenter +{ + /** @var Context */ + private $database; + + public function __construct(Context $database) + { + $this->database = $database; + } + + public function createComponentNetteGrid(string $name): DataGrid + { + $grid = new DataGrid($this, $name); + + $query = + 'SELECT p.*, GROUP_CONCAT(v.code SEPARATOR ", ") AS variants + FROM product p + LEFT JOIN product_variant p_v + ON p_v.product_id = p.id + WHERE p.deleted IS NULL + AND (p.status = ? OR p.status = ?)'; -| State | Version - | Branch | PHP | -|--------|------------|--------|------| -| dev | ~3.0.0 | master | ^7.2 | -| stable | ~2.0.0 | master | ^7.2 | -| stable | ~1.1.0 | master | ^5.6 | + $params = [1, 2]; + + $datasource = new NetteDatabaseDataSource($this->database, $query, $params); + + $grid->setDataSource($datasource); + + $grid->addColumnText('name', 'Name') + ->setSortable(); + + $grid->addColumnNumber('id', 'Id') + ->setSortable(); + + $grid->addColumnDateTime('created', 'Created'); + + $grid->addFilterDateRange('created', 'Created:'); + + $grid->addFilterText('name', 'Name and id', ['id', 'name']); + + $grid->addFilterSelect('status', 'Status', ['' => 'All', 1 => 'Online', 0 => 'Offline', 2 => 'Standby']); + + // Add more columns, filters, and actions as needed. + + return $grid; + } +} +``` ## Development