mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-01-13 21:59:34 +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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue