improve organigram rendering

This commit is contained in:
Dennis Eichhorn 2020-04-11 18:20:38 +02:00
parent b61debfd13
commit f531c694c9
4 changed files with 55 additions and 9 deletions

View File

@ -19,7 +19,7 @@ use Modules\Organization\Models\DepartmentMapper;
use Modules\Organization\Models\Position;
use Modules\Organization\Models\PositionMapper;
use Modules\Organization\Models\UnitMapper;
use phpOMS\Asset\AssetType;
use phpOMS\Contract\RenderableInterface;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
@ -106,6 +106,10 @@ final class BackendController extends Controller
*/
public function viewOrganigram(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
{
$response->get('Content')
->getData('head')
->addAsset(AssetType::CSS, 'Modules/Organization/Theme/Backend/css/styles.css');
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/Organization/Theme/Backend/organigram');

View File

@ -0,0 +1,15 @@
.organigram .portlet {
margin: 0 auto; }
.organigram .unit {
margin: 1rem auto; }
.organigram .departments {
margin: .5rem;
box-sizing: border-box;
display: flex;
flex: 0 0 auto;
flex-direction: column;
flex-wrap: wrap;
border: 1px solid #ebedf2; }
.organigram .position {
margin: 0 auto;
padding: 1rem; }

View File

@ -0,0 +1,25 @@
.organigram {
.portlet {
margin: 0 auto;
}
.unit {
margin: 1rem auto;
}
.departments {
margin: .5rem;
box-sizing: border-box;
display: flex;
flex: 0 0 auto;
flex-direction: column;
flex-wrap: wrap;
border: 1px solid #ebedf2;
}
.position {
margin: 0 auto;
padding: 1rem;
}
}

View File

@ -24,16 +24,16 @@ $unitRoot = $unitTree[null][0]['children'];
// departments
// positions
?>
<div class="row">
<div class="row organigram">
<?php foreach ($unitRoot as $unitEle) : ?>
<div class="row" style="margin: 0 auto;">
<div class="row">
<?php while (!empty($unitEle) && $unitEle['obj'] !== null) {
$unitTree[null][$unitEle['obj']->getParent()->getId()]['index'] = $unitTree[null][$unitEle['obj']->getParent()->getId()]['index'] + 1;
?>
<?php while (!empty($unitEle)) {
$unitId = $unitEle['obj']->getId(); ?>
<div class="col" style="margin: 0 auto; background: #00f; padding: 1rem;">
<div style="margin: 0 auto; background: #f00; padding: 1rem;"><?= $unitEle['obj']->getName(); ?></div>
<div class="col">
<div class="portlet unit"><div class="portlet-body"><?= $unitEle['obj']->getName(); ?></div></div>
<?php if (isset($depTree[$unitId]) && !empty($depTree[$unitId])) : ?>
<!-- departments -->
@ -45,11 +45,12 @@ $unitRoot = $unitTree[null][0]['children'];
$depTree[$unitId][$depEle['obj']->getParent()->getId()]['index'] = $depTree[$unitId][$depEle['obj']->getParent()->getId()]['index'] + 1;
?>
<?php while (!empty($depEle)) { ?>
<div class="col" style="margin: 0 auto; background: #0f0; padding: 1rem;">
<div style="margin: 0 auto; background: #ff0; padding: 1rem;"><?= $depEle['obj']->getName(); ?></div>
<div class="departments">
<div class="portlet">
<div class="portlet-head"><?= $depEle['obj']->getName(); ?></div>
<!-- positions -->
<div style="margin: 0 auto; background: #fff; padding: 1rem;">
<div class="portlet-body">
<ul>
<?php
$depId = $depEle['obj']->getId();
@ -74,8 +75,9 @@ $unitRoot = $unitTree[null][0]['children'];
<?php endforeach; ?>
</ul>
</div>
</div>
<div class="row" class="childdepartment">
<div class="row">
<?php
// find the closest parent who has un-rendered children
$toCloseDep = 0;