save default search options (#2445)

* set default times for daterange objects
* allow to show order and order by fields
* move search to modal
* more options for page size
* save export visibility in cookie
This commit is contained in:
Kevin Papst
2021-03-20 01:10:45 +01:00
committed by GitHub
parent 954ba7c937
commit 87d07ffaaf
83 changed files with 903 additions and 410 deletions

View File

@@ -13,13 +13,7 @@ use DateTime;
final class DateRange
{
/**
* @var DateTime
*/
private $begin;
/**
* @var DateTime
*/
private $end;
public function getBegin(): ?DateTime
@@ -30,6 +24,7 @@ final class DateRange
public function setBegin(DateTime $begin): DateRange
{
$this->begin = $begin;
$this->begin->setTime(0, 0, 0);
return $this;
}
@@ -42,6 +37,7 @@ final class DateRange
public function setEnd(DateTime $end): DateRange
{
$this->end = $end;
$this->end->setTime(23, 59, 59);
return $this;
}

View File

@@ -300,6 +300,8 @@ abstract class AbstractToolbarForm extends AbstractType
protected function addHiddenOrder(FormBuilderInterface $builder)
{
@trigger_error('addHiddenOrder() is deprecated and will be removed with 2.0, use the new search modal instead', E_USER_DEPRECATED);
$builder->add('order', HiddenType::class, [
'constraints' => [
new Choice(['choices' => [BaseQuery::ORDER_ASC, BaseQuery::ORDER_DESC]])
@@ -307,8 +309,21 @@ abstract class AbstractToolbarForm extends AbstractType
]);
}
protected function addOrder(FormBuilderInterface $builder)
{
$builder->add('order', ChoiceType::class, [
'label' => 'label.order',
'choices' => [
'label.asc' => BaseQuery::ORDER_ASC,
'label.desc' => BaseQuery::ORDER_DESC
]
]);
}
protected function addHiddenOrderBy(FormBuilderInterface $builder, array $allowedColumns)
{
@trigger_error('addHiddenOrderBy() is deprecated and will be removed with 2.0, use the new search modal instead', E_USER_DEPRECATED);
$builder->add('orderBy', HiddenType::class, [
'constraints' => [
new Choice(['choices' => $allowedColumns])
@@ -316,6 +331,19 @@ abstract class AbstractToolbarForm extends AbstractType
]);
}
protected function addOrderBy(FormBuilderInterface $builder, array $allowedColumns)
{
$all = [];
foreach ($allowedColumns as $id => $name) {
$label = \is_int($id) ? 'label.' . $name : $id;
$all[$label] = $name;
}
$builder->add('orderBy', ChoiceType::class, [
'label' => 'label.orderBy',
'choices' => $all
]);
}
protected function addTagInputField(FormBuilderInterface $builder)
{
$builder->add('tags', TagsType::class, [

View File

@@ -45,8 +45,8 @@ class ActivityToolbarForm extends AbstractToolbarForm
$this->addVisibilityChoice($builder);
$this->addPageSizeChoice($builder);
$this->addHiddenPagination($builder);
$this->addHiddenOrder($builder);
$this->addHiddenOrderBy($builder, ActivityQuery::ACTIVITY_ORDER_ALLOWED);
$this->addOrder($builder);
$this->addOrderBy($builder, ActivityQuery::ACTIVITY_ORDER_ALLOWED);
}
/**

View File

@@ -27,8 +27,8 @@ class CustomerToolbarForm extends AbstractToolbarForm
$this->addVisibilityChoice($builder);
$this->addPageSizeChoice($builder);
$this->addHiddenPagination($builder);
$this->addHiddenOrder($builder);
$this->addHiddenOrderBy($builder, CustomerQuery::CUSTOMER_ORDER_ALLOWED);
$this->addOrder($builder);
$this->addOrderBy($builder, CustomerQuery::CUSTOMER_ORDER_ALLOWED);
}
/**

View File

@@ -28,8 +28,8 @@ class ProjectToolbarForm extends AbstractToolbarForm
$this->addVisibilityChoice($builder);
$this->addPageSizeChoice($builder);
$this->addHiddenPagination($builder);
$this->addHiddenOrder($builder);
$this->addHiddenOrderBy($builder, ProjectQuery::PROJECT_ORDER_ALLOWED);
$this->addOrder($builder);
$this->addOrderBy($builder, ProjectQuery::PROJECT_ORDER_ALLOWED);
}
/**

View File

@@ -23,8 +23,8 @@ class TagToolbarForm extends AbstractToolbarForm
$this->addSearchTermInputField($builder);
$this->addPageSizeChoice($builder);
$this->addHiddenPagination($builder);
$this->addHiddenOrder($builder);
$this->addHiddenOrderBy($builder, TagQuery::TAG_ORDER_ALLOWED);
$this->addOrder($builder);
$this->addOrderBy($builder, TagQuery::TAG_ORDER_ALLOWED);
}
/**

View File

@@ -24,8 +24,8 @@ class TeamToolbarForm extends AbstractToolbarForm
$this->addSearchTermInputField($builder);
$this->addPageSizeChoice($builder);
$this->addHiddenPagination($builder);
$this->addHiddenOrder($builder);
$this->addHiddenOrderBy($builder, TeamQuery::TEAM_ORDER_ALLOWED);
$this->addOrder($builder);
$this->addOrderBy($builder, TeamQuery::TEAM_ORDER_ALLOWED);
}
/**

View File

@@ -41,8 +41,8 @@ class TimesheetToolbarForm extends AbstractToolbarForm
$this->addExportStateChoice($builder);
$this->addPageSizeChoice($builder);
$this->addHiddenPagination($builder);
$this->addHiddenOrder($builder);
$this->addHiddenOrderBy($builder, TimesheetQuery::TIMESHEET_ORDER_ALLOWED);
$this->addOrder($builder);
$this->addOrderBy($builder, TimesheetQuery::TIMESHEET_ORDER_ALLOWED);
}
/**

View File

@@ -28,8 +28,8 @@ class UserToolbarForm extends AbstractToolbarForm
$this->addVisibilityChoice($builder, 'label.active');
$this->addPageSizeChoice($builder);
$this->addHiddenPagination($builder);
$this->addHiddenOrder($builder);
$this->addHiddenOrderBy($builder, UserQuery::USER_ORDER_ALLOWED);
$this->addOrder($builder);
$this->addOrderBy($builder, UserQuery::USER_ORDER_ALLOWED);
}
/**

View File

@@ -27,13 +27,28 @@ class PageSizeType extends AbstractType
'label' => 'label.pageSize',
'choices' => [
10 => 10,
15 => 15,
20 => 20,
25 => 25,
30 => 30,
35 => 35,
40 => 40,
45 => 45,
50 => 50,
75 => 75,
60 => 60,
70 => 70,
80 => 80,
90 => 90,
100 => 100,
125 => 125,
150 => 150,
175 => 175,
200 => 200,
250 => 250,
300 => 300,
350 => 350,
400 => 400,
450 => 450,
500 => 500
],
'placeholder' => null,

View File

@@ -33,7 +33,7 @@ class SearchTermType extends AbstractType
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'label' => 'search',
'label' => 'label.searchTerm',
'required' => false,
'constraints' => [
new Length(['min' => 3, 'allowEmptyString' => true])