Fix task ordering when using drag/drop

This commit is contained in:
Matthew Ross 2017-09-02 13:25:24 -04:00
parent 5d5af55cdd
commit 18d245958d
5 changed files with 39 additions and 21 deletions

View File

@ -181,10 +181,16 @@ class Tasks extends BaseController {
return $column->board_id;
}
private function sortTasks($a, $b) {
return strcmp($a->position, $b->position);
}
private function updateTaskOrder($task, $user, $isNew) {
$column = R::load('column', $task->column_id);
$user_opts = R::load('useroption', $user->user_option_id);
usort($column->xownTaskList, array($this, 'sortTasks'));
$counter = 1;
foreach ($column->xownTaskList as $task) {
$task->position = $counter;
@ -330,7 +336,7 @@ class Tasks extends BaseController {
}
}
function updateTaskColor($taskId, $beforePoints, $afterPoints) {
private function updateTaskColor($taskId, $beforePoints, $afterPoints) {
$task = R::load('task', $taskId);
$diff = (float)$beforePoints - (float)$afterPoints;

View File

@ -115,11 +115,24 @@ export class BoardDisplay implements OnInit {
}
});
let lastTaskId: number,
lastToColumnId: number,
lastFromColumnId: number;
this.dragula.dropModel.subscribe((value: any) => {
let taskId = +value[1].id,
toColumnId = +value[2].parentNode.id,
fromColumnId = +value[3].parentNode.id;
if (lastTaskId === taskId && lastToColumnId === toColumnId &&
lastFromColumnId === fromColumnId) {
return;
}
lastTaskId = taskId;
lastToColumnId = toColumnId;
lastFromColumnId = fromColumnId;
this.activeBoard.columns.forEach(column => {
if (column.id === toColumnId || column.id === fromColumnId) {
let position = 1,

View File

@ -126,24 +126,24 @@ export class ColumnDisplay implements OnInit {
}
sortTasks() {
switch (this.sortOption) {
case 'pos':
this.columnData.tasks.sort((a, b) => {
return a.position - b.position;
});
break;
case 'due':
this.columnData.tasks.sort((a, b) => {
return new Date(a.due_date).getTime() -
new Date(b.due_date).getTime();
});
break;
case 'pnt':
this.columnData.tasks.sort((a, b) => {
return b.points - a.points;
});
break;
}
switch (this.sortOption) {
case 'pos':
this.columnData.tasks.sort((a, b) => {
return a.position - b.position;
});
break;
case 'due':
this.columnData.tasks.sort((a, b) => {
return new Date(a.due_date).getTime() -
new Date(b.due_date).getTime();
});
break;
case 'pnt':
this.columnData.tasks.sort((a, b) => {
return b.points - a.points;
});
break;
}
}
toggleCollapsed() {

View File

@ -171,7 +171,6 @@ export class TaskDisplay implements OnInit {
'" target="tb_external" rel="noreferrer">' +
result[0] + '</a>';
// text = text.replace(result[0], link);
replacements.push({
str: result[0],
link

View File

@ -2,7 +2,7 @@
<html lang="en">
<head>
<title>TaskBoard - Kanban App</title>
<base href="/dist/">
<base href="/web/TaskBoard/dist/">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">