Ublaboo datagrid – date filter a default filter date
- Čamo
- Člen | 798
Zdravím,
Mám v datagride dátumové pole, ktoré ma defaultne nastavený filter
na –14 dní. Je tam datepicker a všetko funguje až do chvíle, keď niekto
ručne vymaže hodnotu dátumu vo filtri. Aplikácia to zrejme chápe ako
filtrovanie a nie ako návrat na defaultné hodnoty. Ale pritom sa mi stratí
reset button a nemôžem sa vrátiť na ten default filter –14 dní. Neviem
niekto prečo sa pri vymazaní hodnôt z date filtra nenastavia defaultné
hodnoty?
Takto vyzerá kód:
$grid->addColumnDateTime('closed', "$cDomain.date")
->setRenderer( function ( $item ) use ( $cDomain ) {
/** @var Task $item */
$title = $this->translator->translate("$cDomain.$item->state");
$title .= ' - ' . $item->answer;
$withOrders = $item->createdOrders->get()->countStored() ? ' - ' . $this->translator->translate("$cDomain.order") : '';
return '<span class="' . ($item->state == Task::STATE_RESOLVED ? 'text-primary' : 'text-danger') . '" title="' . $title . '">' . $item->closed->format( 'j. n. Y' ) . $withOrders . '</span>';
})
->setTemplateEscaping( FALSE )
->setSortable()
->setFilterDate()
->setCondition( function ($fluent, $value) {
Debugger::log($value);
/** @var \Nextras\Orm\Mapper\Dbal\DbalCollection $fluent */
$start = DateTime::createFromFormat( 'j. n. Y', $value)->setTime( 0, 0, 0 );
$end = DateTime::createFromFormat( 'j. n. Y', $value)->setTime( 23, 59, 59 );
$fluent->getQueryBuilder()
->from('tasks', 'tasks')
->andWhere( 'tasks.closed > %dt', $start )
->andWhere( 'tasks.closed < %dt', $end );
});
$defaultDate = (new DateTime())->modify('- 14 Day');
$grid->setDefaultFilter(['closed' => $defaultDate->format( 'j. n. Y' )]);
Asi by mi stačilo keby sa neskrýval reset button ale lepšie by bolo keby sa pri zmazaní nastavili defaultné filtre. Chcel som to obísť cez tan callback vo filtri ale ten sa vôbec nespustí.
Editoval Čamo (21. 6. 2018 14:58)
- Ondřej Kubíček
- Člen | 494
neznám ten addon, ale určitě při ručním výmazu se ti spustí ten
filter callback a v tom $value
je co? tak nastavíš těch
14 dní tam…