basicprimitives
Version:
Basic Primitives Diagrams for JavaScript - data visualization components library that implements organizational chart and multi-parent dependency diagrams, contains implementations of JavaScript Controls and PDF rendering plugins.
49 lines (44 loc) • 1.34 kB
JavaScript
import Family from "../../../algorithms/Family";
export default function NavigationalFamily(activeItems) {
var _activeItems = activeItems,
_navigationFamily = Family();
function define(parentItem, treeItem, skipFirstParent) {
var parents = [];
/* take parentItem when it is visible or collect all visible immediate parents of the parentItem */
if (
skipFirstParent ||
!parentItem.isVisible ||
!_activeItems.hasOwnProperty(parentItem.id)
) {
if (!skipFirstParent && parentItem.isVisible) {
parents.push(parentItem.id);
}
_navigationFamily.loopParents(
this,
parentItem.id,
function (parentId, parent, level) {
if (parent.isVisible) {
parents.push(parentId);
if (_activeItems.hasOwnProperty(parentId)) {
return _navigationFamily.SKIP;
}
}
}
);
} else {
parents.push(parentItem.id);
}
if (_navigationFamily.node(treeItem.id) != null) {
_navigationFamily.adopt(parents, treeItem.id);
} else {
_navigationFamily.add(parents, treeItem.id, treeItem);
}
}
function getFamily() {
return _navigationFamily;
}
return {
define: define,
getFamily: getFamily,
};
}