Skip to content

Commit f82a95e

Browse files
committed
Merge branch 'master' of github.com:huboard/huboard-web
2 parents 7e10b11 + 11a620e commit f82a95e

8 files changed

Lines changed: 73 additions & 16 deletions

File tree

ember-app/app/controllers/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ var IndexController = Ember.Controller.extend({
1010
{"qps.repoParams": "repo"},
1111
{"qps.assigneeParams": "assignee"},
1212
{"qps.milestoneParams": "milestone"},
13-
{"qps.labelParams": "label"}
13+
{"qps.labelParams": "label"},
14+
{"qps.cardParams": "card"}
1415
],
1516
applyUrlFilters: function(){
1617
var self = this;

ember-app/app/controllers/milestones.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ var MilestonesController = Ember.Controller.extend({
1212
{"qps.repoParams": "repo"},
1313
{"qps.assigneeParams": "assignee"},
1414
{"qps.milestoneParams": "milestone"},
15-
{"qps.labelParams": "label"}
15+
{"qps.labelParams": "label"},
16+
{"qps.cardParams": "card"}
1617
],
1718
applyUrlFilters: function(){
1819
var self = this;

ember-app/app/mixins/issue-filters.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ var IssueFiltersMixin = Ember.Mixin.create({
2929

3030
this.mergeUserAndMemberGroups(filter_groups, strategy);
3131

32-
_.each(filter_groups[strategy], (function(value){
33-
filters_active.push(value.length);
34-
results.push(strategy_function(value, item));
32+
_.each(filter_groups[strategy], (function(group){
33+
if(group.length){
34+
filters_active.push(group.length);
35+
results.push(strategy_function(group, item));
36+
}
3537
}));
36-
filters_active = filters_active.filter(function(count){ return count > 0;});
3738

3839
return this.compareFilterResults(results, filters_active);
3940
},

ember-app/app/services/filter-groups.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ var FilterGroups = Ember.Service.extend({
77
user: Ember.inject.service("filter_groups/user"),
88
member: Ember.inject.service("filter_groups/member"),
99
search: Ember.inject.service("filter_groups/search"),
10+
card: Ember.inject.service("filter_groups/card"),
1011

11-
groups: ["board", "milestone", "label", "user", "member", "search"],
12+
groups: ["board", "milestone", "label", "user", "member", "search", "card"],
1213
setGroups: function(model){
1314
var self = this;
1415
this.get("groups").forEach(function(group){
@@ -26,8 +27,9 @@ var FilterGroups = Ember.Service.extend({
2627
.concat(this.get("board.filters"))
2728
.concat(this.get("label.filters"))
2829
.concat(this.get("member.filters"))
29-
.concat(this.get("search.filters"));
30-
}.property("{board,milestone,label,user,member,search}.filters.@each.mode"),
30+
.concat(this.get("search.filters"))
31+
.concat(this.get("card.filters"));
32+
}.property("{board,milestone,label,user,member,search,card}.filters.@each.mode"),
3133

3234
active: function(){
3335
return this.get("allFilters").any(function(f){
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import Ember from "ember";
2+
3+
var CardFilters = Ember.Service.extend({
4+
filters: [],
5+
strategy: "grouping",
6+
7+
create: function(){
8+
this.set("filters", [
9+
Ember.Object.create({
10+
name: "Issues only",
11+
queryParam: "card",
12+
mode: 0,
13+
condition: function(i){
14+
return !i.pull_request;
15+
}
16+
}),
17+
Ember.Object.create({
18+
name: "Pull requests only",
19+
queryParam: "card",
20+
mode: 0,
21+
condition: function(i){
22+
return i.pull_request;
23+
}
24+
})
25+
]);
26+
27+
return this.get("filters");
28+
}
29+
});
30+
31+
export default CardFilters;

ember-app/app/services/filters.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,15 @@ var FiltersService = Ember.Service.extend({
136136
});
137137
}
138138
}.observes("filterGroups.milestone.filters.@each.mode"),
139+
forceOnlyOneActiveCard: function(){
140+
var filters = this.get("cardFilters");
141+
if (filters && filters.length){
142+
var active = filters.filter(function(f){
143+
return f.mode === 1 || f.mode === 2;
144+
});
145+
if(active.length > 1){ filters.setEach("mode", 0); }
146+
}
147+
}.observes("filterGroups.card.filters.@each.mode"),
139148
groupActive: function(filters){
140149
if (!filters || !filters.length){ return false;}
141150
return filters.any(function(f){

ember-app/app/services/query-params.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,40 @@ var queryParamsService = Ember.Service.extend({
55

66
clear: function(){
77
var self = this;
8-
var params = ["repo", "assignee", "milestone", "label"];
9-
params.forEach(function(param){
8+
this.get("filterNames").forEach(function(param){
109
return self.set(`${param}Params`, []);
1110
});
1211
this.set("filterParamsBuffer", {});
1312
this.set("searchParams", "");
1413
this.set("searchParamsBuffer", "");
1514
},
15+
clearOnEmpty: function(){
16+
if(!this.get("filters.hideFilters.length")){
17+
this.clear();
18+
};
19+
}.observes("filters.hideFilters.[]"),
1620

1721
////Query Params for Filters
1822
repoParams: [],
1923
assigneeParams: [],
2024
milestoneParams: [],
2125
labelParams: [],
22-
filterNames: ["repo", "assignee", "milestone", "label"],
26+
cardParams: [],
27+
filterNames: ["repo", "assignee", "milestone", "label", "card"],
2328
allFilterParams: function(){
2429
var self = this;
2530
var filters = this.get("filterNames").map(function(param){
2631
return self.get(`${param}Params`);
2732
});
2833
return _.flatten(filters);
29-
}.property("{repo,assignee,milestone,label}Params"),
34+
}.property("{repo,assignee,milestone,label,card}Params"),
3035

31-
//Push board, label and milestone filters to the URL
36+
//Push board, label, card and milestone filters to the URL
3237
updateFilterParams: function(){
3338
if(!this.get("filters.filterGroups.created")){return;}
3439
var self = this;
3540
var filters_object = this.get("filters.allFiltersObject");
36-
["board", "label", "milestone"].forEach(function(param){
41+
["board", "label", "milestone", "card"].forEach(function(param){
3742
var hidden_filters = filters_object[param].filter(function(f){
3843
return f.mode === 2;
3944
}).map(function(f){return f.name; });
@@ -74,7 +79,8 @@ var queryParamsService = Ember.Service.extend({
7479
repo: this.get("repoParams"),
7580
assignee: this.get("assigneeParams"),
7681
milestone: this.get("milestoneParams"),
77-
label: this.get("labelParams")
82+
label: this.get("labelParams"),
83+
card: this.get("cardParams")
7884
});
7985
}
8086
}.observes("allFilterParams.[]"),
@@ -86,6 +92,7 @@ var queryParamsService = Ember.Service.extend({
8692
this.set("assigneeParams", buffer.assignee);
8793
this.set("milestoneParams", buffer.milestone);
8894
this.set("labelParams", buffer.label);
95+
this.set("cardParams", buffer.card);
8996
this.set("filterParamsBuffer", {});
9097
}
9198
},

ember-app/app/templates/filters.hbs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
{{hb-filter name=filter.name mode=filter.mode color=filter.color tagType="colored" queryParam="repo"}}
55
{{/each}}
66

7+
<h5>Cards</h5>
8+
{{#each filters.cardFilters as |filter|}}
9+
{{hb-filter name=filter.name mode=filter.mode color=filter.color}}
10+
{{/each}}
11+
712
<h5>Assignment</h5>
813
{{#each filters.userFilters as |filter|}}
914
{{hb-filter name=filter.name mode=filter.mode color=filter.color queryParam="member"}}

0 commit comments

Comments
 (0)