@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
 
@@ -24,6 +24,7 @@ module.exports = (() => {
24
24
  /**
25
25
  * The name of the tree.
26
26
  *
27
+ * @public
27
28
  * @returns {String}
28
29
  */
29
30
  get name() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@barchart/portfolio-api-common",
3
- "version": "1.0.147",
3
+ "version": "1.0.148",
4
4
  "description": "Common classes used by the Portfolio system",
5
5
  "author": {
6
6
  "name": "Bryan Ingle",
@@ -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() {