@barchart/portfolio-api-common 1.0.147 → 1.0.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -34,9 +34,10 @@ module.exports = (() => {
|
|
|
34
34
|
* @param {Array.<Object>} portfolios
|
|
35
35
|
* @param {Array.<Object>} positions
|
|
36
36
|
* @param {Array.<Object>} summaries
|
|
37
|
+
* @param {Object=} exclusionDependencies
|
|
37
38
|
*/
|
|
38
39
|
class PositionContainer {
|
|
39
|
-
constructor(definitions, portfolios, positions, summaries) {
|
|
40
|
+
constructor(definitions, portfolios, positions, summaries, exclusionDependencies) {
|
|
40
41
|
assert.argumentIsArray(definitions, 'definitions', PositionTreeDefinition, 'PositionTreeDefinition');
|
|
41
42
|
assert.argumentIsArray(portfolios, 'portfolios');
|
|
42
43
|
assert.argumentIsArray(positions, 'positions');
|
|
@@ -242,6 +243,42 @@ module.exports = (() => {
|
|
|
242
243
|
parentGroup.setExcludedItems(array.unique(excludedItems));
|
|
243
244
|
}
|
|
244
245
|
}, false);
|
|
246
|
+
|
|
247
|
+
const treeName = treeDefinition.name;
|
|
248
|
+
|
|
249
|
+
if (exclusionDependencies && exclusionDependencies.hasOwnProperty(treeName)) {
|
|
250
|
+
let dependantNames = exclusionDependencies[treeName];
|
|
251
|
+
|
|
252
|
+
if (is.string(dependantNames)) {
|
|
253
|
+
dependantNames = [ dependantNames ];
|
|
254
|
+
} else if (!is.array(dependantNames)) {
|
|
255
|
+
dependantNames = [ ];
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
const dependantTrees = dependantNames.reduce((trees, name) => {
|
|
259
|
+
if ( this._trees.hasOwnProperty(name)) {
|
|
260
|
+
trees.push(this._trees[name]);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
return trees;
|
|
264
|
+
}, [ ]);
|
|
265
|
+
|
|
266
|
+
if (dependantTrees.length > 0) {
|
|
267
|
+
let excludedItems = [ ];
|
|
268
|
+
|
|
269
|
+
groupTree.walk((childGroup) => {
|
|
270
|
+
if (childGroup.excluded) {
|
|
271
|
+
excludedItems = excludedItems.concat(childGroup.items);
|
|
272
|
+
}
|
|
273
|
+
}, false, false);
|
|
274
|
+
|
|
275
|
+
dependantTrees.forEach((dependantTrees) => {
|
|
276
|
+
dependantTrees.walk((childGroup) => {
|
|
277
|
+
childGroup.setExcludedItems(excludedItems);
|
|
278
|
+
}, false, false);
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
245
282
|
}));
|
|
246
283
|
};
|
|
247
284
|
|
package/package.json
CHANGED
package/test/SpecRunner.js
CHANGED
|
@@ -750,9 +750,10 @@ module.exports = (() => {
|
|
|
750
750
|
* @param {Array.<Object>} portfolios
|
|
751
751
|
* @param {Array.<Object>} positions
|
|
752
752
|
* @param {Array.<Object>} summaries
|
|
753
|
+
* @param {Object=} exclusionDependencies
|
|
753
754
|
*/
|
|
754
755
|
class PositionContainer {
|
|
755
|
-
constructor(definitions, portfolios, positions, summaries) {
|
|
756
|
+
constructor(definitions, portfolios, positions, summaries, exclusionDependencies) {
|
|
756
757
|
assert.argumentIsArray(definitions, 'definitions', PositionTreeDefinition, 'PositionTreeDefinition');
|
|
757
758
|
assert.argumentIsArray(portfolios, 'portfolios');
|
|
758
759
|
assert.argumentIsArray(positions, 'positions');
|
|
@@ -958,6 +959,42 @@ module.exports = (() => {
|
|
|
958
959
|
parentGroup.setExcludedItems(array.unique(excludedItems));
|
|
959
960
|
}
|
|
960
961
|
}, false);
|
|
962
|
+
|
|
963
|
+
const treeName = treeDefinition.name;
|
|
964
|
+
|
|
965
|
+
if (exclusionDependencies && exclusionDependencies.hasOwnProperty(treeName)) {
|
|
966
|
+
let dependantNames = exclusionDependencies[treeName];
|
|
967
|
+
|
|
968
|
+
if (is.string(dependantNames)) {
|
|
969
|
+
dependantNames = [ dependantNames ];
|
|
970
|
+
} else if (!is.array(dependantNames)) {
|
|
971
|
+
dependantNames = [ ];
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
const dependantTrees = dependantNames.reduce((trees, name) => {
|
|
975
|
+
if ( this._trees.hasOwnProperty(name)) {
|
|
976
|
+
trees.push(this._trees[name]);
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
return trees;
|
|
980
|
+
}, [ ]);
|
|
981
|
+
|
|
982
|
+
if (dependantTrees.length > 0) {
|
|
983
|
+
let excludedItems = [ ];
|
|
984
|
+
|
|
985
|
+
groupTree.walk((childGroup) => {
|
|
986
|
+
if (childGroup.excluded) {
|
|
987
|
+
excludedItems = excludedItems.concat(childGroup.items);
|
|
988
|
+
}
|
|
989
|
+
}, false, false);
|
|
990
|
+
|
|
991
|
+
dependantTrees.forEach((dependantTrees) => {
|
|
992
|
+
dependantTrees.walk((childGroup) => {
|
|
993
|
+
childGroup.setExcludedItems(excludedItems);
|
|
994
|
+
}, false, false);
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
}
|
|
961
998
|
}));
|
|
962
999
|
};
|
|
963
1000
|
|
|
@@ -2418,6 +2455,7 @@ module.exports = (() => {
|
|
|
2418
2455
|
/**
|
|
2419
2456
|
* The name of the tree.
|
|
2420
2457
|
*
|
|
2458
|
+
* @public
|
|
2421
2459
|
* @returns {String}
|
|
2422
2460
|
*/
|
|
2423
2461
|
get name() {
|