Added search filter for task priority
This commit is contained in:
@@ -4,6 +4,7 @@ Version 1.0.32 (unreleased)
|
|||||||
New features:
|
New features:
|
||||||
|
|
||||||
* New automated action to close tasks without activity in a specific column
|
* 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
|
* Added the possibility to hide tasks in dashboard for a specific column
|
||||||
|
|
||||||
Improvements:
|
Improvements:
|
||||||
|
|||||||
38
app/Filter/TaskPriorityFilter.php
Normal file
38
app/Filter/TaskPriorityFilter.php
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ use Kanboard\Filter\TaskDueDateFilter;
|
|||||||
use Kanboard\Filter\TaskIdFilter;
|
use Kanboard\Filter\TaskIdFilter;
|
||||||
use Kanboard\Filter\TaskLinkFilter;
|
use Kanboard\Filter\TaskLinkFilter;
|
||||||
use Kanboard\Filter\TaskModificationDateFilter;
|
use Kanboard\Filter\TaskModificationDateFilter;
|
||||||
|
use Kanboard\Filter\TaskPriorityFilter;
|
||||||
use Kanboard\Filter\TaskProjectFilter;
|
use Kanboard\Filter\TaskProjectFilter;
|
||||||
use Kanboard\Filter\TaskReferenceFilter;
|
use Kanboard\Filter\TaskReferenceFilter;
|
||||||
use Kanboard\Filter\TaskStatusFilter;
|
use Kanboard\Filter\TaskStatusFilter;
|
||||||
@@ -137,6 +138,7 @@ class FilterProvider implements ServiceProviderInterface
|
|||||||
->withFilter(TaskColorFilter::getInstance()
|
->withFilter(TaskColorFilter::getInstance()
|
||||||
->setColorModel($c['colorModel'])
|
->setColorModel($c['colorModel'])
|
||||||
)
|
)
|
||||||
|
->withFilter(new TaskPriorityFilter())
|
||||||
->withFilter(new TaskColumnFilter())
|
->withFilter(new TaskColumnFilter())
|
||||||
->withFilter(new TaskCommentFilter())
|
->withFilter(new TaskCommentFilter())
|
||||||
->withFilter(TaskCreationDateFilter::getInstance()
|
->withFilter(TaskCreationDateFilter::getInstance()
|
||||||
|
|||||||
47
tests/units/Filter/TaskPriorityFilterTest.php
Normal file
47
tests/units/Filter/TaskPriorityFilterTest.php
Normal 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user