Removes labels instead of closing issue when clicking remove button
This commit is contained in:
parent
32a97ef19c
commit
103c78f18c
9 changed files with 38 additions and 18 deletions
|
@ -45,6 +45,7 @@ $(() => {
|
|||
disabled: $boardApp.dataset.disabled === 'true',
|
||||
issueLinkBase: $boardApp.dataset.issueLinkBase,
|
||||
rootPath: $boardApp.dataset.rootPath,
|
||||
bulkUpdatePath: $boardApp.dataset.bulkUpdatePath,
|
||||
detailIssue: Store.detail
|
||||
},
|
||||
computed: {
|
||||
|
@ -53,7 +54,7 @@ $(() => {
|
|||
},
|
||||
},
|
||||
created () {
|
||||
gl.boardService = new BoardService(this.endpoint, this.boardId);
|
||||
gl.boardService = new BoardService(this.endpoint, this.bulkUpdatePath, this.boardId);
|
||||
},
|
||||
mounted () {
|
||||
Store.disabled = this.disabled;
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
:href="newIssuePath"
|
||||
class="btn btn-success btn-inverted"
|
||||
v-if="activeTab === 'all'">
|
||||
Create issue
|
||||
New issue
|
||||
</a>
|
||||
<button
|
||||
type="button"
|
||||
|
|
|
@ -4,9 +4,6 @@
|
|||
const ModalStore = gl.issueBoards.ModalStore;
|
||||
|
||||
gl.issueBoards.ModalFooter = Vue.extend({
|
||||
props: [
|
||||
'bulkUpdatePath',
|
||||
],
|
||||
data() {
|
||||
return ModalStore.store;
|
||||
},
|
||||
|
@ -30,11 +27,8 @@
|
|||
const issueIds = selectedIssues.map(issue => issue.globalId);
|
||||
|
||||
// Post the data to the backend
|
||||
this.$http.post(this.bulkUpdatePath, {
|
||||
update: {
|
||||
issuable_ids: issueIds.join(','),
|
||||
add_label_ids: [list.label.id],
|
||||
},
|
||||
gl.boardService.bulkUpdate(issueIds, {
|
||||
add_label_ids: [list.label.id],
|
||||
});
|
||||
|
||||
// Add the issues on the frontend
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
return 'Select all';
|
||||
}
|
||||
|
||||
return 'Un-select all';
|
||||
return 'Deselect all';
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
gl.issueBoards.IssuesModal = Vue.extend({
|
||||
props: [
|
||||
'blankStateImage', 'newIssuePath', 'bulkUpdatePath', 'issueLinkBase',
|
||||
'blankStateImage', 'newIssuePath', 'issueLinkBase',
|
||||
'rootPath',
|
||||
],
|
||||
data() {
|
||||
|
@ -33,6 +33,7 @@
|
|||
} else if (!this.showAddIssuesModal) {
|
||||
this.issues = [];
|
||||
this.selectedIssues = [];
|
||||
this.issuesCount = false;
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -101,7 +102,7 @@
|
|||
<i class="fa fa-spinner fa-spin"></i>
|
||||
</div>
|
||||
</section>
|
||||
<modal-footer :bulk-update-path="bulkUpdatePath"></modal-footer>
|
||||
<modal-footer></modal-footer>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
|
|
|
@ -11,9 +11,18 @@
|
|||
],
|
||||
methods: {
|
||||
removeIssue() {
|
||||
const doneList = Store.findList('type', 'done', false);
|
||||
const lists = this.issue.getLists();
|
||||
const labelIds = lists.map(list => list.label.id);
|
||||
|
||||
Store.moveIssueToList(this.list, doneList, this.issue, 0);
|
||||
// Post the remove data
|
||||
gl.boardService.bulkUpdate([this.issue.globalId], {
|
||||
remove_label_ids: labelIds,
|
||||
});
|
||||
|
||||
// Remove from the frontend store
|
||||
lists.forEach((list) => {
|
||||
list.removeIssue(this.issue);
|
||||
});
|
||||
|
||||
Store.detail.issue = {};
|
||||
},
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/* global Vue */
|
||||
|
||||
class BoardService {
|
||||
constructor (root, boardId) {
|
||||
constructor (root, bulkUpdatePath, boardId) {
|
||||
this.boards = Vue.resource(`${root}{/id}.json`, {}, {
|
||||
issues: {
|
||||
method: 'GET',
|
||||
|
@ -16,7 +16,12 @@ class BoardService {
|
|||
}
|
||||
});
|
||||
this.issue = Vue.resource(`${root}/${boardId}/issues{/id}`, {});
|
||||
this.issues = Vue.resource(`${root}/${boardId}/lists{/id}/issues`, {});
|
||||
this.issues = Vue.resource(`${root}/${boardId}/lists{/id}/issues`, {}, {
|
||||
bulkUpdate: {
|
||||
method: 'POST',
|
||||
url: bulkUpdatePath,
|
||||
},
|
||||
});
|
||||
|
||||
Vue.http.interceptors.push((request, next) => {
|
||||
request.headers['X-CSRF-Token'] = $.rails.csrfToken();
|
||||
|
@ -75,6 +80,16 @@ class BoardService {
|
|||
getBacklog(data) {
|
||||
return this.boards.issues(data);
|
||||
}
|
||||
|
||||
bulkUpdate(issueIds, extraData = {}) {
|
||||
const data = {
|
||||
update: Object.assign(extraData, {
|
||||
issuable_ids: issueIds.join(','),
|
||||
}),
|
||||
};
|
||||
|
||||
return this.issues.bulkUpdate(data);
|
||||
}
|
||||
}
|
||||
|
||||
window.BoardService = BoardService;
|
||||
|
|
|
@ -8,6 +8,7 @@ module BoardsHelper
|
|||
disabled: "#{!can?(current_user, :admin_list, @project)}",
|
||||
issue_link_base: namespace_project_issues_path(@project.namespace, @project),
|
||||
root_path: root_path,
|
||||
bulk_update_path: bulk_update_namespace_project_issues_path(@project.namespace, @project),
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -29,6 +29,5 @@
|
|||
= render "projects/boards/components/sidebar"
|
||||
%board-add-issues-modal{ "blank-state-image" => render('shared/empty_states/icons/issues.svg'),
|
||||
"new-issue-path" => new_namespace_project_issue_path(@project.namespace, @project),
|
||||
"bulk-update-path" => bulk_update_namespace_project_issues_path(@project.namespace, @project),
|
||||
":issue-link-base" => "issueLinkBase",
|
||||
":root-path" => "rootPath" }
|
||||
|
|
Loading…
Reference in a new issue