summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2017-01-31 10:39:44 +0000
committerFatih Acet <acetfatih@gmail.com>2017-02-03 17:02:44 +0300
commit39fbd18951e7c6bd4b403cd82dd4e008fd00d6fe (patch)
tree0e404b968c955fc80368754e8f08c4baadd81650
parent1b01386a9513ad71f07aab79a29ee1f877db8df6 (diff)
downloadgitlab-ce-39fbd18951e7c6bd4b403cd82dd4e008fd00d6fe.tar.gz
Fixed bug with empty state showing after search
Fixed users href path being incorrect
-rw-r--r--app/assets/javascripts/boards/boards_bundle.js.es61
-rw-r--r--app/assets/javascripts/boards/components/board.js.es63
-rw-r--r--app/assets/javascripts/boards/components/board_card.js.es63
-rw-r--r--app/assets/javascripts/boards/components/board_list.js.es61
-rw-r--r--app/assets/javascripts/boards/components/board_sidebar.js.es62
-rw-r--r--app/assets/javascripts/boards/components/issue_card_inner.js.es69
-rw-r--r--app/assets/javascripts/boards/components/modal/empty_state.js.es66
-rw-r--r--app/assets/javascripts/boards/components/modal/footer.js.es63
-rw-r--r--app/assets/javascripts/boards/components/modal/header.js.es64
-rw-r--r--app/assets/javascripts/boards/components/modal/index.js.es610
-rw-r--r--app/assets/javascripts/boards/components/modal/list.js.es611
-rw-r--r--app/assets/javascripts/boards/components/modal/tabs.js.es62
-rw-r--r--app/assets/javascripts/boards/services/board_service.js.es62
-rw-r--r--app/assets/javascripts/boards/stores/boards_store.js.es65
-rw-r--r--app/assets/javascripts/boards/stores/modal_store.js.es63
-rw-r--r--app/helpers/boards_helper.rb3
-rw-r--r--app/views/projects/boards/_show.html.haml4
-rw-r--r--app/views/projects/boards/components/_board.html.haml1
-rw-r--r--app/views/projects/boards/components/_board_list.html.haml1
-rw-r--r--app/views/projects/boards/components/_card.html.haml3
-rw-r--r--spec/features/boards/add_issues_modal_spec.rb1
21 files changed, 48 insertions, 30 deletions
diff --git a/app/assets/javascripts/boards/boards_bundle.js.es6 b/app/assets/javascripts/boards/boards_bundle.js.es6
index 18b67abfccc..1cce580df79 100644
--- a/app/assets/javascripts/boards/boards_bundle.js.es6
+++ b/app/assets/javascripts/boards/boards_bundle.js.es6
@@ -44,6 +44,7 @@ $(() => {
boardId: $boardApp.dataset.boardId,
disabled: $boardApp.dataset.disabled === 'true',
issueLinkBase: $boardApp.dataset.issueLinkBase,
+ rootPath: $boardApp.dataset.rootPath,
detailIssue: Store.detail
},
computed: {
diff --git a/app/assets/javascripts/boards/components/board.js.es6 b/app/assets/javascripts/boards/components/board.js.es6
index a32881116d5..d6148ae748a 100644
--- a/app/assets/javascripts/boards/components/board.js.es6
+++ b/app/assets/javascripts/boards/components/board.js.es6
@@ -22,7 +22,8 @@
props: {
list: Object,
disabled: Boolean,
- issueLinkBase: String
+ issueLinkBase: String,
+ rootPath: String,
},
data () {
return {
diff --git a/app/assets/javascripts/boards/components/board_card.js.es6 b/app/assets/javascripts/boards/components/board_card.js.es6
index 037100c0859..032b93da021 100644
--- a/app/assets/javascripts/boards/components/board_card.js.es6
+++ b/app/assets/javascripts/boards/components/board_card.js.es6
@@ -18,7 +18,8 @@
issue: Object,
issueLinkBase: String,
disabled: Boolean,
- index: Number
+ index: Number,
+ rootPath: String,
},
data () {
return {
diff --git a/app/assets/javascripts/boards/components/board_list.js.es6 b/app/assets/javascripts/boards/components/board_list.js.es6
index 630fe084175..6906a910a2f 100644
--- a/app/assets/javascripts/boards/components/board_list.js.es6
+++ b/app/assets/javascripts/boards/components/board_list.js.es6
@@ -23,6 +23,7 @@
issues: Array,
loading: Boolean,
issueLinkBase: String,
+ rootPath: String,
},
data () {
return {
diff --git a/app/assets/javascripts/boards/components/board_sidebar.js.es6 b/app/assets/javascripts/boards/components/board_sidebar.js.es6
index e5937c178f2..126ccdb4978 100644
--- a/app/assets/javascripts/boards/components/board_sidebar.js.es6
+++ b/app/assets/javascripts/boards/components/board_sidebar.js.es6
@@ -65,7 +65,7 @@
gl.Subscription.bindAll('.subscription');
},
components: {
- 'remove-btn': gl.issueBoards.RemoveIssueBtn,
+ removeBtn: gl.issueBoards.RemoveIssueBtn,
},
});
})();
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 61fcfde0a02..73db6480269 100644
--- a/app/assets/javascripts/boards/components/issue_card_inner.js.es6
+++ b/app/assets/javascripts/boards/components/issue_card_inner.js.es6
@@ -7,7 +7,7 @@
gl.issueBoards.IssueCardInner = Vue.extend({
props: [
- 'issue', 'issueLinkBase', 'list',
+ 'issue', 'issueLinkBase', 'list', 'rootPath',
],
methods: {
showLabel(label) {
@@ -57,11 +57,11 @@
<span
class="card-number"
v-if="issue.id">
- #{{issue.id}}
+ #{{ issue.id }}
</span>
<a
class="card-assignee has-tooltip"
- :href="issue.assignee.username"
+ :href="rootPath + issue.assignee.username"
:title="'Assigned to ' + issue.assignee.name"
v-if="issue.assignee"
data-container="body">
@@ -69,7 +69,8 @@
class="avatar avatar-inline s20"
:src="issue.assignee.avatar"
width="20"
- height="20" />
+ height="20"
+ :alt="'Avatar for ' + issue.assignee.name" />
</a>
<button
class="label color-label has-tooltip"
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 70f2ea51620..c5137d966e2 100644
--- a/app/assets/javascripts/boards/components/modal/empty_state.js.es6
+++ b/app/assets/javascripts/boards/components/modal/empty_state.js.es6
@@ -31,10 +31,10 @@
},
},
template: `
- <div class="empty-state">
+ <section class="empty-state">
<div class="row">
<div class="col-xs-12 col-sm-6 col-sm-push-6">
- <div class="svg-content" v-html="image"></div>
+ <aside class="svg-content" v-html="image"></aside>
</div>
<div class="col-xs-12 col-sm-6 col-sm-pull-6">
<div class="text-content">
@@ -56,7 +56,7 @@
</div>
</div>
</div>
- </div>
+ </section>
`,
});
})();
diff --git a/app/assets/javascripts/boards/components/modal/footer.js.es6 b/app/assets/javascripts/boards/components/modal/footer.js.es6
index 566303431f6..2ed81abe625 100644
--- a/app/assets/javascripts/boards/components/modal/footer.js.es6
+++ b/app/assets/javascripts/boards/components/modal/footer.js.es6
@@ -27,8 +27,7 @@
addIssues() {
const list = this.selectedList;
const selectedIssues = ModalStore.getSelectedIssues();
- const issueIds = selectedIssues.filter(issue => issue.selected)
- .map(issue => issue.globalId);
+ const issueIds = selectedIssues.map(issue => issue.globalId);
// Post the data to the backend
this.$http.post(this.bulkUpdatePath, {
diff --git a/app/assets/javascripts/boards/components/modal/header.js.es6 b/app/assets/javascripts/boards/components/modal/header.js.es6
index f6d891a1633..8024e89a29b 100644
--- a/app/assets/javascripts/boards/components/modal/header.js.es6
+++ b/app/assets/javascripts/boards/components/modal/header.js.es6
@@ -41,10 +41,10 @@
</button>
</h2>
</header>
- <modal-tabs v-if="!loading && issues.length > 0"></modal-tabs>
+ <modal-tabs v-if="!loading && issuesCount > 0"></modal-tabs>
<div
class="add-issues-search append-bottom-10"
- v-if="activeTab == 'all' && !loading && issues.length > 0">
+ v-if="activeTab == 'all' && !loading && issuesCount > 0">
<input
placeholder="Search issues..."
class="form-control"
diff --git a/app/assets/javascripts/boards/components/modal/index.js.es6 b/app/assets/javascripts/boards/components/modal/index.js.es6
index dd40075ac47..4536f5cfe6f 100644
--- a/app/assets/javascripts/boards/components/modal/index.js.es6
+++ b/app/assets/javascripts/boards/components/modal/index.js.es6
@@ -10,6 +10,7 @@
gl.issueBoards.IssuesModal = Vue.extend({
props: [
'blankStateImage', 'newIssuePath', 'bulkUpdatePath', 'issueLinkBase',
+ 'rootPath',
],
data() {
return ModalStore.store;
@@ -57,6 +58,10 @@
});
this.loadingNewPage = false;
+
+ if (!this.issuesCount) {
+ this.issuesCount = this.issues.length;
+ }
});
},
},
@@ -66,7 +71,7 @@
return this.selectedIssues.length > 0;
}
- return this.issues.length > 0;
+ return this.issuesCount > 0;
},
},
components: {
@@ -83,9 +88,10 @@
<modal-header></modal-header>
<modal-list
:issue-link-base="issueLinkBase"
+ :root-path="rootPath"
v-if="!loading && showList"></modal-list>
<empty-state
- v-if="(!loading && issues.length === 0) || (activeTab === 'selected' && selectedIssues.length === 0)"
+ v-if="(!loading && issuesCount === 0) || (activeTab === 'selected' && selectedIssues.length === 0)"
:image="blankStateImage"
:new-issue-path="newIssuePath"></empty-state>
<section
diff --git a/app/assets/javascripts/boards/components/modal/list.js.es6 b/app/assets/javascripts/boards/components/modal/list.js.es6
index 309696c7078..8db1ab4df5e 100644
--- a/app/assets/javascripts/boards/components/modal/list.js.es6
+++ b/app/assets/javascripts/boards/components/modal/list.js.es6
@@ -7,7 +7,7 @@
gl.issueBoards.ModalList = Vue.extend({
props: [
- 'issueLinkBase',
+ 'issueLinkBase', 'rootPath',
],
data() {
return ModalStore.store;
@@ -97,7 +97,7 @@
issueCardInner: gl.issueBoards.IssueCardInner,
},
template: `
- <div
+ <section
class="add-issues-list add-issues-list-columns"
ref="list">
<div
@@ -110,16 +110,19 @@
@click="toggleIssue($event, issue)">
<issue-card-inner
:issue="issue"
- :issue-link-base="issueLinkBase">
+ :issue-link-base="issueLinkBase"
+ :root-path="rootPath">
</issue-card-inner>
<span
+ :aria-label="'Issue #' + issue.id + ' selected'"
+ aria-checked="true"
v-if="issue.selected"
class="issue-card-selected text-center">
<i class="fa fa-check"></i>
</span>
</div>
</div>
- </div>
+ </section>
`,
});
})();
diff --git a/app/assets/javascripts/boards/components/modal/tabs.js.es6 b/app/assets/javascripts/boards/components/modal/tabs.js.es6
index 94ff8ec999a..007e01f7d82 100644
--- a/app/assets/javascripts/boards/components/modal/tabs.js.es6
+++ b/app/assets/javascripts/boards/components/modal/tabs.js.es6
@@ -24,7 +24,7 @@
@click.prevent="activeTab = 'all'">
<span>All issues</span>
<span class="badge">
- {{ issues.length }}
+ {{ issuesCount }}
</span>
</a>
</li>
diff --git a/app/assets/javascripts/boards/services/board_service.js.es6 b/app/assets/javascripts/boards/services/board_service.js.es6
index 993f8599fd4..ad58abdcb45 100644
--- a/app/assets/javascripts/boards/services/board_service.js.es6
+++ b/app/assets/javascripts/boards/services/board_service.js.es6
@@ -13,7 +13,7 @@ class BoardService {
generate: {
method: 'POST',
url: `${root}/${boardId}/lists/generate.json`
- },
+ }
});
this.issue = Vue.resource(`${root}/${boardId}/issues{/id}`, {});
this.issues = Vue.resource(`${root}/${boardId}/lists{/id}/issues`, {});
diff --git a/app/assets/javascripts/boards/stores/boards_store.js.es6 b/app/assets/javascripts/boards/stores/boards_store.js.es6
index 66ecae1c01d..50842ecbaaa 100644
--- a/app/assets/javascripts/boards/stores/boards_store.js.es6
+++ b/app/assets/javascripts/boards/stores/boards_store.js.es6
@@ -115,9 +115,6 @@
},
updateFiltersUrl () {
history.pushState(null, null, `?${$.param(this.state.filters)}`);
- },
- modalSelectedCount() {
- return this.modal.selectedIssues.length;
- },
+ }
};
})();
diff --git a/app/assets/javascripts/boards/stores/modal_store.js.es6 b/app/assets/javascripts/boards/stores/modal_store.js.es6
index e2234290657..66305347b8c 100644
--- a/app/assets/javascripts/boards/stores/modal_store.js.es6
+++ b/app/assets/javascripts/boards/stores/modal_store.js.es6
@@ -6,6 +6,7 @@
constructor() {
this.store = {
issues: [],
+ issuesCount: false,
selectedIssues: [],
showAddIssuesModal: false,
activeTab: 'all',
@@ -19,7 +20,7 @@
}
selectedCount() {
- return this.store.selectedIssues.filter(issue => issue.selected).length;
+ return this.getSelectedIssues().length;
}
toggleIssue(issueObj) {
diff --git a/app/helpers/boards_helper.rb b/app/helpers/boards_helper.rb
index 38c586ccd31..0b1b79ce15b 100644
--- a/app/helpers/boards_helper.rb
+++ b/app/helpers/boards_helper.rb
@@ -6,7 +6,8 @@ module BoardsHelper
endpoint: namespace_project_boards_path(@project.namespace, @project),
board_id: board.id,
disabled: "#{!can?(current_user, :admin_list, @project)}",
- issue_link_base: namespace_project_issues_path(@project.namespace, @project)
+ issue_link_base: namespace_project_issues_path(@project.namespace, @project),
+ root_path: root_path,
}
end
end
diff --git a/app/views/projects/boards/_show.html.haml b/app/views/projects/boards/_show.html.haml
index a0f9dfc5b5b..a35f0ab557d 100644
--- a/app/views/projects/boards/_show.html.haml
+++ b/app/views/projects/boards/_show.html.haml
@@ -24,9 +24,11 @@
":list" => "list",
":disabled" => "disabled",
":issue-link-base" => "issueLinkBase",
+ ":root-path" => "rootPath",
":key" => "_uid" }
= 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" }
+ ":issue-link-base" => "issueLinkBase",
+ ":root-path" => "rootPath" }
diff --git a/app/views/projects/boards/components/_board.html.haml b/app/views/projects/boards/components/_board.html.haml
index a2e5118a9f3..72bce4049de 100644
--- a/app/views/projects/boards/components/_board.html.haml
+++ b/app/views/projects/boards/components/_board.html.haml
@@ -29,6 +29,7 @@
":loading" => "list.loading",
":disabled" => "disabled",
":issue-link-base" => "issueLinkBase",
+ ":root-path" => "rootPath",
"ref" => "board-list" }
- if can?(current_user, :admin_list, @project)
= render "projects/boards/components/blank_state"
diff --git a/app/views/projects/boards/components/_board_list.html.haml b/app/views/projects/boards/components/_board_list.html.haml
index 34fdb1f6a74..f413a5e94c1 100644
--- a/app/views/projects/boards/components/_board_list.html.haml
+++ b/app/views/projects/boards/components/_board_list.html.haml
@@ -34,6 +34,7 @@
":list" => "list",
":issue" => "issue",
":issue-link-base" => "issueLinkBase",
+ ":root-path" => "rootPath",
":disabled" => "disabled",
":key" => "issue.id" }
%li.board-list-count.text-center{ "v-if" => "showCount" }
diff --git a/app/views/projects/boards/components/_card.html.haml b/app/views/projects/boards/components/_card.html.haml
index 51e5d739537..891c2c46251 100644
--- a/app/views/projects/boards/components/_card.html.haml
+++ b/app/views/projects/boards/components/_card.html.haml
@@ -6,4 +6,5 @@
"@mouseup" => "showIssue($event)" }
%issue-card-inner{ ":list" => "list",
":issue" => "issue",
- ":issue-link-base" => "issueLinkBase" }
+ ":issue-link-base" => "issueLinkBase",
+ ":root-path" => "rootPath" }
diff --git a/spec/features/boards/add_issues_modal_spec.rb b/spec/features/boards/add_issues_modal_spec.rb
index 5ba044a4f3c..ae245d7469b 100644
--- a/spec/features/boards/add_issues_modal_spec.rb
+++ b/spec/features/boards/add_issues_modal_spec.rb
@@ -90,6 +90,7 @@ describe 'Issue Boards add issue modal', :feature, :js do
find('.form-control').native.send_keys('testing search')
expect(page).not_to have_selector('.card')
+ expect(page).not_to have_content("You haven't added any issues to your project yet")
end
end
end