diff --git a/app/coffee/modules/issues/lightboxes.coffee b/app/coffee/modules/issues/lightboxes.coffee index 81f1bfc8..cdf0ad3b 100644 --- a/app/coffee/modules/issues/lightboxes.coffee +++ b/app/coffee/modules/issues/lightboxes.coffee @@ -81,6 +81,42 @@ CreateIssueDirective = ($repo, $model, $rs, $rootscope) -> return {link:link} +CreateBulkIssuesDirective = ($repo, $rs, $rootscope) -> + link = ($scope, $el, attrs) -> + $scope.form = {data: "", usId: null} + + $scope.$on "issueform:bulk", (ctx, sprintId, usId)-> + $el.removeClass("hidden") + $scope.form = {data: "", sprintId: sprintId, usId: usId} + + $el.on "click", ".close", (event) -> + event.preventDefault() + $el.addClass("hidden") + + $el.on "click", ".button-green", (event) -> + event.preventDefault() + + form = $el.find("form").checksley() + if not form.validate() + return + + data = $scope.form.data + projectId = $scope.projectId + + promise = $rs.issues.bulkCreate(projectId, data) + promise.then (result) -> + $rootscope.$broadcast("issueform:bulk:success", result) + $el.addClass("hidden") + + # TODO: error handling + promise.then null, -> + console.log "FAIL" + + $scope.$on "$destroy", -> + $el.off() + + return {link: link} + module.directive("tgLbCreateIssue", [ "$tgRepo", "$tgModel", @@ -89,6 +125,13 @@ module.directive("tgLbCreateIssue", [ CreateIssueDirective ]) +module.directive("tgLbCreateBulkIssues", [ + "$tgRepo", + "$tgResources", + "$rootScope", + CreateBulkIssuesDirective +]) + ############################################################################# ## Issue Create Lightbox Directive ############################################################################# @@ -114,4 +157,3 @@ module.directive("tgLbCreateIssue", [ # "$rootScope", # CreateIssueDirective # ]) - diff --git a/app/coffee/modules/resources.coffee b/app/coffee/modules/resources.coffee index 6d8bb848..795be0c8 100644 --- a/app/coffee/modules/resources.coffee +++ b/app/coffee/modules/resources.coffee @@ -41,6 +41,7 @@ urls = { "bulk-create-tasks": "/api/v1/tasks/bulk_create" "tasks-restore": "/api/v1/tasks/%s/restore" "issues": "/api/v1/issues" + "bulk-create-issues": "/api/v1/issues/bulk_create" "issues-restore": "/api/v1/issues/%s/restore" "wiki": "/api/v1/wiki" "wiki-restore": "/api/v1/wiki/%s/restore" diff --git a/app/coffee/modules/resources/issues.coffee b/app/coffee/modules/resources/issues.coffee index d2bdb35c..aee2c5c9 100644 --- a/app/coffee/modules/resources/issues.coffee +++ b/app/coffee/modules/resources/issues.coffee @@ -22,7 +22,7 @@ taiga = @.taiga -resourceProvider = ($repo) -> +resourceProvider = ($repo, $http, $urls) -> service = {} service.get = (projectId, issueId) -> @@ -34,6 +34,11 @@ resourceProvider = ($repo) -> params = _.extend({}, params, filters or {}) return $repo.queryPaginated("issues", params) + service.bulkCreate = (projectId, data) -> + url = $urls.resolve("bulk-create-issues") + params = {projectId: projectId, bulkIssues: data} + return $http.post(url, params) + service.stats = (projectId) -> return $repo.queryOneRaw("projects", "#{projectId}/issues_stats") @@ -52,4 +57,4 @@ resourceProvider = ($repo) -> module = angular.module("taigaResources") -module.factory("$tgIssuesResourcesProvider", ["$tgRepo", resourceProvider]) +module.factory("$tgIssuesResourcesProvider", ["$tgRepo", "$tgHttp", "$tgUrls", resourceProvider])