Skip to content

Commit 5703497

Browse files
committed
DataSource update - custom condition, ref #3
1 parent 28f9ca9 commit 5703497

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

src/NetteDatabaseDataSource.php

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@
1111
use Nette\Database\Context;
1212
use Ublaboo\DataGrid\Filter;
1313
use Ublaboo\DataGrid\Utils\Sorting;
14-
use Ublaboo\DataGrid\DataSource\FilterableDataSource;
1514
use Ublaboo\DataGrid\DataSource\IDataSource;
1615
use Ublaboo\NetteDatabaseDataSource\Exception\NetteDatabaseDataSourceException;
1716

18-
class NetteDatabaseDataSource extends FilterableDataSource implements IDataSource
17+
class NetteDatabaseDataSource implements IDataSource
1918
{
2019

2120
/**
@@ -135,6 +134,42 @@ protected function applyWhere($column, $value, $operator = '=')
135134
********************************************************************************/
136135

137136

137+
/**
138+
* Filter data
139+
* @param array $filters
140+
* @return static
141+
*/
142+
public function filter(array $filters)
143+
{
144+
foreach ($filters as $filter) {
145+
if ($filter->isValueSet()) {
146+
if ($filter->hasConditionCallback()) {
147+
$this->sql = Callback::invokeArgs(
148+
$filter->getConditionCallback(),
149+
[$this->sql, $filter->getValue(), $this->query_parameters]
150+
);
151+
} else {
152+
if ($filter instanceof Filter\FilterText) {
153+
$this->applyFilterText($filter);
154+
} else if ($filter instanceof Filter\FilterMultiSelect) {
155+
$this->applyFilterMultiSelect($filter);
156+
} else if ($filter instanceof Filter\FilterSelect) {
157+
$this->applyFilterSelect($filter);
158+
} else if ($filter instanceof Filter\FilterDate) {
159+
$this->applyFilterDate($filter);
160+
} else if ($filter instanceof Filter\FilterDateRange) {
161+
$this->applyFilterDateRange($filter);
162+
} else if ($filter instanceof Filter\FilterRange) {
163+
$this->applyFilterRange($filter);
164+
}
165+
}
166+
}
167+
}
168+
169+
return $this;
170+
}
171+
172+
138173
/**
139174
* Get count of data
140175
* @return int

0 commit comments

Comments
 (0)