Delete cards on Kanban and Sprint Taskboad
parent
0804a62aec
commit
5e8db5cb6f
|
@ -151,6 +151,9 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
@.refreshTagsColors().then () =>
|
||||
@kanbanUserstoriesService.replaceModel(us)
|
||||
|
||||
@scope.$on "kanban:us:deleted", (event, us) =>
|
||||
@.filtersReloadContent()
|
||||
|
||||
@scope.$on("assigned-to:added", @.onAssignedToChanged)
|
||||
@scope.$on("assigned-user:added", @.onAssignedUsersChanged)
|
||||
@scope.$on("assigned-user:deleted", @.onAssignedUsersDeleted)
|
||||
|
@ -167,7 +170,7 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
|
||||
editUs: (id) ->
|
||||
us = @kanbanUserstoriesService.getUs(id)
|
||||
us = us.set('loading', true)
|
||||
us = us.set('loading-edit', true)
|
||||
@kanbanUserstoriesService.replace(us)
|
||||
|
||||
@rs.userstories.getByRef(us.getIn(['model', 'project']), us.getIn(['model', 'ref']))
|
||||
|
@ -175,9 +178,27 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
@rs2.attachments.list("us", us.get('id'), us.getIn(['model', 'project'])).then (attachments) =>
|
||||
@rootscope.$broadcast("usform:edit", editingUserStory, attachments.toJS())
|
||||
|
||||
us = us.set('loading', false)
|
||||
us = us.set('loading-edit', false)
|
||||
@kanbanUserstoriesService.replace(us)
|
||||
|
||||
deleteUs: (id) ->
|
||||
us = @kanbanUserstoriesService.getUs(id)
|
||||
us = us.set('loading-delete', true)
|
||||
|
||||
@rs.userstories.getByRef(us.getIn(['model', 'project']), us.getIn(['model', 'ref']))
|
||||
.then (deletingUserStory) =>
|
||||
us = us.set('loading-delete', false)
|
||||
title = @translate.instant("US.TITLE_DELETE_ACTION")
|
||||
message = deletingUserStory.subject
|
||||
@confirm.askOnDelete(title, message).then (askResponse) =>
|
||||
promise = @repo.remove(deletingUserStory)
|
||||
promise.then =>
|
||||
@scope.$broadcast("kanban:us:deleted")
|
||||
askResponse.finish()
|
||||
promise.then null, ->
|
||||
askResponse.finish(false)
|
||||
@confirm.notify("error")
|
||||
|
||||
showPlaceHolder: (statusId) ->
|
||||
if @scope.usStatusList[0].id == statusId &&
|
||||
!@kanbanUserstoriesService.userstoriesRaw.length
|
||||
|
|
|
@ -308,6 +308,9 @@ class TaskboardController extends mixOf(taiga.Controller, taiga.PageMixin, taiga
|
|||
@.refreshTagsColors().then () =>
|
||||
@taskboardTasksService.replaceModel(task)
|
||||
|
||||
@scope.$on "taskboard:task:deleted", (event, task) =>
|
||||
@.loadTasks()
|
||||
|
||||
@scope.$on("taskboard:task:move", @.taskMove)
|
||||
@scope.$on("assigned-to:added", @.onAssignedToChanged)
|
||||
|
||||
|
@ -432,7 +435,7 @@ class TaskboardController extends mixOf(taiga.Controller, taiga.PageMixin, taiga
|
|||
editTask: (id) ->
|
||||
task = @.taskboardTasksService.getTask(id)
|
||||
|
||||
task = task.set('loading', true)
|
||||
task = task.set('loading-edit', true)
|
||||
@taskboardTasksService.replace(task)
|
||||
|
||||
@rs.tasks.getByRef(task.getIn(['model', 'project']), task.getIn(['model', 'ref'])).then (editingTask) =>
|
||||
|
@ -441,6 +444,25 @@ class TaskboardController extends mixOf(taiga.Controller, taiga.PageMixin, taiga
|
|||
task = task.set('loading', false)
|
||||
@taskboardTasksService.replace(task)
|
||||
|
||||
deleteTask: (id) ->
|
||||
task = @.taskboardTasksService.getTask(id)
|
||||
task = task.set('loading-delete', true)
|
||||
|
||||
@rs.tasks.getByRef(task.getIn(['model', 'project']), task.getIn(['model', 'ref']))
|
||||
.then (deletingTask) =>
|
||||
task = task.set('loading-delete', false)
|
||||
title = @translate.instant("TASK.TITLE_DELETE_ACTION")
|
||||
message = deletingTask.subject
|
||||
@confirm.askOnDelete(title, message).then (askResponse) =>
|
||||
promise = @repo.remove(deletingTask)
|
||||
promise.then =>
|
||||
@scope.$broadcast("taskboard:task:deleted")
|
||||
askResponse.finish()
|
||||
promise.then null, ->
|
||||
askResponse.finish(false)
|
||||
@confirm.notify("error")
|
||||
|
||||
|
||||
taskMove: (ctx, task, oldStatusId, usId, statusId, order) ->
|
||||
task = @taskboardTasksService.getTaskModel(task.get('id'))
|
||||
|
||||
|
|
|
@ -47,7 +47,8 @@
|
|||
"RELATED_USERSTORIES": "Related user stories",
|
||||
"CARD": {
|
||||
"ASSIGN_TO": "Assign To",
|
||||
"EDIT": "Edit card"
|
||||
"EDIT": "Edit card",
|
||||
"DELETE": "Delete card"
|
||||
},
|
||||
"FORM_ERRORS": {
|
||||
"DEFAULT_MESSAGE": "This value seems to be invalid.",
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
.card-owner-actions(
|
||||
ng-if="vm.visible('owner')"
|
||||
tg-check-permission="{{vm.getPermissionsKey()}}"
|
||||
tg-check-permission="{{vm.getModifyPermisionKey()}}"
|
||||
)
|
||||
a.e2e-assign.card-owner-assign(
|
||||
ng-click="!$event.ctrlKey && !$event.metaKey && vm.onClickAssignedTo({id: vm.item.get('id')})"
|
||||
|
@ -29,10 +29,20 @@
|
|||
tg-svg(svg-icon="icon-add-user")
|
||||
span(translate="COMMON.CARD.ASSIGN_TO")
|
||||
|
||||
a.e2e-edit.card-edit(
|
||||
href=""
|
||||
ng-click="!$event.ctrlKey && !$event.metaKey && vm.onClickEdit({id: vm.item.get('id')})"
|
||||
tg-loading="vm.item.get('loading')"
|
||||
)
|
||||
tg-svg(svg-icon="icon-edit")
|
||||
span(translate="COMMON.CARD.EDIT")
|
||||
div.card-actions
|
||||
a.e2e-edit.card-edit(
|
||||
href=""
|
||||
ng-click="!$event.ctrlKey && !$event.metaKey && vm.onClickEdit({id: vm.item.get('id')})"
|
||||
tg-loading="vm.item.get('loading-edit')"
|
||||
title="{{ 'COMMON.CARD.EDIT' | translate }}"
|
||||
)
|
||||
tg-svg(svg-icon="icon-edit")
|
||||
|
||||
a.e2e-edit.card-delete(
|
||||
href=""
|
||||
ng-click="!$event.ctrlKey && !$event.metaKey && vm.onClickDelete({id: vm.item.get('id')})"
|
||||
tg-loading="vm.item.get('loading-delete')"
|
||||
title="{{ 'COMMON.CARD.DELETE' | translate }}"
|
||||
tg-check-permission="{{vm.getDeletePermisionKey()}}"
|
||||
)
|
||||
tg-svg(svg-icon="icon-trash")
|
||||
|
|
|
@ -39,11 +39,11 @@ class CardController
|
|||
closedTasksPercent: () ->
|
||||
return @.getClosedTasks().size * 100 / @.item.getIn(['model', 'tasks']).size
|
||||
|
||||
getPermissionsKey: () ->
|
||||
if @.type == 'task'
|
||||
return 'modify_task'
|
||||
else
|
||||
return 'modify_us'
|
||||
getModifyPermisionKey: () ->
|
||||
return if @.type == 'task' then 'modify_task' else 'modify_us'
|
||||
|
||||
getDeletePermisionKey: () ->
|
||||
return if @.type == 'task' then 'delete_task' else 'delete_us'
|
||||
|
||||
_setVisibility: () ->
|
||||
visibility = {
|
||||
|
|
|
@ -31,6 +31,7 @@ cardDirective = () ->
|
|||
onToggleFold: "&",
|
||||
onClickAssignedTo: "&",
|
||||
onClickEdit: "&",
|
||||
onClickDelete: "&",
|
||||
project: "=",
|
||||
item: "=",
|
||||
zoom: "=",
|
||||
|
|
|
@ -119,6 +119,14 @@
|
|||
fill: currentColor;
|
||||
}
|
||||
}
|
||||
.card-actions {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0 .5rem;
|
||||
}
|
||||
.card-delete:hover {
|
||||
color: $red-light;
|
||||
}
|
||||
.icon {
|
||||
@include svg-size(1.2rem);
|
||||
display: inline-block;
|
||||
|
@ -129,7 +137,7 @@
|
|||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
padding: .6rem 1rem;
|
||||
padding: .6rem .5rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -80,6 +80,7 @@ div.kanban-table(
|
|||
tg-bind-scope,
|
||||
on-toggle-fold="ctrl.toggleFold(id)"
|
||||
on-click-edit="ctrl.editUs(id)"
|
||||
on-click-delete="ctrl.deleteUs(id)"
|
||||
on-click-assigned-to="ctrl.changeUsAssignedUsers(id)"
|
||||
project="project"
|
||||
item="us"
|
||||
|
|
|
@ -82,6 +82,7 @@ div.taskboard-table(
|
|||
tg-bind-scope,
|
||||
on-toggle-fold="ctrl.toggleFold(id)"
|
||||
on-click-edit="ctrl.editTask(id)"
|
||||
on-click-delete="ctrl.deleteTask(id)"
|
||||
on-click-assigned-to="ctrl.changeTaskAssignedTo(id)"
|
||||
project="project"
|
||||
item="task"
|
||||
|
@ -127,6 +128,7 @@ div.taskboard-table(
|
|||
tg-class-permission="{'readonly': '!modify_task'}"
|
||||
on-toggle-fold="ctrl.toggleFold(id)"
|
||||
on-click-edit="ctrl.editTask(id)"
|
||||
on-click-delete="ctrl.deleteTask(id)"
|
||||
on-click-assigned-to="ctrl.changeTaskAssignedTo(id)"
|
||||
project="project"
|
||||
item="task"
|
||||
|
|
Loading…
Reference in New Issue