From 4428bb27b78bf8f75d8ff15c227a8dfbb82aaa8e Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Wed, 1 Feb 2017 15:23:01 +0000 Subject: Removed Masonry, instead uses groups of data Added some error handling which reverts the frontend data changes & notifies the user --- app/assets/javascripts/boards/boards_bundle.js.es6 | 1 - .../boards/components/issue_card_inner.js.es6 | 10 +- .../boards/components/modal/footer.js.es6 | 11 +- .../boards/components/modal/header.js.es6 | 7 +- .../boards/components/modal/index.js.es6 | 24 +++-- .../boards/components/modal/list.js.es6 | 117 +++++++++++---------- .../boards/components/modal/lists_dropdown.js.es6 | 2 +- .../boards/components/modal/tabs.js.es6 | 4 +- .../boards/components/sidebar/remove_issue.js.es6 | 15 ++- .../javascripts/boards/stores/modal_store.js.es6 | 7 +- 10 files changed, 122 insertions(+), 76 deletions(-) (limited to 'app/assets/javascripts/boards') diff --git a/app/assets/javascripts/boards/boards_bundle.js.es6 b/app/assets/javascripts/boards/boards_bundle.js.es6 index afe4c9f9175..4ac91786762 100644 --- a/app/assets/javascripts/boards/boards_bundle.js.es6 +++ b/app/assets/javascripts/boards/boards_bundle.js.es6 @@ -5,7 +5,6 @@ //= require vue //= require vue-resource //= require Sortable -//= require masonry //= require_tree ./models //= require_tree ./stores //= require_tree ./services diff --git a/app/assets/javascripts/boards/components/issue_card_inner.js.es6 b/app/assets/javascripts/boards/components/issue_card_inner.js.es6 index 10b82ba0998..22a8b971ff8 100644 --- a/app/assets/javascripts/boards/components/issue_card_inner.js.es6 +++ b/app/assets/javascripts/boards/components/issue_card_inner.js.es6 @@ -33,7 +33,7 @@ filterByLabel(label, e) { let labelToggleText = label.title; const labelIndex = Store.state.filters.label_name.indexOf(label.title); - $(e.target).tooltip('hide'); + $(e.currentTarget).tooltip('hide'); if (labelIndex === -1) { Store.state.filters.label_name.push(label.title); @@ -55,6 +55,12 @@ Store.updateFiltersUrl(); }, + labelStyle(label) { + return { + backgroundColor: label.color, + color: label.textColor, + }; + }, }, template: `
@@ -93,7 +99,7 @@ type="button" v-if="showLabel(label)" @click="filterByLabel(label, $event)" - :style="{ backgroundColor: label.color, color: label.textColor }" + :style="labelStyle(label)" :title="label.description" data-container="body"> {{ label.title }} diff --git a/app/assets/javascripts/boards/components/modal/footer.js.es6 b/app/assets/javascripts/boards/components/modal/footer.js.es6 index 8883beb1290..4085a22b25a 100644 --- a/app/assets/javascripts/boards/components/modal/footer.js.es6 +++ b/app/assets/javascripts/boards/components/modal/footer.js.es6 @@ -1,5 +1,7 @@ +/* eslint-disable no-new */ //= require ./lists_dropdown /* global Vue */ +/* global Flash */ (() => { const ModalStore = gl.issueBoards.ModalStore; @@ -15,7 +17,7 @@ submitText() { const count = ModalStore.selectedCount(); - return `Add ${count > 0 ? count : ''} issue${count > 1 || !count ? 's' : ''}`; + return `Add ${count > 0 ? count : ''} ${gl.text.pluralize('issue', count)}`; }, }, methods: { @@ -27,6 +29,13 @@ // Post the data to the backend gl.boardService.bulkUpdate(issueIds, { add_label_ids: [list.label.id], + }).catch(() => { + new Flash('Failed to update issues, please try again.', 'alert'); + + selectedIssues.forEach((issue) => { + list.removeIssue(issue); + list.issuesSize -= 1; + }); }); // 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 194d598d42e..dbbcd73f1fe 100644 --- a/app/assets/javascripts/boards/components/modal/header.js.es6 +++ b/app/assets/javascripts/boards/components/modal/header.js.es6 @@ -3,7 +3,7 @@ (() => { const ModalStore = gl.issueBoards.ModalStore; - gl.issueBoards.IssuesModalHeader = Vue.extend({ + gl.issueBoards.ModalHeader = Vue.extend({ mixins: [gl.issueBoards.ModalMixins], data() { return ModalStore.store; @@ -16,6 +16,9 @@ return 'Deselect all'; }, + showSearch() { + return this.activeTab === 'all' && !this.loading && this.issuesCount > 0; + }, }, methods: { toggleAll() { @@ -45,7 +48,7 @@