summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2017-01-31 14:35:53 +0000
committerFatih Acet <acetfatih@gmail.com>2017-02-03 17:02:44 +0300
commit103c78f18c0642c36a6093508707b82eb8d1dd77 (patch)
treea4be3ccb885e5e615c88777364d1412ca004427b
parent32a97ef19c9adf30bd67bb310551dff883231dbc (diff)
downloadgitlab-ce-103c78f18c0642c36a6093508707b82eb8d1dd77.tar.gz
Removes labels instead of closing issue when clicking remove button
-rw-r--r--app/assets/javascripts/boards/boards_bundle.js.es63
-rw-r--r--app/assets/javascripts/boards/components/modal/empty_state.js.es62
-rw-r--r--app/assets/javascripts/boards/components/modal/footer.js.es610
-rw-r--r--app/assets/javascripts/boards/components/modal/header.js.es62
-rw-r--r--app/assets/javascripts/boards/components/modal/index.js.es65
-rw-r--r--app/assets/javascripts/boards/components/sidebar/remove_issue.js.es613
-rw-r--r--app/assets/javascripts/boards/services/board_service.js.es619
-rw-r--r--app/helpers/boards_helper.rb1
-rw-r--r--app/views/projects/boards/_show.html.haml1
9 files changed, 38 insertions, 18 deletions
diff --git a/app/assets/javascripts/boards/boards_bundle.js.es6 b/app/assets/javascripts/boards/boards_bundle.js.es6
index 1cce580df79..81df823cad1 100644
--- a/app/assets/javascripts/boards/boards_bundle.js.es6
+++ b/app/assets/javascripts/boards/boards_bundle.js.es6
@@ -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;
diff --git a/app/assets/javascripts/boards/components/modal/empty_state.js.es6 b/app/assets/javascripts/boards/components/modal/empty_state.js.es6
index c5137d966e2..93d250e07f5 100644
--- a/app/assets/javascripts/boards/components/modal/empty_state.js.es6
+++ b/app/assets/javascripts/boards/components/modal/empty_state.js.es6
@@ -44,7 +44,7 @@
:href="newIssuePath"
class="btn btn-success btn-inverted"
v-if="activeTab === 'all'">
- Create issue
+ New issue
</a>
<button
type="button"
diff --git a/app/assets/javascripts/boards/components/modal/footer.js.es6 b/app/assets/javascripts/boards/components/modal/footer.js.es6
index 2ed81abe625..4c0f21fa1d6 100644
--- a/app/assets/javascripts/boards/components/modal/footer.js.es6
+++ b/app/assets/javascripts/boards/components/modal/footer.js.es6
@@ -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
diff --git a/app/assets/javascripts/boards/components/modal/header.js.es6 b/app/assets/javascripts/boards/components/modal/header.js.es6
index 8024e89a29b..4a1845e4580 100644
--- a/app/assets/javascripts/boards/components/modal/header.js.es6
+++ b/app/assets/javascripts/boards/components/modal/header.js.es6
@@ -13,7 +13,7 @@
return 'Select all';
}
- return 'Un-select all';
+ return 'Deselect all';
},
},
methods: {
diff --git a/app/assets/javascripts/boards/components/modal/index.js.es6 b/app/assets/javascripts/boards/components/modal/index.js.es6
index 4536f5cfe6f..612657753d5 100644
--- a/app/assets/javascripts/boards/components/modal/index.js.es6
+++ b/app/assets/javascripts/boards/components/modal/index.js.es6
@@ -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>
`,
diff --git a/app/assets/javascripts/boards/components/sidebar/remove_issue.js.es6 b/app/assets/javascripts/boards/components/sidebar/remove_issue.js.es6
index 3f965b7b9b2..70f7da17d49 100644
--- a/app/assets/javascripts/boards/components/sidebar/remove_issue.js.es6
+++ b/app/assets/javascripts/boards/components/sidebar/remove_issue.js.es6
@@ -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 = {};
},
diff --git a/app/assets/javascripts/boards/services/board_service.js.es6 b/app/assets/javascripts/boards/services/board_service.js.es6
index ad58abdcb45..065e90518df 100644
--- a/app/assets/javascripts/boards/services/board_service.js.es6
+++ b/app/assets/javascripts/boards/services/board_service.js.es6
@@ -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;
diff --git a/app/helpers/boards_helper.rb b/app/helpers/boards_helper.rb
index 0b1b79ce15b..f43827da446 100644
--- a/app/helpers/boards_helper.rb
+++ b/app/helpers/boards_helper.rb
@@ -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
diff --git a/app/views/projects/boards/_show.html.haml b/app/views/projects/boards/_show.html.haml
index a35f0ab557d..13bc20f2ae2 100644
--- a/app/views/projects/boards/_show.html.haml
+++ b/app/views/projects/boards/_show.html.haml
@@ -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" }