76 lines
2.9 KiB
JavaScript
76 lines
2.9 KiB
JavaScript
// Generated by CoffeeScript 2.7.0
|
|
var get_active_workflow_groups, get_active_workflow_groups_using_intersection, get_active_workflow_groups_using_union,
|
|
indexOf = [].indexOf;
|
|
|
|
import Ember from 'ember';
|
|
|
|
// get_active_workflow_groups(workflow_groups, project_scenarios, set_operation = 'union or intersection')
|
|
// this util takes as first arguments the workflow_groups scope
|
|
// and tries to apply filtering based on the given project_scenarios and set_operation
|
|
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);
|
|
}
|
|
});
|
|
});
|
|
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;
|
|
});
|
|
});
|
|
return workflow_groups.filter(function(r) {
|
|
var ref;
|
|
return ref = r.get('id'), indexOf.call(selected_project_scenario_workflow_group_ids, ref) >= 0;
|
|
});
|
|
};
|
|
|
|
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 get_active_workflow_groups_using_intersection(workflow_groups, project_scenarios);
|
|
} else {
|
|
return get_active_workflow_groups_using_union(project_scenarios);
|
|
}
|
|
} else {
|
|
// no filtering can be allplied, return all
|
|
return workflow_groups;
|
|
}
|
|
};
|
|
|
|
export {
|
|
get_active_workflow_groups_using_union
|
|
};
|
|
|
|
export {
|
|
get_active_workflow_groups_using_intersection
|
|
};
|
|
|
|
export {
|
|
get_active_workflow_groups
|
|
};
|
|
|
|
export default get_active_workflow_groups;
|