diff --git a/src/DataTables/Helpers/AssemblyDataTableHelper.php b/src/DataTables/Helpers/AssemblyDataTableHelper.php
new file mode 100644
index 00000000..dda563ea
--- /dev/null
+++ b/src/DataTables/Helpers/AssemblyDataTableHelper.php
@@ -0,0 +1,77 @@
+.
+ */
+
+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(
+ '%s%s',
+ $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(
+ '
',
+ 'Assembly image',
+ $this->attachmentURLGenerator->getThumbnailURL($preview_attachment),
+ $this->attachmentURLGenerator->getThumbnailURL($preview_attachment, 'thumbnail_md'),
+ 'hoverpic assembly-table-image',
+ $title
+ );
+ }
+}
diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf
index 16812813..4934a55a 100644
--- a/translations/messages.de.xlf
+++ b/translations/messages.de.xlf
@@ -16263,5 +16263,131 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
%name% (Ihr Synonym: %synonym%)
+
+
+ assembly_list.all.title
+ Alle Baugruppen
+
+
+
+
+ assembly.edit.tab.common
+ Allgemein
+
+
+
+
+ assembly.edit.tab.advanced
+ Erweiterte Optionen
+
+
+
+
+ assembly.edit.tab.attachments
+ Dateianhänge
+
+
+
+
+ assembly.filter.dbId
+ Datenbank ID
+
+
+
+
+ assembly.filter.ipn
+ Internal Part Number (IPN)
+
+
+
+
+ assembly.filter.name
+ Name
+
+
+
+
+ assembly.filter.description
+ Beschreibung
+
+
+
+
+ assembly.filter.comment
+ Notizen
+
+
+
+
+ assembly.filter.attachments_count
+ Anzahl der Anhänge
+
+
+
+
+ assembly.filter.attachmentName
+ Name des Anhangs
+
+
+
+
+ assemblies.create.btn
+ Neue Baugruppe anlegen
+
+
+
+
+ assembly.table.id
+ ID
+
+
+
+
+ assembly.table.name
+ Name
+
+
+
+
+ assembly.table.ipn
+ IPN
+
+
+
+
+ assembly.table.description
+ Beschreibung
+
+
+
+
+ assembly.table.addedDate
+ Hinzugefügt
+
+
+
+
+ assembly.table.lastModified
+ Zuletzt bearbeitet
+
+
+
+
+ assembly.table.edit
+ Ändern
+
+
+
+
+ assembly.table.edit.title
+ Baugruppe ändern
+
+
+
+
+ assembly.table.invalid_regex
+ Ungültiger regulärer Ausdruck (regex)
+
+
diff --git a/translations/messages.el.xlf b/translations/messages.el.xlf
index 7d345fbd..e705db48 100644
--- a/translations/messages.el.xlf
+++ b/translations/messages.el.xlf
@@ -3423,5 +3423,131 @@
+
+
+ assembly_list.all.title
+ Όλες οι συναρμολογήσεις
+
+
+
+
+ assembly.edit.tab.common
+ Γενικά
+
+
+
+
+ assembly.edit.tab.advanced
+ Προηγμένες επιλογές
+
+
+
+
+ assembly.edit.tab.attachments
+ Συνημμένα
+
+
+
+
+ assembly.filter.dbId
+ Αναγνωριστικό βάσης δεδομένων
+
+
+
+
+ assembly.filter.ipn
+ Εσωτερικός αριθμός εξαρτήματος (IPN)
+
+
+
+
+ assembly.filter.name
+ Όνομα
+
+
+
+
+ assembly.filter.description
+ Περιγραφή
+
+
+
+
+ assembly.filter.comment
+ Σχόλια
+
+
+
+
+ assembly.filter.attachments_count
+ Αριθμός συνημμένων
+
+
+
+
+ assembly.filter.attachmentName
+ Όνομα συνημμένου
+
+
+
+
+ assemblies.create.btn
+ Δημιουργία νέας συναρμολόγησης
+
+
+
+
+ assembly.table.id
+ Αναγνωριστικό
+
+
+
+
+ assembly.table.name
+ Όνομα
+
+
+
+
+ assembly.table.ipn
+ IPN
+
+
+
+
+ assembly.table.description
+ Περιγραφή
+
+
+
+
+ assembly.table.addedDate
+ Προστέθηκε
+
+
+
+
+ assembly.table.lastModified
+ Τελευταία επεξεργασία
+
+
+
+
+ assembly.table.edit
+ Επεξεργασία
+
+
+
+
+ assembly.table.edit.title
+ Επεξεργασία συναρμολόγησης
+
+
+
+
+ assembly.table.invalid_regex
+ Μη έγκυρη κανονική έκφραση (regex)
+
+
diff --git a/translations/messages.es.xlf b/translations/messages.es.xlf
index 999fd71a..682a88a3 100644
--- a/translations/messages.es.xlf
+++ b/translations/messages.es.xlf
@@ -13778,5 +13778,131 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S
%name% (Tu sinónimo: %synonym%)
+
+
+ assembly_list.all.title
+ Todas las ensamblajes
+
+
+
+
+ assembly.edit.tab.common
+ General
+
+
+
+
+ assembly.edit.tab.advanced
+ Opciones avanzadas
+
+
+
+
+ assembly.edit.tab.attachments
+ Archivos adjuntos
+
+
+
+
+ assembly.filter.dbId
+ ID de la base de datos
+
+
+
+
+ assembly.filter.ipn
+ Número interno de pieza (IPN)
+
+
+
+
+ assembly.filter.name
+ Nombre
+
+
+
+
+ assembly.filter.description
+ Descripción
+
+
+
+
+ assembly.filter.comment
+ Comentarios
+
+
+
+
+ assembly.filter.attachments_count
+ Cantidad de adjuntos
+
+
+
+
+ assembly.filter.attachmentName
+ Nombre del adjunto
+
+
+
+
+ assemblies.create.btn
+ Crear una nueva ensamblaje
+
+
+
+
+ assembly.table.id
+ ID
+
+
+
+
+ assembly.table.name
+ Nombre
+
+
+
+
+ assembly.table.ipn
+ IPN
+
+
+
+
+ assembly.table.description
+ Descripción
+
+
+
+
+ assembly.table.addedDate
+ Añadido
+
+
+
+
+ assembly.table.lastModified
+ Última modificación
+
+
+
+
+ assembly.table.edit
+ Editar
+
+
+
+
+ assembly.table.edit.title
+ Editar ensamblaje
+
+
+
+
+ assembly.table.invalid_regex
+ Expresión regular no válida (regex)
+
+
diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf
index 7ede4235..991230b2 100644
--- a/translations/messages.ru.xlf
+++ b/translations/messages.ru.xlf
@@ -13733,5 +13733,131 @@
%name% (Ваш синоним: %synonym%)
+
+
+ assembly_list.all.title
+ Все сборки
+
+
+
+
+ assembly.edit.tab.common
+ Общие
+
+
+
+
+ assembly.edit.tab.advanced
+ Дополнительные параметры
+
+
+
+
+ assembly.edit.tab.attachments
+ Вложения
+
+
+
+
+ assembly.filter.dbId
+ ID базы данных
+
+
+
+
+ assembly.filter.ipn
+ Внутренний номер детали (IPN)
+
+
+
+
+ assembly.filter.name
+ Название
+
+
+
+
+ assembly.filter.description
+ Описание
+
+
+
+
+ assembly.filter.comment
+ Комментарии
+
+
+
+
+ assembly.filter.attachments_count
+ Количество вложений
+
+
+
+
+ assembly.filter.attachmentName
+ Имя вложения
+
+
+
+
+ assemblies.create.btn
+ Создать новую сборку
+
+
+
+
+ assembly.table.id
+ ID
+
+
+
+
+ assembly.table.name
+ Название
+
+
+
+
+ assembly.table.ipn
+ IPN
+
+
+
+
+ assembly.table.description
+ Описание
+
+
+
+
+ assembly.table.addedDate
+ Добавлено
+
+
+
+
+ assembly.table.lastModified
+ Последнее изменение
+
+
+
+
+ assembly.table.edit
+ Редактировать
+
+
+
+
+ assembly.table.edit.title
+ Редактировать сборку
+
+
+
+
+ assembly.table.invalid_regex
+ Неверное регулярное выражение (regex)
+
+