Added search filter for task priority

This commit is contained in:
Frederic Guillot 2016-07-14 11:29:15 -04:00
parent 3622c32f99
commit 48ee733f9e
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
4 changed files with 88 additions and 0 deletions

View File

@ -4,6 +4,7 @@ Version 1.0.32 (unreleased)
New features:
* New automated action to close tasks without activity in a specific column
* Added search filter for task priority
* Added the possibility to hide tasks in dashboard for a specific column
Improvements:

View File

@ -0,0 +1,38 @@
<?php
namespace Kanboard\Filter;
use Kanboard\Core\Filter\FilterInterface;
use Kanboard\Model\TaskModel;
/**
* Class TaskPriorityFilter
*
* @package Kanboard\Filter
* @author Frederic Guillot
*/
class TaskPriorityFilter extends BaseFilter implements FilterInterface
{
/**
* Get search attribute
*
* @access public
* @return string[]
*/
public function getAttributes()
{
return array('priority');
}
/**
* Apply filter
*
* @access public
* @return FilterInterface
*/
public function apply()
{
$this->query->eq(TaskModel::TABLE.'.priority', $this->value);
return $this;
}
}

View File

@ -21,6 +21,7 @@ use Kanboard\Filter\TaskDueDateFilter;
use Kanboard\Filter\TaskIdFilter;
use Kanboard\Filter\TaskLinkFilter;
use Kanboard\Filter\TaskModificationDateFilter;
use Kanboard\Filter\TaskPriorityFilter;
use Kanboard\Filter\TaskProjectFilter;
use Kanboard\Filter\TaskReferenceFilter;
use Kanboard\Filter\TaskStatusFilter;
@ -137,6 +138,7 @@ class FilterProvider implements ServiceProviderInterface
->withFilter(TaskColorFilter::getInstance()
->setColorModel($c['colorModel'])
)
->withFilter(new TaskPriorityFilter())
->withFilter(new TaskColumnFilter())
->withFilter(new TaskCommentFilter())
->withFilter(TaskCreationDateFilter::getInstance()

View File

@ -0,0 +1,47 @@
<?php
use Kanboard\Filter\TaskPriorityFilter;
use Kanboard\Model\ProjectModel;
use Kanboard\Model\TaskCreationModel;
use Kanboard\Model\TaskFinderModel;
require_once __DIR__.'/../Base.php';
class TaskPriorityFilterTest extends Base
{
public function testWithDefinedPriority()
{
$taskFinder = new TaskFinderModel($this->container);
$taskCreation = new TaskCreationModel($this->container);
$projectModel = new ProjectModel($this->container);
$query = $taskFinder->getExtendedQuery();
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreation->create(array('title' => 'Test', 'project_id' => 1, 'priority' => 2)));
$filter = new TaskPriorityFilter();
$filter->withQuery($query);
$filter->withValue(2);
$filter->apply();
$this->assertCount(1, $query->findAll());
}
public function testWithNoPriority()
{
$taskFinder = new TaskFinderModel($this->container);
$taskCreation = new TaskCreationModel($this->container);
$projectModel = new ProjectModel($this->container);
$query = $taskFinder->getExtendedQuery();
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreation->create(array('title' => 'Test', 'project_id' => 1)));
$filter = new TaskPriorityFilter();
$filter->withQuery($query);
$filter->withValue(2);
$filter->apply();
$this->assertCount(0, $query->findAll());
}
}