Simplify dashboard to use new tasks list view

This commit is contained in:
Frederic Guillot
2017-03-12 21:36:52 -04:00
parent f6b42eb802
commit 9b34631135
31 changed files with 380 additions and 650 deletions

View File

@@ -296,27 +296,6 @@ class ProjectModel extends Base
return $projects;
}
/**
* Get project summary for a list of project
*
* @access public
* @param array $project_ids List of project id
* @return \PicoDb\Table
*/
public function getQueryColumnStats(array $project_ids)
{
if (empty($project_ids)) {
return $this->db->table(ProjectModel::TABLE)->eq(ProjectModel::TABLE.'.id', 0);
}
return $this->db
->table(ProjectModel::TABLE)
->columns(self::TABLE.'.*', UserModel::TABLE.'.username AS owner_username', UserModel::TABLE.'.name AS owner_name')
->join(UserModel::TABLE, 'id', 'owner_id')
->in(self::TABLE.'.id', $project_ids)
->callback(array($this, 'applyColumnStats'));
}
/**
* Get query for list of project without column statistics
*

View File

@@ -69,35 +69,6 @@ class SubtaskModel extends Base
);
}
/**
* Get the query to fetch subtasks assigned to a user
*
* @access public
* @param integer $userId
* @param array $status
* @return \PicoDb\Table
*/
public function getUserQuery($userId, array $status)
{
return $this->db->table(SubtaskModel::TABLE)
->columns(
SubtaskModel::TABLE.'.*',
TaskModel::TABLE.'.project_id',
TaskModel::TABLE.'.color_id',
TaskModel::TABLE.'.title AS task_name',
ProjectModel::TABLE.'.name AS project_name'
)
->subquery($this->subtaskTimeTrackingModel->getTimerQuery($userId), 'timer_start_date')
->eq('user_id', $userId)
->eq(ProjectModel::TABLE.'.is_active', ProjectModel::ACTIVE)
->eq(ColumnModel::TABLE.'.hide_in_dashboard', 0)
->in(SubtaskModel::TABLE.'.status', $status)
->join(TaskModel::TABLE, 'id', 'task_id')
->join(ProjectModel::TABLE, 'id', 'project_id', TaskModel::TABLE)
->join(ColumnModel::TABLE, 'id', 'column_id', TaskModel::TABLE)
->callback(array($this, 'addStatusName'));
}
/**
* Get common query
*
@@ -148,6 +119,24 @@ class SubtaskModel extends Base
->format();
}
/**
* Get subtasks for a list of tasks and a given assignee
*
* @param array $taskIds
* @param integer $userId
* @return array
*/
public function getAllByTaskIdsAndAssignee(array $taskIds, $userId)
{
if (empty($taskIds)) {
return array();
}
return $this->subtaskListFormatter
->withQuery($this->getQuery()->in('task_id', $taskIds)->eq(self::TABLE.'.user_id', $userId))
->format();
}
/**
* Get a subtask by the id
*
@@ -310,24 +299,4 @@ class SubtaskModel extends Base
$values['user_id'] = isset($values['user_id']) ? $values['user_id'] : 0;
$this->hook->reference('model:subtask:creation:prepare', $values);
}
/**
* Add subtask status status to the resultset
*
* @access public
* @param array $subtasks Subtasks
* @return array
*/
public function addStatusName(array $subtasks)
{
$status = $this->getStatusList();
foreach ($subtasks as &$subtask) {
$subtask['status_name'] = $status[$subtask['status']];
$subtask['timer_start_date'] = isset($subtask['timer_start_date']) ? $subtask['timer_start_date'] : 0;
$subtask['is_timer_started'] = ! empty($subtask['timer_start_date']);
}
return $subtasks;
}
}

View File

@@ -59,27 +59,11 @@ class TaskFinderModel extends Base
*/
public function getUserQuery($user_id)
{
return $this->db
->table(TaskModel::TABLE)
->columns(
TaskModel::TABLE.'.id',
TaskModel::TABLE.'.title',
TaskModel::TABLE.'.date_due',
TaskModel::TABLE.'.date_creation',
TaskModel::TABLE.'.project_id',
TaskModel::TABLE.'.column_id',
TaskModel::TABLE.'.color_id',
TaskModel::TABLE.'.priority',
TaskModel::TABLE.'.time_spent',
TaskModel::TABLE.'.time_estimated',
TaskModel::TABLE.'.is_active',
TaskModel::TABLE.'.creator_id',
ProjectModel::TABLE.'.name AS project_name',
ColumnModel::TABLE.'.title AS column_title'
)
->join(ProjectModel::TABLE, 'id', 'project_id')
->join(ColumnModel::TABLE, 'id', 'column_id')
return $this->getExtendedQuery()
->beginOr()
->eq(TaskModel::TABLE.'.owner_id', $user_id)
->addCondition(TaskModel::TABLE.".id IN (SELECT task_id FROM ".SubtaskModel::TABLE." WHERE ".SubtaskModel::TABLE.".user_id='$user_id')")
->closeOr()
->eq(TaskModel::TABLE.'.is_active', TaskModel::STATUS_OPEN)
->eq(ProjectModel::TABLE.'.is_active', ProjectModel::ACTIVE)
->eq(ColumnModel::TABLE.'.hide_in_dashboard', 0);