onWhere - landrisek/impala GitHub Wiki
IBuilder::where
First argument of where method is can be name of column alias defined in select statement and second (optional) is its value:
$this->grid->where('column', 'value')
$this->grid->where('column !=', 'value')
$this->grid->where('column >', 'value')
First argument of where method can be WHERE query.:
$this->grid->where('column > 10')
Third (optional) argument can be bool or callback which decide if given where statement would be used at all:
$this->grid->where('column', 'value', !empty($value) }
$this->grid->where('column', 'value', function($value) { return is_numeric($value) }
IBuilder::filter
Note that callbacks modify rows after fetching data, so filter and sorting does not apply to this data. You have to define callback for filtering with method IBuilder::onFilter. Or you can use @unfilter for these cases. You can also achieve similar results to use modification inside SQL query.
E.g.
$callback = function (IBuilder $builder, array $row) {
$from = new DateTime($builder->getFilter($this->transactions . '.date >='));
$to = new DateTime($builder->getFilter($this->transactions. '.date <='));
$row['average'] = round($row['sold'] / $from->diff($to)->format('%a'), 2);
return $row;
};
can be replaced by:
date
AS table.date, SUM(fc_transactions.amount) / (SELECT DISTINC(FORMAT_DATE(table.date, "Y.m.d.") WHERE date >= date
)
However, latter mentioned would have more expensive performance. If you overwrite string value in row to array, its values will be used as properties in react component including onChange, onClick, etc. values.
->onBuild('column', function(IBuilder $builder, array $row) { $row['column'] = ['value' => $row['column'], 'tag'=>'input',Attributes'=>['type' => 'text']]; return $row; })
Date formating
In config.neon:
parameters:
format: Y-m-d
date:
edit: Y-m-d
select: GET_FORMAT(DATE,"EUR")
query: Y-m-d
text: d.m.Y
time:
edit: 'Y-m-d H:i:s'
select: GET_FORMAT(DATE,"EUR")
query: Y-m-d
text: 'd.m.Y H:i:s'
Edit formats are used in EditForm, select in filter SelectBox, query in database queries and text in filter input text.
Url default parameters
To run default filtering:
<a href={plink 'Presenter:action', 'impala-spice'=>'{"column":["key"]}'} >
<a href={plink 'Presenter:action', 'impala-spice'=>'{"column":["_1"]}'} >