cleanup organigram render

This commit is contained in:
Dennis Eichhorn 2020-04-10 10:36:49 +02:00
parent 2c921ed342
commit b61debfd13

View File

@ -49,51 +49,31 @@ $unitRoot = $unitTree[null][0]['children'];
<div style="margin: 0 auto; background: #ff0; padding: 1rem;"><?= $depEle['obj']->getName(); ?></div> <div style="margin: 0 auto; background: #ff0; padding: 1rem;"><?= $depEle['obj']->getName(); ?></div>
<!-- positions --> <!-- positions -->
<div style="margin: 0 auto; background: #fff; padding: 1rem;">
<ul> <ul>
<?php <?php
$depId = $depEle['obj']->getId(); $depId = $depEle['obj']->getId();
$posRoot = !isset($posTree[$depId]) ? [] : $posTree[$depId]; $posRoot = !isset($posTree[$depId]) ? [] : $posTree[$depId];
foreach ($posRoot as $posEle) : ?> foreach ($posRoot as $posEle) : ?>
<li><ul>
<?php while (!empty($posEle) && $posEle['obj'] !== null) { <?php while (!empty($posEle) && $posEle['obj'] !== null) {
if (isset($posTree[$depId][$posEle['obj']->getParent()->getId()])) { if (isset($posTree[$depId][$posEle['obj']->getParent()->getId()])) {
// here is a bug or somewhere else... the index is not moved correctly $c is always 0 // here is a bug or somewhere else... the index is not moved correctly $c is always 0
$posTree[$depId][$posEle['obj']->getParent()->getId()]['index'] = $posTree[$depId][$posEle['obj']->getParent()->getId()]['index'] + $c + 1; $posTree[$depId][$posEle['obj']->getParent()->getId()]['index'] = $posTree[$depId][$posEle['obj']->getParent()->getId()]['index'] + $c + 1;
} }
?> $c = 0; while (!empty($posEle)) { ?>
<?php $c = 0; $toClosePos = 0; while (!empty($posEle)) { ?>
<li><ul>
<li><?= $posEle['obj']->getName(); ?> <li><?= $posEle['obj']->getName(); ?>
<li><ul>
<?php <?php
// find the closest parent who has un-rendered children
if (empty($posEle['children'])) {
$parentPos = $posEle['obj'];
do {
$parentPos = $parentPos->getParent();
$parentPosId = $parentPos->getId();
} while ($parentPosId !== \array_keys($posTree[$depId])[0]
&& $parentPosId !== $depId
&& $parentPosId !== 0
&& !isset($posTree[$depId][$parentPosId]['children'][($posTree[$depId][$parentPosId]['index'] ?? 0) + $c + 1])
);
}
$posEle = []; $posEle = [];
} // if no more children go back to parrent?> } // if no more children go back to parrent
<?= \str_repeat('</ul>', $toClosePos*2); ?>
<?php
if (isset($posTree[$depId][$parentPosId ?? 0])) { if (isset($posTree[$depId][$parentPosId ?? 0])) {
$posEle = $posTree[$depId][$parentPosId]['children'][$posTree[$depId][$parentPosId]['index'] + $c + 1] ?? []; $posEle = $posTree[$depId][$parentPosId]['children'][$posTree[$depId][$parentPosId]['index'] + $c + 1] ?? [];
} }
} ?> } ?>
</ul>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
</div>
<div class="row" class="childdepartment"> <div class="row" class="childdepartment">
<?php <?php