From 3bd7c06e60c820f1c03a2422f30d51db9f440822 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Tue, 20 Nov 2018 12:14:08 -0300 Subject: [PATCH] Filtering and preloading --- addon/controllers/action-list.coffee | 3 ++- addon/controllers/action-list.js | 3 --- .../panda/workflow-action-definition.js | 4 +--- addon/routes/action-list.coffee | 14 ++++++++++---- addon/routes/action-list.js | 19 ++++++++++++++++--- app/templates/action-list.emblem | 2 +- 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/addon/controllers/action-list.coffee b/addon/controllers/action-list.coffee index ee00089..853e8c4 100644 --- a/addon/controllers/action-list.coffee +++ b/addon/controllers/action-list.coffee @@ -3,7 +3,8 @@ import Ember from 'ember' export default Ember.Controller.extend session: Ember.inject.service('session') - filters: {filter_calls: 0} # will be overwritten in route + #filters: {filter_calls: 0} # will be overwritten in route + #filters: Ember.computed.alias 'model.project_instance_actions.filters' scope_project: null scope_scenario: null scope_organization: null diff --git a/addon/controllers/action-list.js b/addon/controllers/action-list.js index c7ec929..b9805d2 100644 --- a/addon/controllers/action-list.js +++ b/addon/controllers/action-list.js @@ -5,9 +5,6 @@ import Ember from 'ember'; export default Ember.Controller.extend({ session: Ember.inject.service('session'), - filters: { - filter_calls: 0 - }, scope_project: null, scope_scenario: null, scope_organization: null, diff --git a/addon/models/panda/workflow-action-definition.js b/addon/models/panda/workflow-action-definition.js index c227b96..64d187f 100644 --- a/addon/models/panda/workflow-action-definition.js +++ b/addon/models/panda/workflow-action-definition.js @@ -61,9 +61,7 @@ Model = { dependent_workflow_action_offsets: DS.hasMany('panda/workflow-action-offset', { inverse: 'base_workflow_action_definition' }), - project_scenarios: DS.hasMany('panda/project-scenario', { - inverse: null - }), + project_scenarios: DS.hasMany('panda/project-scenario'), project_instance_actions: DS.hasMany('panda/project-instance-action', { inverse: 'workflow_action_definition' }), diff --git a/addon/routes/action-list.coffee b/addon/routes/action-list.coffee index 0ca8d21..6518c70 100644 --- a/addon/routes/action-list.coffee +++ b/addon/routes/action-list.coffee @@ -1,6 +1,7 @@ import Ember from 'ember' import PagedRemoteArray from 'ember-cli-dunlop/utils/paged-remote-array' -export filters = Ember.Object.create +{get} = Ember +export default_filters = Ember.Object.create filter_calls: 0 workflow_action_definition_identifier_in: [] project_instance_group_workflow_group_id: '' @@ -26,11 +27,16 @@ export default Ember.Route.extend perPage: {refreshModel: true} organization_id: {refreshModel: true} modelName: 'panda/project-instance-action' - setupController: (controller) -> - controller.set 'filters', filters - @_super arguments... + setupController: (controller, model) -> + controller.set('filters', model.project_instance_actions.get('filters')) + @_super(arguments...) model: (params) -> + scope_key = 'panda/action-list' + if user_default = @store.peekAll('dunlop/user-filter').find((r) -> r.get('scope_key') is scope_key and r.get('is_default')) + filters = Ember.Object.create(user_default.get('filters')) + else + filters = default_filters #@store.findAll('epots/migration-window-planning') #includes = [ # 'workflow_action_definition.~workflow_action_connections' diff --git a/addon/routes/action-list.js b/addon/routes/action-list.js index 929de8e..6e8ad99 100644 --- a/addon/routes/action-list.js +++ b/addon/routes/action-list.js @@ -1,9 +1,13 @@ // Generated by CoffeeScript 1.12.5 +var get; + import Ember from 'ember'; import PagedRemoteArray from 'ember-cli-dunlop/utils/paged-remote-array'; -export var filters = Ember.Object.create({ +get = Ember.get; + +export var default_filters = Ember.Object.create({ filter_calls: 0, workflow_action_definition_identifier_in: [], project_instance_group_workflow_group_id: '', @@ -41,11 +45,20 @@ export default Ember.Route.extend({ } }, modelName: 'panda/project-instance-action', - setupController: function(controller) { - controller.set('filters', filters); + setupController: function(controller, model) { + controller.set('filters', model.project_instance_actions.get('filters')); return this._super.apply(this, arguments); }, model: function(params) { + var filters, scope_key, user_default; + scope_key = 'panda/action-list'; + if (user_default = this.store.peekAll('dunlop/user-filter').find(function(r) { + return r.get('scope_key') === scope_key && r.get('is_default'); + })) { + filters = Ember.Object.create(user_default.get('filters')); + } else { + filters = default_filters; + } if (params.state) { filters.set('state_in', params.state.split(',')); } diff --git a/app/templates/action-list.emblem b/app/templates/action-list.emblem index 26b29dc..b6d4691 100644 --- a/app/templates/action-list.emblem +++ b/app/templates/action-list.emblem @@ -35,7 +35,7 @@ table.ui.attached.stiped.sortable.table = sortable-table-header filters=filters key='inquiry_at' model=model.project_instance_actions defaultDirection='desc' = t 'attributes.project_instance_action.inquiry_at' th= t 'attributes.project_instance_action.value' - table-filters content=model.project_instance_actions filters=filters apply_filters=(action 'apply_filters') as |filter| + table-filters content=model.project_instance_actions apply_filters=(action 'apply_filters') as |filter| = filter.dropdown-select-multiple key='workflow_action_definition_organization_id_in' options=model.organizations labelPath='name' = filter.dropdown-select-multiple key='project_id_in' options=sorted_projects labelPath='name' if (and scope_project scope_project.isLoaded)