@barchart/portfolio-api-common 1.0.144 → 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');
|
|
@@ -229,17 +230,55 @@ module.exports = (() => {
|
|
|
229
230
|
|
|
230
231
|
const initializeGroupObservers = (group, groupTree) => {
|
|
231
232
|
addGroupBinding(group, group.registerGroupExcludedChangeHandler((excluded, sender) => {
|
|
232
|
-
groupTree.climb((parentGroup
|
|
233
|
-
|
|
233
|
+
groupTree.climb((parentGroup) => {
|
|
234
|
+
if (parentGroup) {
|
|
235
|
+
let excludedItems = [];
|
|
236
|
+
|
|
237
|
+
currentTree.walk((childGroup) => {
|
|
238
|
+
if (childGroup.excluded) {
|
|
239
|
+
excludedItems = excludedItems.concat(childGroup.items);
|
|
240
|
+
}
|
|
241
|
+
}, false, false);
|
|
242
|
+
|
|
243
|
+
parentGroup.setExcludedItems(array.unique(excludedItems));
|
|
244
|
+
}
|
|
245
|
+
}, false);
|
|
246
|
+
|
|
247
|
+
const treeName = treeDefinition.name;
|
|
248
|
+
|
|
249
|
+
if (exclusionDependencies && exclusionDependencies.hasOwnProperty(treeName)) {
|
|
250
|
+
let dependantNames = exclusionDependencies[treeName];
|
|
234
251
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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]);
|
|
238
261
|
}
|
|
239
|
-
}, false, false);
|
|
240
262
|
|
|
241
|
-
|
|
242
|
-
|
|
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
|
+
}
|
|
243
282
|
}));
|
|
244
283
|
};
|
|
245
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');
|
|
@@ -945,17 +946,55 @@ module.exports = (() => {
|
|
|
945
946
|
|
|
946
947
|
const initializeGroupObservers = (group, groupTree) => {
|
|
947
948
|
addGroupBinding(group, group.registerGroupExcludedChangeHandler((excluded, sender) => {
|
|
948
|
-
groupTree.climb((parentGroup
|
|
949
|
-
|
|
949
|
+
groupTree.climb((parentGroup) => {
|
|
950
|
+
if (parentGroup) {
|
|
951
|
+
let excludedItems = [];
|
|
952
|
+
|
|
953
|
+
currentTree.walk((childGroup) => {
|
|
954
|
+
if (childGroup.excluded) {
|
|
955
|
+
excludedItems = excludedItems.concat(childGroup.items);
|
|
956
|
+
}
|
|
957
|
+
}, false, false);
|
|
958
|
+
|
|
959
|
+
parentGroup.setExcludedItems(array.unique(excludedItems));
|
|
960
|
+
}
|
|
961
|
+
}, false);
|
|
962
|
+
|
|
963
|
+
const treeName = treeDefinition.name;
|
|
964
|
+
|
|
965
|
+
if (exclusionDependencies && exclusionDependencies.hasOwnProperty(treeName)) {
|
|
966
|
+
let dependantNames = exclusionDependencies[treeName];
|
|
950
967
|
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
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]);
|
|
954
977
|
}
|
|
955
|
-
}, false, false);
|
|
956
978
|
|
|
957
|
-
|
|
958
|
-
|
|
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
|
+
}
|
|
959
998
|
}));
|
|
960
999
|
};
|
|
961
1000
|
|
|
@@ -1511,6 +1550,8 @@ module.exports = (() => {
|
|
|
1511
1550
|
const key = item.position.position;
|
|
1512
1551
|
|
|
1513
1552
|
map[key] = item;
|
|
1553
|
+
|
|
1554
|
+
return map;
|
|
1514
1555
|
}, { });
|
|
1515
1556
|
|
|
1516
1557
|
this.refresh();
|
|
@@ -2414,6 +2455,7 @@ module.exports = (() => {
|
|
|
2414
2455
|
/**
|
|
2415
2456
|
* The name of the tree.
|
|
2416
2457
|
*
|
|
2458
|
+
* @public
|
|
2417
2459
|
* @returns {String}
|
|
2418
2460
|
*/
|
|
2419
2461
|
get name() {
|