Action list filtering revamp

This commit is contained in:
2018-10-31 15:38:02 -03:00
parent fe0a3d8edf
commit c83aa69f0b
3 changed files with 83 additions and 40 deletions
+25 -6
View File
@@ -3,10 +3,12 @@ import Ember from 'ember'
export default Ember.Controller.extend
session: Ember.inject.service('session')
filters: {}
filters: {filter_calls: 0} # will be overwritten in route
scope_project: null
scope_scenario: null
scope_organization: null
projects: ( -> @store.findAll('panda/project')).property()
sorted_projects: Ember.computed 'projects.@each.name', -> @get('projects').sortBy('name')
show_completed_at: Ember.computed 'filters.state_in.[]', 'filters.completed_at_gteq', 'filters.completed_at_lteq', 'filters.s', ->
return true if @get('filters.completed_at_lteq') or @get('filters.completed_at_gteq')
return true if /^completed_at/.test @get('filters.s')
@@ -27,12 +29,29 @@ export default Ember.Controller.extend
base_url = @store.adapterFor(model_name).buildURL(model_name)
filter_addition = Ember.$.param q: @get('filter_query'), include_pointing: true
"#{base_url}/export_technical.csv?#{filter_addition}"
apply_filters: ->
@incrementProperty 'filters.filter_calls'
@get('model.project_instance_actions')?.reload()
false
actions:
refresh_list: -> @apply_filters()
apply_filters: ->
@incrementProperty 'filters.filter_calls'
current_scope_project_id = @get('scope_project.id')
if project_ids = @get('filters.project_id_in')
if project_ids.length is 1
if current_scope_project_id isnt project_ids[0] # only reload if changed
project = @store.peekRecord('panda/project', project_ids[0]) # projects all pre-loaded
@set 'filters.workflow_action_definition_title_cont', '' if @get('filters.workflow_action_definition_title_cont') # this field disappears since actual action matching is assumed
project.reload().then =>
@set 'scope_project', project
else if @get('scope_project')
@set 'scope_project', null
@set 'filters.project_instance_project_scenario_id_in', []
@set 'filters.project_instance_group_workflow_group_id_in', []
@set 'filters.workflow_action_definition_identifier_in', []
else if @get('scope_project')
@set 'scope_project', null
@set 'filters.project_instance_project_scenario_id_in', []
@set 'filters.project_instance_group_workflow_group_id_in', []
@set 'filters.workflow_action_definition_identifier_in', []
@get('model.project_instance_actions')?.reload()
false
edit_project_instance_action: (project_instance_action) ->
@modal 'project/edit-instance-action', model: project_instance_action
+42 -11
View File
@@ -5,10 +5,18 @@ import Ember from 'ember';
export default Ember.Controller.extend({
session: Ember.inject.service('session'),
filters: {},
filters: {
filter_calls: 0
},
scope_project: null,
scope_scenario: null,
scope_organization: null,
projects: (function() {
return this.store.findAll('panda/project');
}).property(),
sorted_projects: Ember.computed('projects.@each.name', function() {
return this.get('projects').sortBy('name');
}),
show_completed_at: Ember.computed('filters.state_in.[]', 'filters.completed_at_gteq', 'filters.completed_at_lteq', 'filters.s', function() {
if (this.get('filters.completed_at_lteq') || this.get('filters.completed_at_gteq')) {
return true;
@@ -51,17 +59,40 @@ export default Ember.Controller.extend({
});
return base_url + "/export_technical.csv?" + filter_addition;
}),
apply_filters: function() {
var ref;
this.incrementProperty('filters.filter_calls');
if ((ref = this.get('model.project_instance_actions')) != null) {
ref.reload();
}
return false;
},
actions: {
refresh_list: function() {
return this.apply_filters();
apply_filters: function() {
var current_scope_project_id, project, project_ids, ref;
this.incrementProperty('filters.filter_calls');
current_scope_project_id = this.get('scope_project.id');
if (project_ids = this.get('filters.project_id_in')) {
if (project_ids.length === 1) {
if (current_scope_project_id !== project_ids[0]) {
project = this.store.peekRecord('panda/project', project_ids[0]);
if (this.get('filters.workflow_action_definition_title_cont')) {
this.set('filters.workflow_action_definition_title_cont', '');
}
project.reload().then((function(_this) {
return function() {
return _this.set('scope_project', project);
};
})(this));
}
} else if (this.get('scope_project')) {
this.set('scope_project', null);
this.set('filters.project_instance_project_scenario_id_in', []);
this.set('filters.project_instance_group_workflow_group_id_in', []);
this.set('filters.workflow_action_definition_identifier_in', []);
}
} else if (this.get('scope_project')) {
this.set('scope_project', null);
this.set('filters.project_instance_project_scenario_id_in', []);
this.set('filters.project_instance_group_workflow_group_id_in', []);
this.set('filters.workflow_action_definition_identifier_in', []);
}
if ((ref = this.get('model.project_instance_actions')) != null) {
ref.reload();
}
return false;
},
edit_project_instance_action: function(project_instance_action) {
return this.modal('project/edit-instance-action', {