mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-01-11 04:39:33 +00:00
Reihenfolge der Tabs in Baugruppenansicht korrigiert
Die Tabs "Details" und "Stückliste" wurden in der Baugruppenansicht vertauscht, um der Nutzererwartung besser zu entsprechen. Zudem wurde die Methode zur rekursiven Ermittlung referenzierter Baugruppen überarbeitet und in der Datentabelle integriert.
This commit is contained in:
parent
961b352508
commit
06373b3e5a
3 changed files with 37 additions and 21 deletions
|
|
@ -109,14 +109,13 @@ final class AssemblyDataTable implements DataTableTypeInterface
|
|||
$this->csh->add('referencedAssemblies', TextColumn::class, [
|
||||
'label' => $this->translator->trans('assembly.referencedAssembly.labelp'),
|
||||
'render' => function ($value, Assembly $context): string {
|
||||
$assemblies = $context->getReferencedAssemblies();
|
||||
$assemblies = $context->getAllReferencedAssembliesRecursive($context);
|
||||
|
||||
$max = 5;
|
||||
$tmp = "";
|
||||
|
||||
for ($i = 0; $i < min($max, count($assemblies)); $i++) {
|
||||
$url = $this->urlGenerator->infoURL($assemblies[$i]);
|
||||
$tmp .= sprintf('<a href="%s">%s</a>', $url, htmlspecialchars($assemblies[$i]->getName()));
|
||||
$tmp .= $this->assemblyDataTableHelper->renderName($assemblies[$i]);
|
||||
if ($i < count($assemblies) - 1) {
|
||||
$tmp .= ", ";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -393,20 +393,37 @@ class Assembly extends AbstractStructuralDBElement
|
|||
}
|
||||
|
||||
/**
|
||||
* Get all referenced assemblies which uses this assembly.
|
||||
* Get all assemblies and sub-assemblies recursive that are referenced in the assembly bom entries.
|
||||
*
|
||||
* @return Assembly[] all referenced assemblies which uses this assembly as a one-dimensional array of assembly objects
|
||||
* @param Assembly $assembly Assembly, which is to be processed recursively.
|
||||
* @param array $processedAssemblies (optional) a list of the already edited assemblies to avoid circulatory references.
|
||||
* @return Assembly[] A flat list of all recursively found assemblies.
|
||||
*/
|
||||
public function getReferencedAssemblies(): array
|
||||
public function getAllReferencedAssembliesRecursive(Assembly $assembly, array &$processedAssemblies = []): array
|
||||
{
|
||||
$assemblies = [];
|
||||
|
||||
foreach($this->bom_entries as $entry) {
|
||||
if ($entry->getReferencedAssembly() !== null) {
|
||||
$assemblies[] = $entry->getReferencedAssembly();
|
||||
// Avoid circular references
|
||||
if (in_array($assembly, $processedAssemblies, true)) {
|
||||
return $assemblies;
|
||||
}
|
||||
|
||||
// Add the current assembly to the processed
|
||||
$processedAssemblies[] = $assembly;
|
||||
|
||||
// Iterate by the bom entries of the current assembly
|
||||
foreach ($assembly->getBomEntries() as $bomEntry) {
|
||||
if ($bomEntry->getReferencedAssembly() !== null) {
|
||||
$referencedAssembly = $bomEntry->getReferencedAssembly();
|
||||
|
||||
$assemblies[] = $referencedAssembly;
|
||||
|
||||
// Continue recursively to process sub-assemblies
|
||||
$assemblies = array_merge($assemblies, $this->getAllReferencedAssembliesRecursive($referencedAssembly, $processedAssemblies));
|
||||
}
|
||||
}
|
||||
|
||||
return $assemblies;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,18 +64,18 @@
|
|||
{% block card_content %}
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="part-tab" data-bs-toggle="tab" data-bs-target="#part-tab-pane"
|
||||
type="button" role="tab" aria-controls="part-tab-pane" aria-selected="true">
|
||||
<i class="fa-solid fa-list-check fa-fw"></i>
|
||||
{% trans %}assembly_bom_entry.label{% endtrans %}
|
||||
<span class="badge bg-secondary">{{ assembly.bomEntries | length }}</span>
|
||||
<button class="nav-link active" id="info-tab" data-bs-toggle="tab" data-bs-target="#info-tab-pane"
|
||||
type="button" role="tab" aria-controls="info-tab-pane" aria-selected="true">
|
||||
<i class="fa-solid fa-circle-info fa-fw"></i>
|
||||
{% trans %}assembly.info.info.label{% endtrans %}
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="info-tab" data-bs-toggle="tab" data-bs-target="#info-tab-pane"
|
||||
type="button" role="tab" aria-controls="info-tab-pane" aria-selected="false">
|
||||
<i class="fa-solid fa-circle-info fa-fw"></i>
|
||||
{% trans %}assembly.info.info.label{% endtrans %}
|
||||
<button class="nav-link" id="part-tab" data-bs-toggle="tab" data-bs-target="#part-tab-pane"
|
||||
type="button" role="tab" aria-controls="part-tab-pane" aria-selected="false">
|
||||
<i class="fa-solid fa-list-check fa-fw"></i>
|
||||
{% trans %}assembly_bom_entry.label{% endtrans %}
|
||||
<span class="badge bg-secondary">{{ assembly.bomEntries | length }}</span>
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
|
|
@ -98,12 +98,12 @@
|
|||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade show active" id="part-tab-pane" role="tabpanel" aria-labelledby="part-tab" tabindex="0">
|
||||
{% include "assemblies/info/_part.html.twig" %}
|
||||
</div>
|
||||
<div class="tab-pane fade" id="info-tab-pane" role="tabpanel" aria-labelledby="info-tab" tabindex="0">
|
||||
{% include "assemblies/info/_info.html.twig" %}
|
||||
</div>
|
||||
<div class="tab-pane fade show active" id="part-tab-pane" role="tabpanel" aria-labelledby="part-tab" tabindex="0">
|
||||
{% include "assemblies/info/_part.html.twig" %}
|
||||
</div>
|
||||
<div class="tab-pane fade" id="builds-tab-pane" role="tabpanel" aria-labelledby="builds-tab" tabindex="0">
|
||||
{% include "assemblies/info/_builds.html.twig" %}
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue