issue_filter.header.creation_date=Created
issue_filter.header.resolution=Resolution
issue_filter.header.update_date=Updated
+issue_filter.criteria.actionPlans=Action Plans
issue_filter.criteria.assignee=Assignee
issue_filter.criteria.created=Created
issue_filter.criteria.created_at=Created at
favorites: <%= render :partial => 'issues/filter_favourites' -%>,
phrases: {
+ 'actionPlans': '<%= escape_javascript message('issue_filter.criteria.actionPlans') -%>',
'any': '<%= escape_javascript message('any') -%>',
'anytime': '<%= escape_javascript message('anytime') -%>',
'all': '<%= escape_javascript message('all') -%>',
NavigatorApp.addInitializer(function () {
- this.filters.add([
- new BaseFilters.Filter({
+ var projectFilter = new BaseFilters.Filter({
name: window.SS.phrases.project,
property: 'componentRoots',
type: AjaxSelectFilters.ProjectFilterView,
enabled: true,
optional: false
- }),
+ });
+ this.filters.add(projectFilter);
+ this.filters.add([
new BaseFilters.Filter({
name: window.SS.phrases.severity,
property: 'severities',
}),
new BaseFilters.Filter({
- name: window.SS.phrases.resolution,
- property: 'resolutions',
- type: ResolutionFilterView,
+ name: window.SS.phrases.actionPlans,
+ property: 'actionPlans',
+ type: ActionPlanFilterView,
enabled: false,
optional: true,
- choices: {
- 'UNRESOLVED': window.SS.phrases.resolutions.UNRESOLVED,
- 'FALSE-POSITIVE': window.SS.phrases.resolutions['FALSE-POSITIVE'],
- 'FIXED': window.SS.phrases.resolutions.FIXED,
- 'REMOVED': window.SS.phrases.resolutions.REMOVED
- }
- }),
-
- new BaseFilters.Filter({
- name: window.SS.phrases.reporter,
- property: 'reporters',
- type: AjaxSelectFilters.ReporterFilterView,
- enabled: false,
- optional: true
+ projectFilter: projectFilter
}),
new BaseFilters.Filter({
}),
new BaseFilters.Filter({
- property: 'actionPlans',
- type: ContextFilterView,
- enabled: true,
- optional: false
- })
+ name: window.SS.phrases.reporter,
+ property: 'reporters',
+ type: AjaxSelectFilters.ReporterFilterView,
+ enabled: false,
+ optional: true
+ }),
+
+ new BaseFilters.Filter({
+ name: window.SS.phrases.resolution,
+ property: 'resolutions',
+ type: ResolutionFilterView,
+ enabled: false,
+ optional: true,
+ choices: {
+ 'UNRESOLVED': window.SS.phrases.resolutions.UNRESOLVED,
+ 'FALSE-POSITIVE': window.SS.phrases.resolutions['FALSE-POSITIVE'],
+ 'FIXED': window.SS.phrases.resolutions.FIXED,
+ 'REMOVED': window.SS.phrases.resolutions.REMOVED
+ }
+ }),
+
]);
return SelectFilters.SelectFilterView.extend({
+ initialize: function() {
+ SelectFilters.SelectFilterView.prototype.initialize.apply(this, arguments);
+ this.projectFilter = this.model.get('projectFilter');
+ this.listenTo(this.projectFilter, 'change:value', this.onChangeProjectFilter);
+ this.onChangeProjectFilter();
+ },
+
+
+ onChangeProjectFilter: function() {
+ var projects = this.projectFilter.get('value');
+ if (_.isArray(projects) && projects.length === 1) {
+ return this.fetchActionPlans(projects[0]);
+ } else {
+ return this.makeInactive();
+ }
+ },
+
+
+ showDetails: function() {
+ if (!this.$el.is('.navigator-filter-inactive')) {
+ SelectFilters.SelectFilterView.prototype.showDetails.apply(this, arguments);
+ }
+ },
+
+
+ makeActive: function() {
+ this.$el.removeClass('navigator-filter-inactive');
+ },
+
+
+ makeInactive: function() {
+ this.selection.reset([]);
+ this.choices.reset([]);
+ this.detailsView.updateLists();
+ this.detailsView.updateValue();
+ this.$el.addClass('navigator-filter-inactive');
+ },
+
+
+ fetchActionPlans: function(project) {
+ var that = this;
+ return jQuery.ajax({
+ url: baseUrl + '/api/action_plans/search',
+ type: 'GET',
+ data: { project: project }
+ }).done(function(r) {
+ var nonClosedActionPlans =
+ _.sortBy(_.reject(r.actionPlans, function(plan) {
+ return plan.status === 'CLOSED';
+ }), 'name');
+
+ that.selection.reset([]);
+ that.choices.reset(nonClosedActionPlans.map(function(plan) {
+ return {
+ id: plan.key,
+ text: plan.name
+ }
+ }));
+
+ var value = that.model.get('value');
+ if (that.choices && that.selection && value && value.length > 0) {
+ value.forEach(function(id) {
+ var model = that.choices.findWhere({ id: id });
+ that.selection.add(model);
+ that.choices.remove(model);
+ });
+ }
+ that.detailsView.updateValue();
+ that.render();
+
+ that.makeActive();
+ });
+ },
+
+
+ restore: function(value) {
+ if (_.isString(value)) {
+ value = value.split(',');
+ }
+
+ if (this.choices && this.selection && value.length > 0) {
+ this.model.set({ value: value, enabled: true });
+ this.onChangeProjectFilter();
+ } else {
+ this.clear();
+ }
+ }
+
});
});
this.model.set({
value: value,
enabled: true
- }, {
- silent: true
});
if (_.isArray(param.text) && param.text.length === value.length) {
this.model.set({
value: value,
enabled: true
- }, {
- silent: true
});
this.renderBase();
padding-right: 0;
}
.navigator-filter-inline,
-.navigator-filter-read-only {
+.navigator-filter-read-only,
+.navigator-filter-inactive {
cursor: default;
}
.navigator-filter-inline:hover,
.navigator-filter-read-only:hover,
+.navigator-filter-inactive:hover,
.navigator-filter-inline.active,
-.navigator-filter-read-only.active {
+.navigator-filter-read-only.active,
+.navigator-filter-inactive.active {
border-color: transparent;
background: transparent;
}
.navigator-filter-inline .navigator-filter-label:after {
content: "";
}
+.navigator-filter-inactive {
+ opacity: 0.5;
+}
.navigator-filter-label {
display: inline-block;
vertical-align: middle;
padding-right: 0;
}
.navigator-filter-inline,
-.navigator-filter-read-only {
+.navigator-filter-read-only,
+.navigator-filter-inactive {
cursor: default;
}
.navigator-filter-inline:hover,
.navigator-filter-read-only:hover,
+.navigator-filter-inactive:hover,
.navigator-filter-inline.active,
-.navigator-filter-read-only.active {
+.navigator-filter-read-only.active,
+.navigator-filter-inactive.active {
border-color: transparent;
background: transparent;
}
.navigator-filter-inline .navigator-filter-label:after {
content: "";
}
+.navigator-filter-inactive {
+ opacity: 0.5;
+}
.navigator-filter-label {
display: inline-block;
vertical-align: middle;
}
.navigator-filter-inline,
-.navigator-filter-read-only {
+.navigator-filter-read-only,
+.navigator-filter-inactive {
cursor: default;
&:hover,
content: "";
}
+.navigator-filter-inactive {
+ opacity: 0.5;
+}
+
.navigator-filter-label {
display: inline-block;
vertical-align: middle;