Files
ember-panda/addon/mixins/project/active-workflow-groups.js
2023-11-28 14:30:02 -05:00

64 lines
2.9 KiB
JavaScript

// Generated by CoffeeScript 2.7.0
var indexOf = [].indexOf;
import Ember from 'ember';
export default Ember.Mixin.create({
get_active_workflow_groups: function(workflow_groups, project_scenarios, set_operation = 'union') {
project_scenarios = Ember.makeArray(project_scenarios);
workflow_groups = workflow_groups.toArray();
// initialize unused working workflow-groups
if (project_scenarios.length) {
if (set_operation === 'intersection') {
return this.get_active_workflow_groups_using_intersection(workflow_groups, project_scenarios);
} else {
return this.get_active_workflow_groups_using_union(project_scenarios);
}
} else {
return workflow_groups;
}
},
//@set 'active_workflow_groups', workflow_groups || []
//@set 'active_workflow_group_ids', @get('active_workflow_groups').mapBy('id').toArray()
get_active_workflow_groups_using_union: function(project_scenarios) {
var selected_project_scenario_workflow_group_ids, working_workflow_groups;
selected_project_scenario_workflow_group_ids = [];
working_workflow_groups = [];
project_scenarios.forEach(function(selected_project_scenario) {
return selected_project_scenario.get('workflow_groups').forEach(function(workflow_group) {
if (selected_project_scenario_workflow_group_ids.indexOf(workflow_group.get('id')) < 0) {
selected_project_scenario_workflow_group_ids.push(workflow_group.get('id'));
return working_workflow_groups.push(workflow_group);
}
});
});
//working_workflow_groups = working_workflow_groups
//@set 'active_workflow_groups', working_workflow_groups
//@set 'active_workflow_group_ids', selected_project_scenario_workflow_group_ids
return working_workflow_groups;
},
get_active_workflow_groups_using_intersection: function(workflow_groups, project_scenarios) {
var first_run, selected_project_scenario_workflow_group_ids;
selected_project_scenario_workflow_group_ids = [];
first_run = true;
project_scenarios.forEach(function(selected_project_scenario) {
var current_workflow_group_ids;
current_workflow_group_ids = selected_project_scenario.get('workflow_groups').mapBy('id').toArray();
if (first_run) {
selected_project_scenario_workflow_group_ids = current_workflow_group_ids;
first_run = false;
return;
}
return selected_project_scenario_workflow_group_ids = selected_project_scenario_workflow_group_ids.filter(function(id) {
return indexOf.call(current_workflow_group_ids, id) >= 0;
});
});
//@set 'active_workflow_group_ids', selected_project_scenario_workflow_group_ids
//@set 'active_workflow_groups', workflow_groups.filter((r) -> r.get('id') in selected_project_scenario_workflow_group_ids)
return workflow_groups.filter(function(r) {
var ref;
return ref = r.get('id'), indexOf.call(selected_project_scenario_workflow_group_ids, ref) >= 0;
});
}
});