|
1416 | 1416 |
|
1417 | 1417 | return $nodeDiv; |
1418 | 1418 | }, |
| 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 | + }, |
1419 | 1456 | // recursively build the tree |
1420 | | - buildHierarchy: function ($appendTo, data) { |
| 1457 | + buildHierarchy: function ($hierarchy, data) { |
1421 | 1458 | var that = this; |
1422 | 1459 | var opts = this.options; |
1423 | 1460 | var level = 0; |
1424 | 1461 | var $nodeDiv; |
1425 | 1462 | if (data.level) { |
1426 | 1463 | level = data.level; |
1427 | 1464 | } else { |
1428 | | - level = data.level = $appendTo.parentsUntil('.orgchart', '.nodes').length; |
| 1465 | + level = data.level = $hierarchy.parentsUntil('.orgchart', '.nodes').length; |
1429 | 1466 | } |
1430 | 1467 | // 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 { |
1432 | 1477 | $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 | + } |
1434 | 1482 | } |
1435 | 1483 |
|
1436 | 1484 | // Construct the "inferior nodes" |
1437 | | - if (data.children && data.children.length) { |
| 1485 | + /*if (data.children && data.children.length) { |
1438 | 1486 | var isHidden = level + 1 > opts.visibleLevel || (data.collapsed !== undefined && data.collapsed); |
1439 | 1487 | var $nodesLayer; |
1440 | 1488 | if ((opts.verticalLevel && (level + 1) >= opts.verticalLevel) || data.hybrid) { |
|
1443 | 1491 | $nodesLayer.addClass('hidden'); |
1444 | 1492 | } |
1445 | 1493 | if (((opts.verticalLevel && level + 1 === opts.verticalLevel) || data.hybrid) |
1446 | | - && !$appendTo.closest('.vertical').length) { |
| 1494 | + && !$hierarchy.closest('.vertical').length) { |
1447 | 1495 | $nodesLayer.addClass('vertical'); |
1448 | 1496 | } |
1449 | | - $appendTo.append($nodesLayer); |
| 1497 | + $hierarchy.append($nodesLayer); |
1450 | 1498 | } else if (data.compact) { |
1451 | 1499 | $nodeDiv.addClass('compact'); |
1452 | 1500 | } else { |
1453 | 1501 | $nodesLayer = $('<ul class="nodes' + (isHidden ? ' hidden' : '') + '">'); |
1454 | 1502 | if (isHidden) { |
1455 | | - $appendTo.addClass('isChildrenCollapsed'); |
| 1503 | + $hierarchy.addClass('isChildrenCollapsed'); |
1456 | 1504 | } |
1457 | | - $appendTo.append($nodesLayer); |
| 1505 | + $hierarchy.append($nodesLayer); |
1458 | 1506 | } |
1459 | 1507 | // recurse through children nodes |
1460 | 1508 | $.each(data.children, function () { |
|
1467 | 1515 | that.buildHierarchy($nodeCell, this); |
1468 | 1516 | } |
1469 | 1517 | }); |
1470 | | - } |
| 1518 | + }*/ |
1471 | 1519 | }, |
1472 | 1520 | // build the child nodes of specific node |
1473 | 1521 | buildChildNode: function ($appendTo, data) { |
|
0 commit comments