From ade97c19fd9b2b6c5ecd5e9bac6d4cd69e58930f Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Sat, 13 Sep 2014 15:19:41 +0200 Subject: [PATCH] Add separated method for bulk order update for: backlog, kanban and sprint. --- app/coffee/modules/backlog/main.coffee | 54 +++++++++++-------- app/coffee/modules/kanban/main.coffee | 8 +-- app/coffee/modules/resources.coffee | 4 +- .../modules/resources/userstories.coffee | 14 ++++- 4 files changed, 50 insertions(+), 30 deletions(-) diff --git a/app/coffee/modules/backlog/main.coffee b/app/coffee/modules/backlog/main.coffee index dcf4bf18..76524faf 100644 --- a/app/coffee/modules/backlog/main.coffee +++ b/app/coffee/modules/backlog/main.coffee @@ -215,13 +215,13 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F "milestone": null }) - prepareBulkUpdateData: (uses) -> - return _.map(uses, (x) -> {"us_id": x.id, "order": x.order}) + prepareBulkUpdateData: (uses, field="backlog_order") -> + return _.map(uses, (x) -> {"us_id": x.id, "order": x[field]}) - resortUserStories: (uses) -> + resortUserStories: (uses, field="backlog_order") -> items = [] for item, index in uses - item.order = index + item[field] = index if item.isModified() items.push(item) @@ -245,17 +245,27 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F userstories.splice(r, 1) userstories.splice(newUsIndex, 0, us) - # Rehash userstories order field - items = @.resortUserStories(userstories) - data = @.prepareBulkUpdateData(items) + # If in backlog + if newSprintId == null + # Rehash userstories order field + items = @.resortUserStories(userstories, "backlog_order") + data = @.prepareBulkUpdateData(items, "backlog_order") - # Persist in bulk all affected - # userstories with order change - promise = @rs.userstories.bulkUpdateOrder(us.project, data).then => - @rootscope.$broadcast("sprint:us:moved", us, oldSprintId, newSprintId) + # Persist in bulk all affected + # userstories with order change + @rs.userstories.bulkUpdateBacklogOrder(us.project, data).then => + @rootscope.$broadcast("sprint:us:moved", us, oldSprintId, newSprintId) - promise.then null, -> - console.log "FAIL" + # For sprint + else + # Rehash userstories order field + items = @.resortUserStories(userstories, "sprint_order") + data = @.prepareBulkUpdateData(items, "sprint_order") + + # Persist in bulk all affected + # userstories with order change + @rs.userstories.bulkUpdateSprintOrder(us.project, data).then => + @rootscope.$broadcast("sprint:us:moved", us, oldSprintId, newSprintId) return promise @@ -282,14 +292,13 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F # Rehash userstories order field # and persist in bulk all changes. promise = promise.then => - items = @.resortUserStories(@scope.userstories) - data = @.prepareBulkUpdateData(items) - promise = @rs.userstories.bulkUpdateOrder(us.project, data).then => + items = @.resortUserStories(@scope.userstories, "backlog_order") + data = @.prepareBulkUpdateData(items, "backlog_order") + return @rs.userstories.bulkUpdateBacklogOrder(us.project, data).then => @rootscope.$broadcast("sprint:us:moved", us, oldSprintId, newSprintId) promise.then null, -> - # TODO - console.log "FAIL" + console.log "FAIL" # TODO return promise @@ -327,14 +336,13 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F # Rehash userstories order field # and persist in bulk all changes. promise = promise.then => - items = @.resortUserStories(newSprint.user_stories) - data = @.prepareBulkUpdateData(items) - promise = @rs.userstories.bulkUpdateOrder(us.project, data).then => + items = @.resortUserStories(newSprint.user_stories, "sprint_order") + data = @.prepareBulkUpdateData(items, "sprint_order") + return @rs.userstories.bulkUpdateSprintOrder(us.project, data).then => @rootscope.$broadcast("sprint:us:moved", us, oldSprintId, newSprintId) promise.then null, -> - # TODO - console.log "FAIL" + console.log "FAIL" # TODO return promise diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index 25398fc9..4bc3b172 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -161,13 +161,13 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi .then(=> @.loadKanban()) .then(=> @scope.$broadcast("redraw:wip")) - prepareBulkUpdateData: (uses) -> - return _.map(uses, (x) -> {"us_id": x.id, "order": x.order}) + prepareBulkUpdateData: (uses, field="kanban_order") -> + return _.map(uses, (x) -> {"us_id": x.id, "order": x[field]}) resortUserStories: (uses) -> items = [] for item, index in uses - item.order = index + item.kanban_order = index if item.isModified() items.push(item) @@ -199,7 +199,7 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi items = @.resortUserStories(@scope.usByStatus[statusId]) data = @.prepareBulkUpdateData(items) - return @rs.userstories.bulkUpdateOrder(us.project, data).then => + return @rs.userstories.bulkUpdateKanbanOrder(us.project, data).then => # @rootscope.$broadcast("sprint:us:moved", us, oldSprintId, newSprintId) return items diff --git a/app/coffee/modules/resources.coffee b/app/coffee/modules/resources.coffee index df3755e7..6ee34072 100644 --- a/app/coffee/modules/resources.coffee +++ b/app/coffee/modules/resources.coffee @@ -36,7 +36,9 @@ urls = { "milestones": "/api/v1/milestones" "userstories": "/api/v1/userstories" "bulk-create-us": "/api/v1/userstories/bulk_create" - "bulk-update-us-order": "/api/v1/userstories/bulk_update_order" + "bulk-update-us-backlog-order": "/api/v1/userstories/bulk_update_backlog_order" + "bulk-update-us-sprint-order": "/api/v1/userstories/bulk_update_sprint_order" + "bulk-update-us-kanban-order": "/api/v1/userstories/bulk_update_kanban_order" "userstories-restore": "/api/v1/userstories/%s/restore" "tasks": "/api/v1/tasks" "bulk-create-tasks": "/api/v1/tasks/bulk_create" diff --git a/app/coffee/modules/resources/userstories.coffee b/app/coffee/modules/resources/userstories.coffee index 577ac9de..d2c926e4 100644 --- a/app/coffee/modules/resources/userstories.coffee +++ b/app/coffee/modules/resources/userstories.coffee @@ -55,8 +55,18 @@ resourceProvider = ($repo, $http, $urls, $storage) -> return $http.post(url, data) - service.bulkUpdateOrder = (projectId, data) -> - url = $urls.resolve("bulk-update-us-order") + service.bulkUpdateBacklogOrder = (projectId, data) -> + url = $urls.resolve("bulk-update-us-backlog-order") + params = {project_id: projectId, bulk_stories: data} + return $http.post(url, params) + + service.bulkUpdateSprintOrder = (projectId, data) -> + url = $urls.resolve("bulk-update-us-sprint-order") + params = {project_id: projectId, bulk_stories: data} + return $http.post(url, params) + + service.bulkUpdateKanbanOrder = (projectId, data) -> + url = $urls.resolve("bulk-update-us-kanban-order") params = {project_id: projectId, bulk_stories: data} return $http.post(url, params)