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 @@