mirror of
https://github.com/YunoHost-Apps/kanboard_ynh.git
synced 2024-09-03 19:36:17 +02:00
78 lines
2.1 KiB
PHP
78 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Kanboard\Formatter;
|
|
|
|
use Kanboard\Core\Filter\FormatterInterface;
|
|
|
|
/**
|
|
* Task Gantt Formatter
|
|
*
|
|
* @package formatter
|
|
* @author Frederic Guillot
|
|
*/
|
|
class TaskGanttFormatter extends BaseFormatter implements FormatterInterface
|
|
{
|
|
/**
|
|
* Local cache for project columns
|
|
*
|
|
* @access private
|
|
* @var array
|
|
*/
|
|
private $columns = array();
|
|
|
|
/**
|
|
* Apply formatter
|
|
*
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function format()
|
|
{
|
|
$bars = array();
|
|
|
|
foreach ($this->query->findAll() as $task) {
|
|
$bars[] = $this->formatTask($task);
|
|
}
|
|
|
|
return $bars;
|
|
}
|
|
|
|
/**
|
|
* Format a single task
|
|
*
|
|
* @access private
|
|
* @param array $task
|
|
* @return array
|
|
*/
|
|
private function formatTask(array $task)
|
|
{
|
|
if (! isset($this->columns[$task['project_id']])) {
|
|
$this->columns[$task['project_id']] = $this->columnModel->getList($task['project_id']);
|
|
}
|
|
|
|
$start = $task['date_started'] ?: time();
|
|
$end = $task['date_due'] ?: $start;
|
|
|
|
return array(
|
|
'type' => 'task',
|
|
'id' => $task['id'],
|
|
'title' => $task['title'],
|
|
'start' => array(
|
|
(int) date('Y', $start),
|
|
(int) date('n', $start),
|
|
(int) date('j', $start),
|
|
),
|
|
'end' => array(
|
|
(int) date('Y', $end),
|
|
(int) date('n', $end),
|
|
(int) date('j', $end),
|
|
),
|
|
'column_title' => $task['column_name'],
|
|
'assignee' => $task['assignee_name'] ?: $task['assignee_username'],
|
|
'progress' => $this->taskModel->getProgress($task, $this->columns[$task['project_id']]).'%',
|
|
'link' => $this->helper->url->href('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])),
|
|
'color' => $this->colorModel->getColorProperties($task['color_id']),
|
|
'not_defined' => empty($task['date_due']) || empty($task['date_started']),
|
|
);
|
|
}
|
|
}
|