11/**
2- * @preserve Basic Primitives Diagrams v5.6.4
2+ * @preserve Basic Primitives Diagrams v5.7.0
33 * Copyright (c) 2013 - 2020 Basic Primitives Inc
44 *
55 * Non-commercial - Free
3535
3636var primitives = {
3737 common: {
38- version: "5.6.4 "
38+ version: "5.7.0 "
3939 },
4040 orgdiagram: {},
4141 famdiagram: {},
@@ -8797,6 +8797,15 @@ primitives.famdiagram.ItemConfig = function (arg0, arg1, arg2, arg3, arg4) {
87978797 */
87988798 this.position = null;
87998799
8800+ /**
8801+ * Primary parents id. Set this property to place item close to the selected primary parent in `parents` collection.
8802+ * If property set to null or referenced parent does not exists then this property is ignored.
8803+ *
8804+ * @group Order
8805+ * @type {string}
8806+ */
8807+ this.primaryParent = null;
8808+
88008809 /**
88018810 * Title
88028811 *
@@ -9741,7 +9750,8 @@ primitives.famdiagram.OrderFamilyNodesOptionTask = function (optionsTask, defaul
97419750 id: new primitives.common.ValueReader(["string", "number"], true),
97429751 position: new primitives.common.ValueReader(["number"], true),
97439752 relativeItem: new primitives.common.ValueReader(["string", "number"], true),
9744- placementType: new primitives.common.EnumerationReader(primitives.common.AdviserPlacementType, false, defaultItemConfig.placementType)
9753+ placementType: new primitives.common.EnumerationReader(primitives.common.AdviserPlacementType, false, defaultItemConfig.placementType),
9754+ primaryParent: new primitives.common.ValueReader(["string", "number"], true),
97459755 }),
97469756 true,
97479757 "id"
@@ -10002,14 +10012,12 @@ primitives.famdiagram.FamilyBalance.prototype.FamLink = function (fromItem, toIt
1000210012
1000310013primitives.famdiagram.FamilyBalance.prototype.createOrgTree = function (params, data) {
1000410014 var index, len, index2, len2,
10005- famItem,
1000610015 familiesGraph, /* primitives.common.graph */
1000710016 link, links,
1000810017 fromFamily,
1000910018 toFamily,
1001010019 sortedFamilies = [], sortedFamiliesHash,
1001110020 attachedFamilies,
10012- userItem,
1001310021 familyId,
1001410022 family,
1001510023 familyRootItem,
@@ -10018,8 +10026,6 @@ primitives.famdiagram.FamilyBalance.prototype.createOrgTree = function (params,
1001810026 rootItem, rootItems, bestRootItem, bestReference,
1001910027 spanningTree,
1002010028 extraGravities, grandChildren,
10021- parsedId,
10022- itemsHavingSpouses, spouses,
1002310029 orgItemRoot,
1002410030 famItemsExtracted,
1002510031 families = [],
@@ -10037,7 +10043,7 @@ primitives.famdiagram.FamilyBalance.prototype.createOrgTree = function (params,
1003710043 /* extractOrgChart method extracts hiearchy of family members starting from grandParent and takes only non extracted family items
1003810044 * For every extracted item it assigns its familyId, it is used for building families relations graph and finding cross family links
1003910045 */
10040- this.extractOrgChart(grandParentId, params.logicalFamily, params.defaultItemConfig, data.orgTree, data.orgPartners, data.itemByChildrenKey, famItemsExtracted, family);
10046+ this.extractOrgChart(grandParentId, params.logicalFamily, params.primaryParents, params. defaultItemConfig, data.orgTree, data.orgPartners, data.itemByChildrenKey, famItemsExtracted, family);
1004110047 families.push(family);
1004210048 families2.push(family);
1004310049 familyId += 1;
@@ -10655,7 +10661,7 @@ primitives.famdiagram.FamilyBalance.prototype.attachFamilyToOrgChart = function
1065510661 data.orgTree.adopt(rootItem.id, familyRoot.id, familyRoot);
1065610662};
1065710663
10658- primitives.famdiagram.FamilyBalance.prototype.extractOrgChart = function (grandParentId, logicalFamily, defaultItemConfig, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family) {
10664+ primitives.famdiagram.FamilyBalance.prototype.extractOrgChart = function (grandParentId, logicalFamily, primaryParentsPath, defaultItemConfig, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family) {
1065910665 var index, len,
1066010666 children = [], tempChildren,
1066110667 childItem,
@@ -10672,24 +10678,24 @@ primitives.famdiagram.FamilyBalance.prototype.extractOrgChart = function (grandP
1067210678 newOrgItem.hideChildrenConnection = grandParent.hideChildrenConnection;
1067310679 family.items.push(newOrgItem);
1067410680
10675- famItemsExtracted[grandParent.id] = true ;
10681+ famItemsExtracted[grandParent.id] = grandParent ;
1067610682 grandParent.familyId = family.id;
1067710683
1067810684 /* extract its children */
10679- children = this.extractChildren(grandParent, logicalFamily, defaultItemConfig, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family);
10685+ children = this.extractChildren(grandParent, logicalFamily, primaryParentsPath, defaultItemConfig, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family);
1068010686
1068110687 while (children.length > 0) {
1068210688 tempChildren = [];
1068310689 for (index = 0, len = children.length; index < len; index += 1) {
1068410690 childItem = children[index];
10685- tempChildren = tempChildren.concat(this.extractChildren(childItem, logicalFamily, defaultItemConfig, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family));
10691+ tempChildren = tempChildren.concat(this.extractChildren(childItem, logicalFamily, primaryParentsPath, defaultItemConfig, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family));
1068610692 }
1068710693
1068810694 children = tempChildren;
1068910695 }
1069010696};
1069110697
10692- primitives.famdiagram.FamilyBalance.prototype.extractChildren = function (parentItem, logicalFamily, defaultItemConfig, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family) {
10698+ primitives.famdiagram.FamilyBalance.prototype.extractChildren = function (parentItem, logicalFamily, primaryParentsPath, defaultItemConfig, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family) {
1069310699 var result = [],
1069410700 firstChild = null,
1069510701 partnerItem = null,
@@ -10711,6 +10717,17 @@ primitives.famdiagram.FamilyBalance.prototype.extractChildren = function (parent
1071110717 family.links.push(new this.FamLink(parentItem.id, firstChild));
1071210718 } else {
1071310719 if (firstChild != null) {
10720+ if (primaryParentsPath.hasOwnProperty(firstChild)) {
10721+ var realParent = primaryParentsPath[firstChild];
10722+ if (realParent != parentItem.id) {
10723+ if (orgPartners[realParent] == null) {
10724+ orgPartners[realParent] = [];
10725+ }
10726+ orgPartners[realParent].push(parentItem.id);
10727+ family.links.push(new this.FamLink(parentItem.id, firstChild));
10728+ return result;
10729+ }
10730+ }
1071410731 itemByChildrenKey[firstChild] = parentItem;
1071510732 }
1071610733
@@ -11336,6 +11353,54 @@ primitives.famdiagram.UserDefinedNodesOrder.prototype.getUserDefinedPositions =
1133611353 };
1133711354}
1133811355
11356+ /* /Controls/FamDiagram/Tasks/Transformations/FamilyTransformations/UserDefinedPrimaryNodes.js*/
11357+ primitives.famdiagram.UserDefinedPrimaryParents = function () {
11358+
11359+ };
11360+
11361+ primitives.famdiagram.UserDefinedPrimaryParents.prototype.getUserDefinedPrimaryParents = function (items, family) {
11362+ var result = {};
11363+
11364+ var primaryParents = {};
11365+ for (var index = 0; index < items.length; index += 1) {
11366+ var item = items[index];
11367+ if (item.primaryParent != null) {
11368+ primaryParents[item.id] = item.primaryParent;
11369+ }
11370+ }
11371+
11372+ for (var nodeid in primaryParents) {
11373+ var primaryParent = primaryParents[nodeid];
11374+ var trace = {}
11375+
11376+ var nodes = [nodeid];
11377+ while (nodes.length > 0) {
11378+ var tempNodes = [];
11379+ for (var index = 0; index < nodes.length; index += 1) {
11380+ nodeid = nodes[index];
11381+ family.loopParents(this, nodeid, function (parentid, parent) {
11382+ trace[parentid] = nodeid;
11383+ if (parentid == primaryParent) {
11384+ while (trace[parentid] != null) {
11385+ result[trace[parentid]] = parentid;
11386+ parentid = trace[parentid];
11387+ }
11388+ tempNodes = [];
11389+ return family.BREAK;
11390+ }
11391+ if (parent.isVisible == false) {
11392+ tempNodes.push(parentid);
11393+ }
11394+ return family.SKIP;
11395+ })
11396+ }
11397+ nodes = tempNodes;
11398+ }
11399+ }
11400+ return result;
11401+ }
11402+
11403+
1133911404/* /Controls/FamDiagram/Tasks/Transformations/Layouts/BaseLayout.js*/
1134011405primitives.common.BaseLayout = function (params, options) {
1134111406 this._children = {};
@@ -12746,6 +12811,7 @@ primitives.famdiagram.OrderFamilyNodesTask = function (orderFamilyNodesOptionTas
1274612811 },
1274712812 _familyBalance = new primitives.famdiagram.FamilyBalance(),
1274812813 _familyMatrixesExtractor = new primitives.famdiagram.FamilyMatrixesExtractor(false),
12814+ _userDefinedPrimaryParents = new primitives.famdiagram.UserDefinedPrimaryParents(),
1274912815 _nullTreeLevelConnectorStackSize = new primitives.orgdiagram.TreeLevelConnectorStackSize();
1275012816
1275112817 function process(debug) {
@@ -12756,6 +12822,7 @@ primitives.famdiagram.OrderFamilyNodesTask = function (orderFamilyNodesOptionTas
1275612822 bundles = [];
1275712823
1275812824 var orderFamilyNodesOptions = orderFamilyNodesOptionTask.getOptions();
12825+
1275912826 var options = {
1276012827 enableMatrixLayout: orderFamilyNodesOptions.enableMatrixLayout,
1276112828 minimumMatrixSize: orderFamilyNodesOptions.minimumMatrixSize,
@@ -12775,7 +12842,8 @@ primitives.famdiagram.OrderFamilyNodesTask = function (orderFamilyNodesOptionTas
1277512842 maximumId: maximumId,
1277612843 defaultItemConfig: defaultItemConfig,
1277712844 itemsPositions: userDefinedNodesOrderTask.getPositions(),
12778- itemsGroups: userDefinedNodesOrderTask.getGroups()
12845+ itemsGroups: userDefinedNodesOrderTask.getGroups(),
12846+ primaryParents: _userDefinedPrimaryParents.getUserDefinedPrimaryParents(orderFamilyNodesOptions.items, logicalFamily)
1277912847 };
1278012848
1278112849 var balanceResult = _familyBalance.balance(balanceParams);
0 commit comments