pagination without reload while keeping filters applied (#521)

This commit is contained in:
Kevin Papst
2019-01-23 18:48:17 +01:00
committed by GitHub
parent 572f01ed74
commit 55d8bc9ba5
22 changed files with 60 additions and 38 deletions

View File

@@ -62,7 +62,7 @@ class TimesheetController extends AbstractController
return $this->render('admin/timesheet.html.twig', [
'entries' => $entries,
'page' => $page,
'page' => $query->getPage(),
'query' => $query,
'showFilter' => $form->isSubmitted(),
'toolbarForm' => $form->createView(),
@@ -78,7 +78,6 @@ class TimesheetController extends AbstractController
public function exportAction(Request $request)
{
$query = new TimesheetQuery();
$query->setOrder(TimesheetQuery::ORDER_ASC);
$form = $this->getToolbarForm($query);
$form->handleRequest($request);

View File

@@ -71,7 +71,7 @@ class TimesheetController extends AbstractController
return $this->render('timesheet/index.html.twig', [
'entries' => $entries,
'page' => $page,
'page' => $query->getPage(),
'query' => $query,
'showFilter' => $form->isSubmitted(),
'toolbarForm' => $form->createView(),
@@ -88,7 +88,6 @@ class TimesheetController extends AbstractController
public function exportAction(Request $request)
{
$query = new TimesheetQuery();
$query->setOrder(TimesheetQuery::ORDER_ASC);
$form = $this->getToolbarForm($query);
$form->handleRequest($request);

View File

@@ -25,6 +25,7 @@ use App\Repository\Query\ActivityQuery;
use App\Repository\Query\CustomerQuery;
use App\Repository\Query\ProjectQuery;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
@@ -213,4 +214,14 @@ abstract class AbstractToolbarForm extends AbstractType
}
);
}
/**
* @param FormBuilderInterface $builder
*/
protected function addHiddenPagination(FormBuilderInterface $builder)
{
$builder->add('page', HiddenType::class, [
'empty_data' => 1
]);
}
}

View File

@@ -27,6 +27,7 @@ class ActivityToolbarForm extends AbstractToolbarForm
$this->addVisibilityChoice($builder);
$this->addCustomerChoice($builder);
$this->addProjectChoice($builder);
$this->addHiddenPagination($builder);
}
/**

View File

@@ -25,6 +25,7 @@ class CustomerToolbarForm extends AbstractToolbarForm
{
$this->addPageSizeChoice($builder);
$this->addVisibilityChoice($builder);
$this->addHiddenPagination($builder);
}
/**

View File

@@ -26,6 +26,7 @@ class ProjectToolbarForm extends AbstractToolbarForm
$this->addPageSizeChoice($builder);
$this->addVisibilityChoice($builder);
$this->addCustomerChoice($builder);
$this->addHiddenPagination($builder);
}
/**

View File

@@ -29,5 +29,6 @@ class TimesheetAdminToolbarForm extends TimesheetToolbarForm
$this->addCustomerChoice($builder);
$this->addProjectChoice($builder);
$this->addActivityChoice($builder);
$this->addHiddenPagination($builder);
}
}

View File

@@ -31,6 +31,7 @@ class TimesheetToolbarForm extends AbstractToolbarForm
$this->addCustomerChoice($builder);
$this->addProjectChoice($builder);
$this->addActivityChoice($builder);
$this->addHiddenPagination($builder);
}
/**

View File

@@ -26,6 +26,7 @@ class UserToolbarForm extends AbstractToolbarForm
$this->addPageSizeChoice($builder);
$this->addVisibilityChoice($builder, 'label.active');
$this->addUserRoleChoice($builder);
$this->addHiddenPagination($builder);
}
/**

View File

@@ -29,7 +29,6 @@ class BeginDateType extends AbstractType
'widget' => 'single_text',
'html5' => false,
'format' => DateType::HTML5_FORMAT,
'empty_data' => (new \DateTime('first day of this month'))->format('Y-M-d')
]);
$resolver->setDefault('attr', function (Options $options) {

View File

@@ -29,7 +29,6 @@ class EndDateType extends AbstractType
'widget' => 'single_text',
'html5' => false,
'format' => DateType::HTML5_FORMAT,
'empty_data' => (new \DateTime('last day of this month'))->format('Y-M-d')
]);
$resolver->setDefault('attr', function (Options $options) {

View File

@@ -26,7 +26,7 @@ class PageSizeType extends AbstractType
$resolver->setDefaults([
'label' => 'label.pageSize',
'choices' => [10 => 10, 25 => 25, 50 => 50, 75 => 75, 100 => 100],
//'attr' => ['class' => 'selectpicker', 'data-live-search' => false, 'data-width' => '100%']
'placeholder' => null,
]);
}

View File

@@ -333,7 +333,7 @@ class TimesheetRepository extends AbstractRepository
$qb->andWhere('t.end <= :end')
->setParameter('end', $query->getEnd());
}
} elseif (null !== $query->getBegin()) {
} elseif (null !== $query->getEnd()) {
$qb->andWhere('t.begin <= :end')
->setParameter('end', $query->getEnd());
}