Assembly Listenübersicht umsetzen

This commit is contained in:
Marcel Diegelmann 2025-07-03 13:47:20 +02:00
parent c7aa730bc3
commit 292aefaf49
5 changed files with 581 additions and 0 deletions

View file

@ -0,0 +1,77 @@
<?php
declare(strict_types=1);
/*
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
*
* Copyright (C) 2019 - 2022 Jan Böhmer (https://github.com/jbtronics)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace App\DataTables\Helpers;
use App\Entity\AssemblySystem\Assembly;
use App\Entity\Attachments\Attachment;
use App\Services\Attachments\AssemblyPreviewGenerator;
use App\Services\Attachments\AttachmentURLGenerator;
use App\Services\EntityURLGenerator;
/**
* A helper service which contains common code to render columns for assembly related tables
*/
class AssemblyDataTableHelper
{
public function __construct(
private readonly EntityURLGenerator $entityURLGenerator,
private readonly AssemblyPreviewGenerator $previewGenerator,
private readonly AttachmentURLGenerator $attachmentURLGenerator
) {
}
public function renderName(Assembly $context): string
{
$icon = '';
return sprintf(
'<a href="%s">%s%s</a>',
$this->entityURLGenerator->infoURL($context),
$icon,
htmlspecialchars($context->getName())
);
}
public function renderPicture(Assembly $context): string
{
$preview_attachment = $this->previewGenerator->getTablePreviewAttachment($context);
if (!$preview_attachment instanceof Attachment) {
return '';
}
$title = htmlspecialchars($preview_attachment->getName());
if ($preview_attachment->getFilename()) {
$title .= ' ('.htmlspecialchars($preview_attachment->getFilename()).')';
}
return sprintf(
'<img alt="%s" src="%s" data-thumbnail="%s" class="%s" data-title="%s" data-controller="elements--hoverpic">',
'Assembly image',
$this->attachmentURLGenerator->getThumbnailURL($preview_attachment),
$this->attachmentURLGenerator->getThumbnailURL($preview_attachment, 'thumbnail_md'),
'hoverpic assembly-table-image',
$title
);
}
}

View file

@ -16263,5 +16263,131 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
<target>%name% (Ihr Synonym: %synonym%)</target>
</segment>
</unit>
<unit id="uT5zcT1" name="assembly_list.all.title">
<segment state="translated">
<source>assembly_list.all.title</source>
<target>Alle Baugruppen</target>
</segment>
</unit>
<unit id="8Ijh3db" name="assembly.edit.tab.common">
<segment state="translated">
<source>assembly.edit.tab.common</source>
<target>Allgemein</target>
</segment>
</unit>
<unit id="jTnEypG" name="assembly.edit.tab.advanced">
<segment state="translated">
<source>assembly.edit.tab.advanced</source>
<target>Erweiterte Optionen</target>
</segment>
</unit>
<unit id="7uhe3gC" name="assembly.edit.tab.attachments">
<segment state="translated">
<source>assembly.edit.tab.attachments</source>
<target>Dateianhänge</target>
</segment>
</unit>
<unit id="jEr4cP1" name="assembly.filter.dbId">
<segment state="translated">
<source>assembly.filter.dbId</source>
<target>Datenbank ID</target>
</segment>
</unit>
<unit id="leRwbN3" name="assembly.filter.ipn">
<segment state="translated">
<source>assembly.filter.ipn</source>
<target>Internal Part Number (IPN)</target>
</segment>
</unit>
<unit id="jR5Cxy1" name="assembly.filter.name">
<segment state="translated">
<source>assembly.filter.name</source>
<target>Name</target>
</segment>
</unit>
<unit id="LiW5CM3" name="assembly.filter.description">
<segment state="translated">
<source>assembly.filter.description</source>
<target>Beschreibung</target>
</segment>
</unit>
<unit id="kix5dMf" name="assembly.filter.comment">
<segment state="translated">
<source>assembly.filter.comment</source>
<target>Notizen</target>
</segment>
</unit>
<unit id="ux2Ws9p" name="assembly.filter.attachments_count">
<segment state="translated">
<source>assembly.filter.attachments_count</source>
<target>Anzahl der Anhänge</target>
</segment>
</unit>
<unit id="su8izLb" name="assembly.filter.attachmentName">
<segment state="translated">
<source>assembly.filter.attachmentName</source>
<target>Name des Anhangs</target>
</segment>
</unit>
<unit id="5cDe9Ta" name="assemblies.create.btn">
<segment state="translated">
<source>assemblies.create.btn</source>
<target>Neue Baugruppe anlegen</target>
</segment>
</unit>
<unit id="acEe1Tb" name="assembly.table.id">
<segment state="translated">
<source>assembly.table.id</source>
<target>ID</target>
</segment>
</unit>
<unit id="7Ui1WzP" name="assembly.table.name">
<segment state="translated">
<source>assembly.table.name</source>
<target>Name</target>
</segment>
</unit>
<unit id="ieVaFEu" name="assembly.table.ipn">
<segment state="translated">
<source>assembly.table.ipn</source>
<target>IPN</target>
</segment>
</unit>
<unit id="7un9oeW" name="assembly.table.description">
<segment state="translated">
<source>assembly.table.description</source>
<target>Beschreibung</target>
</segment>
</unit>
<unit id="igaT4kQ" name="assembly.table.addedDate">
<segment state="translated">
<source>assembly.table.addedDate</source>
<target>Hinzugefügt</target>
</segment>
</unit>
<unit id="au8IEcW" name="assembly.table.lastModified">
<segment state="translated">
<source>assembly.table.lastModified</source>
<target>Zuletzt bearbeitet</target>
</segment>
</unit>
<unit id="9dERbn1" name="assembly.table.edit">
<segment state="translated">
<source>assembly.table.edit</source>
<target>Ändern</target>
</segment>
</unit>
<unit id="5gTze41" name="assembly.table.edit.title">
<segment state="translated">
<source>assembly.table.edit.title</source>
<target>Baugruppe ändern</target>
</segment>
</unit>
<unit id="juTbw2C" name="assembly.table.invalid_regex">
<segment state="translated">
<source>assembly.table.invalid_regex</source>
<target>Ungültiger regulärer Ausdruck (regex)</target>
</segment>
</unit>
</file>
</xliff>

View file

@ -3423,5 +3423,131 @@
</target>
</segment>
</unit>
<unit id="uT5zcT1" name="assembly_list.all.title">
<segment state="translated">
<source>assembly_list.all.title</source>
<target>Όλες οι συναρμολογήσεις</target>
</segment>
</unit>
<unit id="8Ijh3db" name="assembly.edit.tab.common">
<segment state="translated">
<source>assembly.edit.tab.common</source>
<target>Γενικά</target>
</segment>
</unit>
<unit id="jTnEypG" name="assembly.edit.tab.advanced">
<segment state="translated">
<source>assembly.edit.tab.advanced</source>
<target>Προηγμένες επιλογές</target>
</segment>
</unit>
<unit id="7uhe3gC" name="assembly.edit.tab.attachments">
<segment state="translated">
<source>assembly.edit.tab.attachments</source>
<target>Συνημμένα</target>
</segment>
</unit>
<unit id="jEr4cP1" name="assembly.filter.dbId">
<segment state="translated">
<source>assembly.filter.dbId</source>
<target>Αναγνωριστικό βάσης δεδομένων</target>
</segment>
</unit>
<unit id="leRwbN3" name="assembly.filter.ipn">
<segment state="translated">
<source>assembly.filter.ipn</source>
<target>Εσωτερικός αριθμός εξαρτήματος (IPN)</target>
</segment>
</unit>
<unit id="jR5Cxy1" name="assembly.filter.name">
<segment state="translated">
<source>assembly.filter.name</source>
<target>Όνομα</target>
</segment>
</unit>
<unit id="LiW5CM3" name="assembly.filter.description">
<segment state="translated">
<source>assembly.filter.description</source>
<target>Περιγραφή</target>
</segment>
</unit>
<unit id="kix5dMf" name="assembly.filter.comment">
<segment state="translated">
<source>assembly.filter.comment</source>
<target>Σχόλια</target>
</segment>
</unit>
<unit id="ux2Ws9p" name="assembly.filter.attachments_count">
<segment state="translated">
<source>assembly.filter.attachments_count</source>
<target>Αριθμός συνημμένων</target>
</segment>
</unit>
<unit id="su8izLb" name="assembly.filter.attachmentName">
<segment state="translated">
<source>assembly.filter.attachmentName</source>
<target>Όνομα συνημμένου</target>
</segment>
</unit>
<unit id="5cDe9Ta" name="assemblies.create.btn">
<segment state="translated">
<source>assemblies.create.btn</source>
<target>Δημιουργία νέας συναρμολόγησης</target>
</segment>
</unit>
<unit id="acEe1Tb" name="assembly.table.id">
<segment state="translated">
<source>assembly.table.id</source>
<target>Αναγνωριστικό</target>
</segment>
</unit>
<unit id="7Ui1WzP" name="assembly.table.name">
<segment state="translated">
<source>assembly.table.name</source>
<target>Όνομα</target>
</segment>
</unit>
<unit id="ieVaFEu" name="assembly.table.ipn">
<segment state="translated">
<source>assembly.table.ipn</source>
<target>IPN</target>
</segment>
</unit>
<unit id="7un9oeW" name="assembly.table.description">
<segment state="translated">
<source>assembly.table.description</source>
<target>Περιγραφή</target>
</segment>
</unit>
<unit id="igaT4kQ" name="assembly.table.addedDate">
<segment state="translated">
<source>assembly.table.addedDate</source>
<target>Προστέθηκε</target>
</segment>
</unit>
<unit id="au8IEcW" name="assembly.table.lastModified">
<segment state="translated">
<source>assembly.table.lastModified</source>
<target>Τελευταία επεξεργασία</target>
</segment>
</unit>
<unit id="9dERbn1" name="assembly.table.edit">
<segment state="translated">
<source>assembly.table.edit</source>
<target>Επεξεργασία</target>
</segment>
</unit>
<unit id="5gTze41" name="assembly.table.edit.title">
<segment state="translated">
<source>assembly.table.edit.title</source>
<target>Επεξεργασία συναρμολόγησης</target>
</segment>
</unit>
<unit id="juTbw2C" name="assembly.table.invalid_regex">
<segment state="translated">
<source>assembly.table.invalid_regex</source>
<target>Μη έγκυρη κανονική έκφραση (regex)</target>
</segment>
</unit>
</file>
</xliff>

View file

@ -13778,5 +13778,131 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S
<target>%name% (Tu sinónimo: %synonym%)</target>
</segment>
</unit>
<unit id="uT5zcT1" name="assembly_list.all.title">
<segment state="translated">
<source>assembly_list.all.title</source>
<target>Todas las ensamblajes</target>
</segment>
</unit>
<unit id="8Ijh3db" name="assembly.edit.tab.common">
<segment state="translated">
<source>assembly.edit.tab.common</source>
<target>General</target>
</segment>
</unit>
<unit id="jTnEypG" name="assembly.edit.tab.advanced">
<segment state="translated">
<source>assembly.edit.tab.advanced</source>
<target>Opciones avanzadas</target>
</segment>
</unit>
<unit id="7uhe3gC" name="assembly.edit.tab.attachments">
<segment state="translated">
<source>assembly.edit.tab.attachments</source>
<target>Archivos adjuntos</target>
</segment>
</unit>
<unit id="jEr4cP1" name="assembly.filter.dbId">
<segment state="translated">
<source>assembly.filter.dbId</source>
<target>ID de la base de datos</target>
</segment>
</unit>
<unit id="leRwbN3" name="assembly.filter.ipn">
<segment state="translated">
<source>assembly.filter.ipn</source>
<target>Número interno de pieza (IPN)</target>
</segment>
</unit>
<unit id="jR5Cxy1" name="assembly.filter.name">
<segment state="translated">
<source>assembly.filter.name</source>
<target>Nombre</target>
</segment>
</unit>
<unit id="LiW5CM3" name="assembly.filter.description">
<segment state="translated">
<source>assembly.filter.description</source>
<target>Descripción</target>
</segment>
</unit>
<unit id="kix5dMf" name="assembly.filter.comment">
<segment state="translated">
<source>assembly.filter.comment</source>
<target>Comentarios</target>
</segment>
</unit>
<unit id="ux2Ws9p" name="assembly.filter.attachments_count">
<segment state="translated">
<source>assembly.filter.attachments_count</source>
<target>Cantidad de adjuntos</target>
</segment>
</unit>
<unit id="su8izLb" name="assembly.filter.attachmentName">
<segment state="translated">
<source>assembly.filter.attachmentName</source>
<target>Nombre del adjunto</target>
</segment>
</unit>
<unit id="5cDe9Ta" name="assemblies.create.btn">
<segment state="translated">
<source>assemblies.create.btn</source>
<target>Crear una nueva ensamblaje</target>
</segment>
</unit>
<unit id="acEe1Tb" name="assembly.table.id">
<segment state="translated">
<source>assembly.table.id</source>
<target>ID</target>
</segment>
</unit>
<unit id="7Ui1WzP" name="assembly.table.name">
<segment state="translated">
<source>assembly.table.name</source>
<target>Nombre</target>
</segment>
</unit>
<unit id="ieVaFEu" name="assembly.table.ipn">
<segment state="translated">
<source>assembly.table.ipn</source>
<target>IPN</target>
</segment>
</unit>
<unit id="7un9oeW" name="assembly.table.description">
<segment state="translated">
<source>assembly.table.description</source>
<target>Descripción</target>
</segment>
</unit>
<unit id="igaT4kQ" name="assembly.table.addedDate">
<segment state="translated">
<source>assembly.table.addedDate</source>
<target>Añadido</target>
</segment>
</unit>
<unit id="au8IEcW" name="assembly.table.lastModified">
<segment state="translated">
<source>assembly.table.lastModified</source>
<target>Última modificación</target>
</segment>
</unit>
<unit id="9dERbn1" name="assembly.table.edit">
<segment state="translated">
<source>assembly.table.edit</source>
<target>Editar</target>
</segment>
</unit>
<unit id="5gTze41" name="assembly.table.edit.title">
<segment state="translated">
<source>assembly.table.edit.title</source>
<target>Editar ensamblaje</target>
</segment>
</unit>
<unit id="juTbw2C" name="assembly.table.invalid_regex">
<segment state="translated">
<source>assembly.table.invalid_regex</source>
<target>Expresión regular no válida (regex)</target>
</segment>
</unit>
</file>
</xliff>

View file

@ -13733,5 +13733,131 @@
<target>%name% (Ваш синоним: %synonym%)</target>
</segment>
</unit>
<unit id="uT5zcT1" name="assembly_list.all.title">
<segment state="translated">
<source>assembly_list.all.title</source>
<target>Все сборки</target>
</segment>
</unit>
<unit id="8Ijh3db" name="assembly.edit.tab.common">
<segment state="translated">
<source>assembly.edit.tab.common</source>
<target>Общие</target>
</segment>
</unit>
<unit id="jTnEypG" name="assembly.edit.tab.advanced">
<segment state="translated">
<source>assembly.edit.tab.advanced</source>
<target>Дополнительные параметры</target>
</segment>
</unit>
<unit id="7uhe3gC" name="assembly.edit.tab.attachments">
<segment state="translated">
<source>assembly.edit.tab.attachments</source>
<target>Вложения</target>
</segment>
</unit>
<unit id="jEr4cP1" name="assembly.filter.dbId">
<segment state="translated">
<source>assembly.filter.dbId</source>
<target>ID базы данных</target>
</segment>
</unit>
<unit id="leRwbN3" name="assembly.filter.ipn">
<segment state="translated">
<source>assembly.filter.ipn</source>
<target>Внутренний номер детали (IPN)</target>
</segment>
</unit>
<unit id="jR5Cxy1" name="assembly.filter.name">
<segment state="translated">
<source>assembly.filter.name</source>
<target>Название</target>
</segment>
</unit>
<unit id="LiW5CM3" name="assembly.filter.description">
<segment state="translated">
<source>assembly.filter.description</source>
<target>Описание</target>
</segment>
</unit>
<unit id="kix5dMf" name="assembly.filter.comment">
<segment state="translated">
<source>assembly.filter.comment</source>
<target>Комментарии</target>
</segment>
</unit>
<unit id="ux2Ws9p" name="assembly.filter.attachments_count">
<segment state="translated">
<source>assembly.filter.attachments_count</source>
<target>Количество вложений</target>
</segment>
</unit>
<unit id="su8izLb" name="assembly.filter.attachmentName">
<segment state="translated">
<source>assembly.filter.attachmentName</source>
<target>Имя вложения</target>
</segment>
</unit>
<unit id="5cDe9Ta" name="assemblies.create.btn">
<segment state="translated">
<source>assemblies.create.btn</source>
<target>Создать новую сборку</target>
</segment>
</unit>
<unit id="acEe1Tb" name="assembly.table.id">
<segment state="translated">
<source>assembly.table.id</source>
<target>ID</target>
</segment>
</unit>
<unit id="7Ui1WzP" name="assembly.table.name">
<segment state="translated">
<source>assembly.table.name</source>
<target>Название</target>
</segment>
</unit>
<unit id="ieVaFEu" name="assembly.table.ipn">
<segment state="translated">
<source>assembly.table.ipn</source>
<target>IPN</target>
</segment>
</unit>
<unit id="7un9oeW" name="assembly.table.description">
<segment state="translated">
<source>assembly.table.description</source>
<target>Описание</target>
</segment>
</unit>
<unit id="igaT4kQ" name="assembly.table.addedDate">
<segment state="translated">
<source>assembly.table.addedDate</source>
<target>Добавлено</target>
</segment>
</unit>
<unit id="au8IEcW" name="assembly.table.lastModified">
<segment state="translated">
<source>assembly.table.lastModified</source>
<target>Последнее изменение</target>
</segment>
</unit>
<unit id="9dERbn1" name="assembly.table.edit">
<segment state="translated">
<source>assembly.table.edit</source>
<target>Редактировать</target>
</segment>
</unit>
<unit id="5gTze41" name="assembly.table.edit.title">
<segment state="translated">
<source>assembly.table.edit.title</source>
<target>Редактировать сборку</target>
</segment>
</unit>
<unit id="juTbw2C" name="assembly.table.invalid_regex">
<segment state="translated">
<source>assembly.table.invalid_regex</source>
<target>Неверное регулярное выражение (regex)</target>
</segment>
</unit>
</file>
</xliff>