summaryrefslogtreecommitdiff
path: root/plugins/TimeMachine/Template/analytic/time_comparison_by_swimlane.php
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/TimeMachine/Template/analytic/time_comparison_by_swimlane.php')
-rw-r--r--plugins/TimeMachine/Template/analytic/time_comparison_by_swimlane.php84
1 files changed, 84 insertions, 0 deletions
diff --git a/plugins/TimeMachine/Template/analytic/time_comparison_by_swimlane.php b/plugins/TimeMachine/Template/analytic/time_comparison_by_swimlane.php
new file mode 100644
index 00000000..95fd7a41
--- /dev/null
+++ b/plugins/TimeMachine/Template/analytic/time_comparison_by_swimlane.php
@@ -0,0 +1,84 @@
+<?php if (! $is_ajax): ?>
+ <div class="page-header">
+ <h2><?= t('Estimated vs actual time / Swimlanes') ?></h2>
+ </div>
+<?php endif ?>
+
+<div class="panel">
+ <?php foreach ($metrics as $swimlaneName => $metricBySwimlane) : ?>
+ <p><strong><?= $swimlaneName ?></strong></p>
+ <ul>
+ <li>
+ <?= t('Estimated hours: ') ?>
+ <strong>
+ <?= $this->text->e($metricBySwimlane['open']['time_estimated'] + $metricBySwimlane['closed']['time_estimated']) ?>
+ </strong>
+ <i>(<?=t('Open').' : '.$this->text->e($metricBySwimlane['open']['time_estimated']) ?>
+ - <?= t('Closed').' : '.$metricBySwimlane['closed']['time_estimated'] ?>)</i>
+ </li>
+ <li>
+ <?= t('Actual hours: ')?>
+ <strong>
+ <?= $this->text->e($metricBySwimlane['open']['time_spent'] + $metricBySwimlane['closed']['time_spent']) ?>
+ </strong>
+ <i>(<?=t('Open').' : '.$this->text->e($metricBySwimlane['open']['time_spent']) ?>
+ - <?= t('Closed').' : '.$metricBySwimlane['closed']['time_spent'] ?>)</i>
+ </li>
+ </ul>
+ <?php endforeach; ?>
+</div>
+
+<?php if (empty($metrics)): ?>
+ <p class="alert"><?= t('Not enough data to show the graph.') ?></p>
+<?php else: ?>
+ <?php if ($paginator->isEmpty()): ?>
+ <p class="alert"><?= t('No tasks found.') ?></p>
+ <?php elseif (! $paginator->isEmpty()): ?>
+ <?= $this->app->component('chart-project-analytics-time-comparison', array(
+ 'metrics' => $metrics,
+ 'labelSpent' => t('Hours Spent'),
+ 'labelEstimated' => t('Hours Estimated'),
+ 'labelClosed' => t('Closed'),
+ 'labelOpen' => t('Open'),
+ )) ?>
+
+ <table class="table-fixed table-small table-scrolling">
+ <tr>
+ <th class="column-5"><?= $paginator->order(t('Id'), 'tasks.id') ?></th>
+ <th class="column-8"><?= $paginator->order(t('Swimlane'), 'tasks.swimlane_id') ?></th>
+ <th><?= $paginator->order(t('Title'), 'tasks.title') ?></th>
+ <th class="column-10"><?= $paginator->order(t('Status'), 'tasks.is_active') ?></th>
+ <th class="column-12"><?= $paginator->order(t('Estimated Time'), 'tasks.time_estimated') ?></th>
+ <th class="column-12"><?= $paginator->order(t('Actual Time'), 'tasks.time_spent') ?></th>
+ </tr>
+ <?php foreach ($paginator->getCollection() as $task): ?>
+ <tr>
+ <td class="task-table color-<?= $task['color_id'] ?>">
+ <?= $this->url->link('#'.$this->text->e($task['id']), 'TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?>
+ </td>
+ <td class="task-table swimlane-<?= $task['swimlane_id'] ?>">
+ <?= $this->text->e($swimlanes[$task['swimlane_id']]) ?>
+ </td>
+ <td>
+ <?= $this->url->link($this->text->e($task['title']), 'TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?>
+ </td>
+ <td>
+ <?php if ($task['is_active'] == \Kanboard\Model\TaskModel::STATUS_OPEN): ?>
+ <?= t('Open') ?>
+ <?php else: ?>
+ <?= t('Closed') ?>
+ <?php endif ?>
+ </td>
+ <td>
+ <?= $this->text->e($task['time_estimated']) ?>
+ </td>
+ <td>
+ <?= $this->text->e($task['time_spent']) ?>
+ </td>
+ </tr>
+ <?php endforeach ?>
+ </table>
+
+ <?= $paginator ?>
+ <?php endif ?>
+<?php endif ?>