Skip to content

Filter with default filter #671

@camohub

Description

@camohub

Hi,
I found an issue in filters. If I have date filter on column and it has default filter value. The problem appears if I clear filter input manually to empty string "". Datagrid does not set default filter in this case and also hides the reset button. So I am not able to reset grid to default filter. Here is the code. I am using it with Nextras ORM.

$grid->addColumnDateTime('closed', "$cDomain.date")
    ->setRenderer( function ( $item ) use ( $cDomain ) {
        /** @var Task $item */
        $title = $this->translator->translate("$cDomain.$item->state");
        return '<span title="' . $title . '">' . $item->closed->format( 'j. n. Y' ) .  '</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' )]);

It is not fatal but it has to be fixed via session.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Triage: Now

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions