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