Skip to content

Commit

Permalink
Доработки отчета по компоненту:
Browse files Browse the repository at this point in the history
- добавлен список элементов внешнего компонента, от которых зависят элементы текущего компонента
- исправлен баг подсветки недопустимых зависимостей
  • Loading branch information
v.chetkov committed Jul 12, 2020
1 parent db94523 commit f0ec49b
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,40 +14,84 @@ class DependencyModuleExtractor
use UidGenerator;

/**
* @param Module $currentModule
* @param Module $module
* @param Module $linkedModule
* @param Module[] $processedModules
* @param bool $linkedModuleIsDependent
* @return array
*/
public function extract(Module $currentModule, Module $linkedModule, array $processedModules, bool $linkedModuleIsDependent = false): array
public function extract(Module $module, Module $linkedModule, array $processedModules, bool $linkedModuleIsDependent = false): array
{
$extracted = [
'name' => $this->generateUid($currentModule->name()),
'name' => $this->generateUid($module->name()),
'linked_module_name' => $this->generateUid($linkedModule->name()),
'units_of_code' => [],
'reverted_units_of_code' => [],
];

$unitsOfCodes = $linkedModuleIsDependent
? $linkedModule->getDependentUnitsOfCode($currentModule)
: $currentModule->getDependentUnitsOfCode($linkedModule);
if ($linkedModuleIsDependent) {
foreach ($linkedModule->getDependencyUnitsOfCode($module) as $unitOfCode) {
$isAllowed = true;
$dependencies = [];
foreach ($unitOfCode->inputDependencies() as $dependency) {
if ($linkedModuleIsDependent && $dependency->module() !== $linkedModule
|| !$linkedModuleIsDependent && $dependency->module() !== $module
) {
continue;
}

$dependencyIsAllowed = $unitOfCode->isAccessibleFromOutside()
&& $dependency->module()->isDependencyAllowed($unitOfCode->module());
if (!$dependencyIsAllowed) {
$isAllowed = false;
}

$dependencies[] = [
'name' => $dependency->name(),
'is_allowed' => $dependencyIsAllowed,
];
}

$extractedRevertedUnitOfCode = [
'name' => $unitOfCode->name(),
'dependencies' => $dependencies,
'is_allowed' => $isAllowed,
];

foreach ($processedModules as $processedModule) {
if ($unitOfCode->belongToModule($processedModule)) {
$extractedRevertedUnitOfCode['uid'] = $this->generateUid($unitOfCode->name());
break;
}
}

$extracted['reverted_units_of_code'][] = $extractedRevertedUnitOfCode;
}

$unitsOfCodes = $linkedModule->getDependentUnitsOfCode($module);
} else {
$unitsOfCodes = $module->getDependentUnitsOfCode($linkedModule);
}

foreach ($unitsOfCodes as $unitOfCode) {
$isAllowed = true;
$outputDependencies = [];
foreach ($unitOfCode->outputDependencies() as $outputDependency) {
if (!$outputDependencyIsAllowed = $outputDependency->isAccessibleFromOutside()) {
$dependencies = [];
foreach ($unitOfCode->outputDependencies() as $dependency) {
$outputDependencyIsAllowed = $dependency->isAccessibleFromOutside()
&& $unitOfCode->module()->isDependencyAllowed($dependency->module());
if (!$outputDependencyIsAllowed) {
$isAllowed = false;
}

$outputDependencies[] = [
'name' => $outputDependency->name(),
$dependencies[] = [
'name' => $dependency->name(),
'is_allowed' => $outputDependencyIsAllowed,
];
}

$extractedUnitOfCode = [
'name' => $unitOfCode->name(),
'output_dependencies' => $outputDependencies,
'dependencies' => $dependencies,
'is_allowed' => $isAllowed,
];

Expand Down
29 changes: 25 additions & 4 deletions src/Service/Report/DefaultReport/Template/module-info.twig
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@
<div id="output-deps-chart"></div>
</div>
</div>
<div>
<div class="col-12">
<div class="row">
<div class="col-6">
<table class="table table-borderless table-hover">
{% for dependency_module in dependency_modules %}
{% for unit_of_code in dependency_module.units_of_code %}
Expand All @@ -169,8 +169,29 @@
<a href="{{ unit_of_code.uid }}.html">подробнее</a>
{% endif %}
<ul class="hidden">
{% for output_dependency in unit_of_code.output_dependencies %}
<li class="{% if not output_dependency.is_allowed %}alert-danger{% endif %}">{{ output_dependency.name }}</li>
{% for dependency in unit_of_code.dependencies %}
<li class="{% if not dependency.is_allowed %}alert-danger{% endif %}">{{ dependency.name }}</li>
{% endfor %}
</ul>
</td>
</tr>
{% endfor %}
{% endfor %}
</table>
</div>
<div class="col-6">
<table class="table table-borderless table-hover">
{% for dependency_module in dependency_modules %}
{% for unit_of_code in dependency_module.reverted_units_of_code %}
<tr class="hidden unit-of-code-row output-deps-chart {{ dependency_module.name }} {% if not unit_of_code.is_allowed %}alert-warning{% endif %}">
<td>
<span style="cursor:pointer;" onclick="this.parentElement.getElementsByTagName('ul')[0].classList.toggle('hidden')">{{ unit_of_code.name }}</span>
{% if unit_of_code.uid is defined %}
<a href="{{ unit_of_code.uid }}.html">подробнее</a>
{% endif %}
<ul class="hidden">
{% for dependency in unit_of_code.dependencies %}
<li class="{% if not dependency.is_allowed %}alert-danger{% endif %}">{{ dependency.name }}</li>
{% endfor %}
</ul>
</td>
Expand Down

0 comments on commit f0ec49b

Please sign in to comment.