Improve dashboard pagination

This commit is contained in:
Frédéric Guillot 2018-05-09 11:21:57 -07:00
parent cc17cb3207
commit 6ae97d399d
3 changed files with 23 additions and 7 deletions

View File

@ -102,6 +102,14 @@ class Paginator
*/
private $action = '';
/**
* URL anchor
*
* @access private
* @var string
*/
private $anchor = '';
/**
* Url params
*
@ -183,13 +191,15 @@ class Paginator
* @param string $controller
* @param string $action
* @param array $params
* @param string $anchor
* @return $this
*/
public function setUrl($controller, $action, array $params = array())
public function setUrl($controller, $action, array $params = array(), $anchor = '')
{
$this->controller = $controller;
$this->action = $action;
$this->params = $params;
$this->anchor = $anchor;
return $this;
}
@ -399,7 +409,10 @@ class Paginator
$this->action,
$this->getUrlParams($this->page - 1, $this->order, $this->direction),
false,
'js-modal-replace'
'js-modal-replace',
t('Previous'),
false,
$this->anchor
);
} else {
$html .= '← '.t('Previous');
@ -427,7 +440,10 @@ class Paginator
$this->action,
$this->getUrlParams($this->page + 1, $this->order, $this->direction),
false,
'js-modal-replace'
'js-modal-replace',
t('Next'),
false,
$this->anchor
);
} else {
$html .= t('Next').' →';

View File

@ -32,13 +32,13 @@ class DashboardPagination extends Base
$this->hook->reference('pagination:dashboard:task:query', $query);
$paginator = $this->paginator
->setUrl('DashboardController', 'show', array('user_id' => $userId))
->setMax(50)
->setUrl('DashboardController', 'show', array('user_id' => $userId, 'pagination' => 'tasks-'.$projectId), 'project-tasks-'.$projectId)
->setMax(15)
->setOrder(TaskModel::TABLE.'.priority')
->setDirection('DESC')
->setFormatter($this->taskListSubtaskAssigneeFormatter->withUserId($userId))
->setQuery($query)
->calculate();
->calculateOnlyIf($this->request->getStringParam('pagination') === 'tasks-'.$projectId);
if ($paginator->getTotal() > 0) {
$paginators[] = array(

View File

@ -51,7 +51,7 @@
<?php foreach ($overview_paginator as $result): ?>
<?php if (! $result['paginator']->isEmpty()): ?>
<div class="page-header">
<h2><?= $this->url->link($this->text->e($result['project_name']), 'BoardViewController', 'show', array('project_id' => $result['project_id'])) ?></h2>
<h2 id="project-tasks-<?= $result['project_id'] ?>"><?= $this->url->link($this->text->e($result['project_name']), 'BoardViewController', 'show', array('project_id' => $result['project_id'])) ?></h2>
</div>
<div class="table-list">