Repeat column headers for each swimlane

This commit is contained in:
Frederic Guillot 2015-10-06 21:51:10 -04:00
parent 28a4c86f7a
commit f3f438a3ff
9 changed files with 57 additions and 42 deletions

View File

@ -1,13 +1,12 @@
<!-- column titles -->
<?php ?>
<tr>
<tr class="board-swimlane-columns-<?= $swimlane['id'] ?>">
<?php foreach ($swimlane['columns'] as $column): ?>
<th class="board-column-header board-column-header-<?= $column['id'] ?>" data-column-id="<?= $column['id'] ?>">
<!-- column in collapsed mode -->
<div class="board-column-collapsed">
<span title="<?= t('Task count') ?>" class="board-column-header-task-count" title="<?= t('Show this column') ?>">
<span id="task-number-column-<?= $column['id'] ?>"><?= $column['nb_column_tasks'] ?></span>
<span id="task-number-column-<?= $column['id'] ?>"><?= $column['nb_tasks'] ?></span>
</span>
</div>
@ -19,6 +18,12 @@
</div>
<?php endif ?>
<?php if ($swimlane['nb_swimlanes'] > 1 && ! empty($column['nb_column_tasks'])): ?>
<span title="<?= t('Total number of tasks in this column across all swimlanes') ?>" class="board-column-header-task-count">
(<span><?= $column['nb_column_tasks'] ?></span>)
</span>
<?php endif ?>
<span class="board-column-title" data-column-id="<?= $column['id'] ?>" title="<?= t('Hide this column') ?>">
<?= $this->e($column['title']) ?>
</span>
@ -31,17 +36,17 @@
<?php if (! empty($column['score'])): ?>
<span class="pull-right" title="<?= t('Score') ?>">
<?= $column['total_score'] ?>
<?= $column['score'] ?>
</span>
<?php endif ?>
<span title="<?= t('Total number of tasks in this column across all swimlanes') ?>" class="board-column-header-task-count">
(<span id="task-number-column-<?= $column['id'] ?>"><?= $column['nb_column_tasks'] ?></span>)
</span>
<?php if ($column['task_limit']): ?>
<span title="<?= t('Task limit') ?>">
(<span id="task-number-column-<?= $column['id'] ?>"><?= $this->e($column['task_limit']) ?></span>)
(<span id="task-number-column-<?= $column['id'] ?>"><?= $column['nb_tasks'] ?></span>/<?= $this->e($column['task_limit']) ?>)
</span>
<?php else: ?>
<span title="<?= t('Task count') ?>" class="board-column-header-task-count">
(<span id="task-number-column-<?= $column['id'] ?>"><?= $column['nb_tasks'] ?></span>)
</span>
<?php endif ?>
</div>

View File

@ -1,33 +1,40 @@
<div id="board-container">
<?php if (isset($not_editable)): ?>
<table id="board" class="board-project-<?= $project['id'] ?>">
<?php if (empty($swimlanes) || empty($swimlanes[0]['nb_columns'])): ?>
<p class="alert alert-error"><?= t('There is no column in your project!') ?></p>
<?php else: ?>
<table id="board"
class="board-project-<?= $project['id'] ?>"
data-project-id="<?= $project['id'] ?>"
data-check-interval="<?= $board_private_refresh_interval ?>"
data-save-url="<?= $this->url->href('board', 'save', array('project_id' => $project['id'])) ?>"
data-reload-url="<?= $this->url->href('board', 'reload', array('project_id' => $project['id'])) ?>"
data-check-url="<?= $this->url->href('board', 'check', array('project_id' => $project['id'], 'timestamp' => time())) ?>"
data-task-creation-url="<?= $this->url->href('taskcreation', 'create', array('project_id' => $project['id'])) ?>"
>
<?php endif ?>
<?php foreach ($swimlanes as $index => $swimlane): ?>
<?php if (empty($swimlane['columns'])): ?>
<p class="alert alert-error"><?= t('There is no column in your project!') ?></p>
<?php break ?>
<?php if (isset($not_editable)): ?>
<table id="board" class="board-project-<?= $project['id'] ?>">
<?php else: ?>
<?php if ($index === 0): ?>
<table id="board"
class="board-project-<?= $project['id'] ?>"
data-project-id="<?= $project['id'] ?>"
data-check-interval="<?= $board_private_refresh_interval ?>"
data-save-url="<?= $this->url->href('board', 'save', array('project_id' => $project['id'])) ?>"
data-reload-url="<?= $this->url->href('board', 'reload', array('project_id' => $project['id'])) ?>"
data-check-url="<?= $this->url->href('board', 'check', array('project_id' => $project['id'], 'timestamp' => time())) ?>"
data-task-creation-url="<?= $this->url->href('taskcreation', 'create', array('project_id' => $project['id'])) ?>"
>
<?php endif ?>
<?php foreach ($swimlanes as $index => $swimlane): ?>
<?php if (! ($swimlane['nb_tasks'] === 0 && isset($not_editable))): ?>
<!-- Note: Do not show swimlane row on the top otherwise we can't collapse columns -->
<?php if ($index > 0 && $swimlane['nb_swimlanes'] > 1): ?>
<?= $this->render('board/table_swimlane', array(
'project' => $project,
'swimlane' => $swimlane,
'not_editable' => isset($not_editable),
)) ?>
<?php endif ?>
<?= $this->render('board/table_column', array(
'swimlane' => $swimlane,
'not_editable' => isset($not_editable),
)) ?>
<?php endif ?>
<?php if (! ($swimlane['nb_tasks'] === 0 && isset($not_editable))): ?>
<?php if ($swimlane['nb_swimlanes'] > 1): ?>
<?php if ($index === 0 && $swimlane['nb_swimlanes'] > 1): ?>
<?= $this->render('board/table_swimlane', array(
'project' => $project,
'swimlane' => $swimlane,
@ -43,8 +50,9 @@
)) ?>
<?php endif ?>
<?php endforeach ?>
<?php endif ?>
<?php endforeach ?>
</table>
</table>
<?php endif ?>
</div>

View File

@ -1,5 +1,5 @@
<!-- task row -->
<tr class="board-swimlane swimlane-row-<?= $swimlane['id'] ?>">
<tr class="board-swimlane board-swimlane-tasks-<?= $swimlane['id'] ?>">
<?php foreach ($swimlane['columns'] as $column): ?>
<td class="
board-column-<?= $column['id'] ?>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
/* task inside the board */
.task-board {
position: relative;
margin-bottom: 2px;
margin-bottom: 4px;
border: 1px solid #000;
padding: 2px;
font-size: 0.85em;
@ -9,7 +9,7 @@
}
div.task-board-recent {
box-shadow: 2px 2px 5px rgba(0,0,0,0.25);
box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.2);
}
div.task-board-status-closed {

File diff suppressed because one or more lines are too long

View File

@ -231,7 +231,7 @@ Board.prototype.toggleCollapsedMode = function() {
Board.prototype.restoreColumnViewMode = function() {
var self = this;
$("tr:first th").each(function() {
$(".board-column-header").each(function() {
var columnId = $(this).data('column-id');
if (localStorage.getItem("hidden_column_" + columnId)) {
self.hideColumn(columnId);

View File

@ -15,7 +15,8 @@ Swimlane.prototype.expand = function(swimlaneId) {
localStorage.setItem(this.getStorageKey(), JSON.stringify(swimlaneIds));
$('.swimlane-row-' + swimlaneId).css('display', 'table-row');
$('.board-swimlane-columns-' + swimlaneId).css('display', 'table-row');
$('.board-swimlane-tasks-' + swimlaneId).css('display', 'table-row');
$('.hide-icon-swimlane-' + swimlaneId).css('display', 'inline');
$('.show-icon-swimlane-' + swimlaneId).css('display', 'none');
};
@ -28,7 +29,8 @@ Swimlane.prototype.collapse = function(swimlaneId) {
localStorage.setItem(this.getStorageKey(), JSON.stringify(swimlaneIds));
}
$('.swimlane-row-' + swimlaneId).css('display', 'none');
$('.board-swimlane-columns-' + swimlaneId + ':not(:first-child)').css('display', 'none');
$('.board-swimlane-tasks-' + swimlaneId).css('display', 'none');
$('.hide-icon-swimlane-' + swimlaneId).css('display', 'none');
$('.show-icon-swimlane-' + swimlaneId).css('display', 'inline');
};