highlight invisible items (#2493)

This commit is contained in:
Kevin Papst
2021-04-07 19:14:33 +02:00
committed by GitHub
parent 68bb01d064
commit cdad5913ca
27 changed files with 218 additions and 155 deletions

View File

@@ -272,21 +272,21 @@ class ActivityRepository extends EntityRepository
->leftJoin('p.customer', 'c')
;
$orderBy = $query->getOrderBy();
switch ($orderBy) {
case 'project':
$orderBy = 'p.name';
break;
case 'customer':
$orderBy = 'c.name';
break;
default:
$orderBy = 'a.' . $orderBy;
break;
foreach ($query->getOrderGroups() as $orderBy => $order) {
switch ($orderBy) {
case 'project':
$orderBy = 'p.name';
break;
case 'customer':
$orderBy = 'c.name';
break;
default:
$orderBy = 'a.' . $orderBy;
break;
}
$qb->addOrderBy($orderBy, $order);
}
$qb->addOrderBy($orderBy, $query->getOrder());
$where = $qb->expr()->andX();
if (!$query->isShowBoth()) {

View File

@@ -229,16 +229,17 @@ class CustomerRepository extends EntityRepository
->from(Customer::class, 'c')
;
$orderBy = $query->getOrderBy();
switch ($orderBy) {
case 'vat_id':
$orderBy = 'c.vatId';
break;
default:
$orderBy = 'c.' . $orderBy;
break;
foreach ($query->getOrderGroups() as $orderBy => $order) {
switch ($orderBy) {
case 'vat_id':
$orderBy = 'c.vatId';
break;
default:
$orderBy = 'c.' . $orderBy;
break;
}
$qb->addOrderBy($orderBy, $order);
}
$qb->orderBy($orderBy, $query->getOrder());
if ($query->isShowVisible()) {
$qb->andWhere($qb->expr()->eq('c.visible', ':visible'));

View File

@@ -266,24 +266,24 @@ class ProjectRepository extends EntityRepository
->leftJoin('p.customer', 'c')
;
$orderBy = $query->getOrderBy();
switch ($orderBy) {
case 'customer':
$orderBy = 'c.name';
break;
case 'project_start':
$orderBy = 'p.start';
break;
case 'project_end':
$orderBy = 'p.end';
break;
default:
$orderBy = 'p.' . $orderBy;
break;
foreach ($query->getOrderGroups() as $orderBy => $order) {
switch ($orderBy) {
case 'customer':
$orderBy = 'c.name';
break;
case 'project_start':
$orderBy = 'p.start';
break;
case 'project_end':
$orderBy = 'p.end';
break;
default:
$orderBy = 'p.' . $orderBy;
break;
}
$qb->addOrderBy($orderBy, $order);
}
$qb->addOrderBy($orderBy, $query->getOrder());
if (!$query->isShowBoth()) {
$qb
->andWhere($qb->expr()->eq('p.visible', ':visible'))

View File

@@ -24,6 +24,7 @@ class BaseQuery
public const ORDER_DESC = 'DESC';
public const DEFAULT_PAGESIZE = 50;
/** @deprecated since 1.14 */
public const DEFAULT_PAGE = 1;
/**
@@ -40,7 +41,7 @@ class BaseQuery
public const RESULT_TYPE_QUERYBUILDER = 'QueryBuilder';
private $defaults = [
'page' => self::DEFAULT_PAGE,
'page' => 1,
'pageSize' => self::DEFAULT_PAGESIZE,
'orderBy' => 'id',
'order' => self::ORDER_ASC,
@@ -49,7 +50,7 @@ class BaseQuery
/**
* @var int
*/
private $page = self::DEFAULT_PAGE;
private $page = 1;
/**
* @var int
*/
@@ -62,6 +63,10 @@ class BaseQuery
* @var string
*/
private $order = self::ORDER_ASC;
/**
* @var array<string, string>
*/
private $orderGroups = [];
/**
* @var string
* @deprecated since 1.4, will be removed with 2.0
@@ -152,7 +157,9 @@ class BaseQuery
*/
public function setPage($page)
{
$this->page = (int) $page;
if ($page !== null && (int) $page > 0) {
$this->page = (int) $page;
}
return $this;
}
@@ -180,13 +187,7 @@ class BaseQuery
return $this->orderBy;
}
/**
* You need to validate carefully if this value is used from a user-input.
*
* @param string $orderBy
* @return self
*/
public function setOrderBy($orderBy)
public function setOrderBy(string $orderBy): self
{
$this->orderBy = $orderBy;
@@ -198,11 +199,7 @@ class BaseQuery
return $this->order;
}
/**
* @param string $order
* @return self
*/
public function setOrder($order)
public function setOrder(string $order): self
{
if (\in_array($order, [self::ORDER_ASC, self::ORDER_DESC])) {
$this->order = $order;
@@ -211,6 +208,20 @@ class BaseQuery
return $this;
}
public function addOrderGroup(string $orderBy, string $order): void
{
$this->orderGroups[$orderBy] = $order;
}
public function getOrderGroups(): array
{
if (empty($this->orderGroups)) {
return [$this->orderBy => $this->order];
}
return $this->orderGroups;
}
/**
* @deprecated since 1.0
* @return string

View File

@@ -41,6 +41,11 @@ trait VisibilityTrait
return $this->visibility === VisibilityInterface::SHOW_VISIBLE;
}
public function setShowBoth(): void
{
$this->setVisibility(VisibilityInterface::SHOW_BOTH);
}
public function isShowBoth(): bool
{
return $this->visibility === VisibilityInterface::SHOW_BOTH;