diff --git a/assets/js/lib/datatables.js b/assets/js/lib/datatables.js index 67bab02d..7c82439c 100644 --- a/assets/js/lib/datatables.js +++ b/assets/js/lib/datatables.js @@ -13,11 +13,16 @@ * Initializes the datatable dynamically. */ $.fn.initDataTables = function(config, options) { - //Update default used url, so it reflects the current location (useful on single side apps) //CHANGED jbtronics: Preserve the get parameters (needed so we can pass additional params to query) $.fn.initDataTables.defaults.url = window.location.origin + window.location.pathname + window.location.search; + $.fn.dataTable.ext.errMode = function(settings, helpPage, message) { + if (message.includes('ColReorder')) { + console.warn('ColReorder does not fit the number of columns', message); + } + }; + var root = this, config = $.extend({}, $.fn.initDataTables.defaults, config), state = '' @@ -105,7 +110,6 @@ } } - root.html(data.template); dt = $('table', root).DataTable(dtOpts); if (config.state !== 'none') { diff --git a/migrations/Version20250304154507.php b/migrations/Version20250304154507.php index 4f7fed2f..8a406b27 100644 --- a/migrations/Version20250304154507.php +++ b/migrations/Version20250304154507.php @@ -18,7 +18,7 @@ final class Version20250304154507 extends AbstractMultiPlatformMigration public function mySQLUp(Schema $schema): void { $this->addSql(<<<'SQL' - ALTER TABLE parts ADD built_assembly_id INT DEFAULT NULL + ALTER TABLE parts ADD built_assembly_id INT DEFAULT NULL AFTER build_project_id SQL); $this->addSql(<<<'SQL' ALTER TABLE parts ADD CONSTRAINT FK_6940A7FECC660B3C FOREIGN KEY (built_assembly_id) REFERENCES assemblies (id) diff --git a/src/DataTables/AssemblyBomEntriesDataTable.php b/src/DataTables/AssemblyBomEntriesDataTable.php index fed6850f..b2c3e118 100644 --- a/src/DataTables/AssemblyBomEntriesDataTable.php +++ b/src/DataTables/AssemblyBomEntriesDataTable.php @@ -127,6 +127,8 @@ class AssemblyBomEntriesDataTable implements DataTableTypeInterface 'render' => function ($value, AssemblyBOMEntry $context) { if($context->getPart() instanceof Part) { return $context->getPart()->getIpn(); + } elseif($context->getReferencedAssembly() instanceof Assembly) { + return $context->getReferencedAssembly()->getIpn(); } return ''; diff --git a/src/Entity/AssemblySystem/AssemblyBOMEntry.php b/src/Entity/AssemblySystem/AssemblyBOMEntry.php index 6a3e82d3..8a4cdbc2 100644 --- a/src/Entity/AssemblySystem/AssemblyBOMEntry.php +++ b/src/Entity/AssemblySystem/AssemblyBOMEntry.php @@ -106,7 +106,7 @@ class AssemblyBOMEntry extends AbstractDBElement implements UniqueValidatableInt /** * @var string|null An optional name describing this BOM entry (useful for non-part entries) */ - #[Assert\Expression('this.getPart() !== null or this.getName() !== null', message: 'validator.assembly.bom_entry.name_or_part_needed')] + #[Assert\Expression('this.getPart() !== null or this.getReferencedAssembly() !== null or this.getName() !== null', message: 'validator.assembly.bom_entry.name_or_part_needed')] #[ORM\Column(type: Types::STRING, nullable: true)] #[Groups(['bom_entry:read', 'bom_entry:write', 'import', 'simple', 'extended', 'full'])] protected ?string $name = null; @@ -206,7 +206,7 @@ class AssemblyBOMEntry extends AbstractDBElement implements UniqueValidatableInt */ public function getName(): ?string { - return $this->name; + return trim($this->name ?? '') === '' ? null : $this->name; } /** @@ -214,7 +214,7 @@ class AssemblyBOMEntry extends AbstractDBElement implements UniqueValidatableInt */ public function setName(?string $name): AssemblyBOMEntry { - $this->name = $name; + $this->name = trim($name ?? '') === '' ? null : $name; return $this; } diff --git a/templates/form/permission_layout.html.twig b/templates/form/permission_layout.html.twig index 896a2def..dcceae33 100644 --- a/templates/form/permission_layout.html.twig +++ b/templates/form/permission_layout.html.twig @@ -7,15 +7,15 @@