From ed7a176fe0fe00095f44e655e54fcb42295e13f0 Mon Sep 17 00:00:00 2001 From: Juanfran Date: Tue, 2 Dec 2014 15:20:23 +0100 Subject: [PATCH] fix #1714 - bulk resort tasks in the taskboard --- app/coffee/modules/resources.coffee | 1 + app/coffee/modules/resources/tasks.coffee | 5 +++++ app/coffee/modules/taskboard/main.coffee | 25 ++++++++++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/coffee/modules/resources.coffee b/app/coffee/modules/resources.coffee index 2bce1f4b..46ebe973 100644 --- a/app/coffee/modules/resources.coffee +++ b/app/coffee/modules/resources.coffee @@ -42,6 +42,7 @@ urls = { "userstories-restore": "/userstories/%s/restore" "tasks": "/tasks" "bulk-create-tasks": "/tasks/bulk_create" + "bulk-update-task-taskboard-order": "/tasks/bulk_update_taskboard_order" "tasks-restore": "/tasks/%s/restore" "issues": "/issues" "bulk-create-issues": "/issues/bulk_create" diff --git a/app/coffee/modules/resources/tasks.coffee b/app/coffee/modules/resources/tasks.coffee index 76883117..07cacb18 100644 --- a/app/coffee/modules/resources/tasks.coffee +++ b/app/coffee/modules/resources/tasks.coffee @@ -46,6 +46,11 @@ resourceProvider = ($repo, $http, $urls, $storage) -> return $http.post(url, params).then (result) -> return result.data + service.bulkUpdateTaskTaskboardOrder = (projectId, data) -> + url = $urls.resolve("bulk-update-task-taskboard-order") + params = {project_id: projectId, bulk_tasks: data} + return $http.post(url, params) + service.listValues = (projectId, type) -> params = {"project": projectId} return $repo.queryMany(type, params) diff --git a/app/coffee/modules/taskboard/main.coffee b/app/coffee/modules/taskboard/main.coffee index 7d0cf5d3..e25fe79f 100644 --- a/app/coffee/modules/taskboard/main.coffee +++ b/app/coffee/modules/taskboard/main.coffee @@ -184,21 +184,44 @@ class TaskboardController extends mixOf(taiga.Controller, taiga.PageMixin) .then(=> @.loadUsersAndRoles()) .then(=> @.loadTaskboard()) + refreshTasksOrder: (tasks) -> + items = @.resortTasks(tasks) + data = @.prepareBulkUpdateData(items) + + return @rs.tasks.bulkUpdateTaskTaskboardOrder(@scope.project.id, data) + + resortTasks: (tasks) -> + items = [] + + for item, index in tasks + item["taskboard_order"] = index + if item.isModified() + items.push(item) + + return items + + prepareBulkUpdateData: (uses) -> + return _.map(uses, (x) -> {"task_id": x.id, "order": x["taskboard_order"]}) + taskMove: (ctx, task, usId, statusId, order) -> # Remove task from old position r = @scope.usTasks[task.user_story][task.status].indexOf(task) @scope.usTasks[task.user_story][task.status].splice(r, 1) # Add task to new position - @scope.usTasks[usId][statusId].splice(order, 0, task) + tasks = @scope.usTasks[usId][statusId] + tasks.splice(order, 0, task) task.user_story = usId task.status = statusId task.taskboard_order = order promise = @repo.save(task) + promise.then => + @.refreshTasksOrder(tasks) @.loadSprintStats() + promise.then null, => console.log "FAIL TASK SAVE"