Skip to content

Commit 17ecd98

Browse files
committed
WIP: implement family tree
1 parent 09c0d8e commit 17ecd98

File tree

4 files changed

+118
-22
lines changed

4 files changed

+118
-22
lines changed

dist/js/jquery.orgchart.js

Lines changed: 58 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1416,25 +1416,73 @@
14161416

14171417
return $nodeDiv;
14181418
},
1419+
// Construct the inferior nodes within a hierarchy
1420+
buildInferiorNodes: function ($hierarchy, $nodeDiv, data, level) {
1421+
var that = this;
1422+
var opts = this.options;
1423+
var isHidden = level + 1 > opts.visibleLevel || (data.collapsed !== undefined && data.collapsed);
1424+
var $nodesLayer;
1425+
if ((opts.verticalLevel && (level + 1) >= opts.verticalLevel) || data.hybrid) {
1426+
$nodesLayer = $('<ul class="nodes">');
1427+
if (isHidden && (opts.verticalLevel && (level + 1) >= opts.verticalLevel)) {
1428+
$nodesLayer.addClass('hidden');
1429+
}
1430+
if (((opts.verticalLevel && level + 1 === opts.verticalLevel) || data.hybrid)
1431+
&& !$hierarchy.closest('.vertical').length) {
1432+
$nodesLayer.addClass('vertical');
1433+
}
1434+
$hierarchy.append($nodesLayer);
1435+
} else if (data.compact) {
1436+
$nodeDiv.addClass('compact');
1437+
} else {
1438+
$nodesLayer = $('<ul class="nodes' + (isHidden ? ' hidden' : '') + '">');
1439+
if (isHidden) {
1440+
$hierarchy.addClass('isChildrenCollapsed');
1441+
}
1442+
$hierarchy.append($nodesLayer);
1443+
}
1444+
// recurse through children nodes
1445+
$.each(data.children, function () {
1446+
this.level = level + 1;
1447+
if (data.compact) {
1448+
that.buildHierarchy($nodeDiv, this);
1449+
} else {
1450+
var $nodeCell = $('<li class="hierarchy">');
1451+
$nodesLayer.append($nodeCell);
1452+
that.buildHierarchy($nodeCell, this);
1453+
}
1454+
});
1455+
},
14191456
// recursively build the tree
1420-
buildHierarchy: function ($appendTo, data) {
1457+
buildHierarchy: function ($hierarchy, data) {
14211458
var that = this;
14221459
var opts = this.options;
14231460
var level = 0;
14241461
var $nodeDiv;
14251462
if (data.level) {
14261463
level = data.level;
14271464
} else {
1428-
level = data.level = $appendTo.parentsUntil('.orgchart', '.nodes').length;
1465+
level = data.level = $hierarchy.parentsUntil('.orgchart', '.nodes').length;
14291466
}
14301467
// Construct the single node in OrgChart or the multiple nodes in family tree
1431-
if (Object.keys(data).length > 2) {
1468+
if (Array.isArray(data)) {
1469+
$.each(data, function () {
1470+
$nodeDiv = that.createNode(data);
1471+
$hierarchy.append($nodeDiv);
1472+
if (data.children && data.children.length) {
1473+
that.buildInferiorNodes($hierarchy, $nodeDiv, data, level);
1474+
}
1475+
});
1476+
} else {
14321477
$nodeDiv = this.createNode(data);
1433-
$appendTo.append($nodeDiv);
1478+
$hierarchy.append($nodeDiv);
1479+
if (data.children && data.children.length) {
1480+
this.buildInferiorNodes($hierarchy, $nodeDiv, data, level);
1481+
}
14341482
}
14351483

14361484
// Construct the "inferior nodes"
1437-
if (data.children && data.children.length) {
1485+
/*if (data.children && data.children.length) {
14381486
var isHidden = level + 1 > opts.visibleLevel || (data.collapsed !== undefined && data.collapsed);
14391487
var $nodesLayer;
14401488
if ((opts.verticalLevel && (level + 1) >= opts.verticalLevel) || data.hybrid) {
@@ -1443,18 +1491,18 @@
14431491
$nodesLayer.addClass('hidden');
14441492
}
14451493
if (((opts.verticalLevel && level + 1 === opts.verticalLevel) || data.hybrid)
1446-
&& !$appendTo.closest('.vertical').length) {
1494+
&& !$hierarchy.closest('.vertical').length) {
14471495
$nodesLayer.addClass('vertical');
14481496
}
1449-
$appendTo.append($nodesLayer);
1497+
$hierarchy.append($nodesLayer);
14501498
} else if (data.compact) {
14511499
$nodeDiv.addClass('compact');
14521500
} else {
14531501
$nodesLayer = $('<ul class="nodes' + (isHidden ? ' hidden' : '') + '">');
14541502
if (isHidden) {
1455-
$appendTo.addClass('isChildrenCollapsed');
1503+
$hierarchy.addClass('isChildrenCollapsed');
14561504
}
1457-
$appendTo.append($nodesLayer);
1505+
$hierarchy.append($nodesLayer);
14581506
}
14591507
// recurse through children nodes
14601508
$.each(data.children, function () {
@@ -1467,7 +1515,7 @@
14671515
that.buildHierarchy($nodeCell, this);
14681516
}
14691517
});
1470-
}
1518+
}*/
14711519
},
14721520
// build the child nodes of specific node
14731521
buildChildNode: function ($appendTo, data) {

0 commit comments

Comments
 (0)