diff --git a/.changes/unreleased/Docs-20230308-093736.yaml b/.changes/unreleased/Docs-20230308-093736.yaml new file mode 100644 index 000000000..660158d08 --- /dev/null +++ b/.changes/unreleased/Docs-20230308-093736.yaml @@ -0,0 +1,6 @@ +kind: Docs +body: Add selection by group to DAG +time: 2023-03-08T09:37:36.78968-06:00 +custom: + Author: emmyoop + Issue: "380" diff --git a/src/app/services/selector_matcher.js b/src/app/services/selector_matcher.js index 5370b0af2..7fb482ca9 100644 --- a/src/app/services/selector_matcher.js +++ b/src/app/services/selector_matcher.js @@ -9,6 +9,7 @@ var SELECTOR_TYPE = { SOURCE: 'source', EXPOSURE: 'exposure', METRIC: 'metric', + GROUP: 'group', PATH: 'path', FILE: 'file', PACKAGE: 'package', @@ -24,6 +25,7 @@ NODE_MATCHERS[SELECTOR_TYPE.TAG] = getNodesByTag; NODE_MATCHERS[SELECTOR_TYPE.SOURCE] = getNodesBySource; NODE_MATCHERS[SELECTOR_TYPE.EXPOSURE] = getNodesByExposure; NODE_MATCHERS[SELECTOR_TYPE.METRIC] = getNodesByMetric; +NODE_MATCHERS[SELECTOR_TYPE.GROUP] = getNodesByGroup; NODE_MATCHERS[SELECTOR_TYPE.PATH] = getNodesByPath; NODE_MATCHERS[SELECTOR_TYPE.FILE] = getNodesByFile; NODE_MATCHERS[SELECTOR_TYPE.PACKAGE] = getNodesByPackage; @@ -300,6 +302,19 @@ function getNodesByMetric(elements, metric) { return nodes; } +function getNodesByGroup(elements, group) { + var nodes = []; + _.each(elements, function(node_obj) { + var node = node_obj.data; + + if (node.group == group) { + nodes.push(node); + } + }); + return nodes; + +} + function getNodesFromSpec(dag, pristine_nodes, maxHops, selector) { const matcher = NODE_MATCHERS[selector.selector_type]; if (!matcher) {