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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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, [
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user