Commit 8c92646b authored by Phil Hughes's avatar Phil Hughes

Filters backlog by search query

parent 0fa57599
...@@ -3,11 +3,19 @@ ...@@ -3,11 +3,19 @@
props: { props: {
board: Object board: Object
}, },
data: () => { data: function () {
return { return {
filters: BoardsStore.state.filters filters: BoardsStore.state.filters
}; };
}, },
watch: {
'query': function () {
if (this.board.canSearch()) {
const data = _.extend(this.filters, { search: this.query });
this.board.getIssues(data);
}
}
},
methods: { methods: {
clearSearch: function () { clearSearch: function () {
this.query = ''; this.query = '';
......
...@@ -5,11 +5,10 @@ ...@@ -5,11 +5,10 @@
boardId: [Number, String], boardId: [Number, String],
filters: Object, filters: Object,
issues: Array, issues: Array,
query: String,
loading: Boolean, loading: Boolean,
issueLinkBase: String issueLinkBase: String
}, },
data: () => { data: function () {
return { return {
scrollOffset: 20, scrollOffset: 20,
loadMore: false loadMore: false
...@@ -26,33 +25,8 @@ ...@@ -26,33 +25,8 @@
return this.$els.list.scrollTop + this.listHeight(); return this.$els.list.scrollTop + this.listHeight();
}, },
loadFromLastId: function () { loadFromLastId: function () {
this.loadMore = true;
setTimeout(() => {
this.loadMore = false;
}, 2000);
},
customFilter: function (issue) {
let returnIssue = issue;
if (this.filters.author && this.filters.author.id) {
if (!issue.author || issue.author.id !== this.filters.author.id) {
returnIssue = null;
}
}
if (this.filters.assignee && this.filters.assignee.id) {
if (!issue.assignee || issue.assignee.id !== this.filters.assignee.id) {
returnIssue = null;
}
}
if (this.filters.milestone && this.filters.milestone.id) { },
if (!issue.milestone || issue.milestone.id !== this.filters.milestone.id) {
returnIssue = null;
}
}
return returnIssue;
}
}, },
ready: function () { ready: function () {
this.sortable = Sortable.create(this.$els.list, { this.sortable = Sortable.create(this.$els.list, {
......
...@@ -11,16 +11,7 @@ class List { ...@@ -11,16 +11,7 @@ class List {
} }
if (this.type !== 'blank') { if (this.type !== 'blank') {
this.loading = true; this.getIssues();
gl.boardService.getIssuesForList(this.id)
.then((resp) => {
const data = resp.json();
this.loading = false;
data.forEach((issue) => {
this.issues.push(new Issue(issue));
});
});
} }
} }
...@@ -49,6 +40,25 @@ class List { ...@@ -49,6 +40,25 @@ class List {
return this.type === 'backlog'; return this.type === 'backlog';
} }
getIssues (filter = {}) {
this.loading = true;
gl.boardService.getIssuesForList(this.id, filter)
.then((resp) => {
const data = resp.json();
this.loading = false;
this.issues = [];
this.createIssues(data);
});
}
createIssues (data) {
data.forEach((issue) => {
this.issues.push(new Issue(issue));
});
}
addIssue (issue, listFrom) { addIssue (issue, listFrom) {
this.issues.push(issue); this.issues.push(issue);
......
...@@ -43,10 +43,11 @@ class BoardService { ...@@ -43,10 +43,11 @@ class BoardService {
return this.list.delete({ id }); return this.list.delete({ id });
} }
getIssuesForList (id) { getIssuesForList (id, filter = {}) {
const data = _.extend({ id }, filter)
this.setCSRF(); this.setCSRF();
return this.issues.get({ id }); return this.issues.get(data);
} }
moveIssue (id, from, to) { moveIssue (id, from, to) {
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
":board-id" => "board.id", ":board-id" => "board.id",
":issues" => "board.issues", ":issues" => "board.issues",
":disabled" => "#{current_user.nil?}", ":disabled" => "#{current_user.nil?}",
":query" => "query",
":filters" => "filters", ":filters" => "filters",
":loading" => "board.loading", ":loading" => "board.loading",
":issue-link-base" => "'#{namespace_project_issues_path(@project.namespace, @project)}'" } ":issue-link-base" => "'#{namespace_project_issues_path(@project.namespace, @project)}'" }
......
%li.card{ ":data-issue" => "issue.id", "v-for" => "issue in issues | filterBy query in 'title' | filterBy customFilter", "track-by" => "id" } %li.card{ ":data-issue" => "issue.id", "v-for" => "issue in issues | orderBy 'id' -1", "track-by" => "id" }
%h4.card-title %h4.card-title
%a{ ":href" => "issueLinkBase + '/' + issue.id", ":title" => "issue.title" } %a{ ":href" => "issueLinkBase + '/' + issue.id", ":title" => "issue.title" }
{{ issue.title }} {{ issue.title }}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment