+ {% if path is defined and 'assembly' in path %}
+
+
+
+
+
+
+ {% else %}
+
+
+
+
+
+
+
+ {% endif %}
+
-
\ No newline at end of file
+
diff --git a/templates/admin/assembly_admin.html.twig b/templates/admin/assembly_admin.html.twig
new file mode 100644
index 00000000..fe015b3b
--- /dev/null
+++ b/templates/admin/assembly_admin.html.twig
@@ -0,0 +1,48 @@
+{% extends "admin/base_admin.html.twig" %}
+
+{# @var entity App\Entity\AssemblySystem\Assembly #}
+
+{% block card_title %}
+
{% trans %}assembly.caption{% endtrans %}
+{% endblock %}
+
+{% block edit_title %}
+ {% trans %}assembly.edit{% endtrans %}: {{ entity.name }}
+{% endblock %}
+
+{% block new_title %}
+ {% trans %}assembly.new{% endtrans %}
+{% endblock %}
+
+{% block additional_pills %}
+
{% trans %}assembly_bom_entry.labelp{% endtrans %}
+{% endblock %}
+
+{% block quick_links %}
+
+{% endblock %}
+
+{% block additional_controls %}
+ {{ form_row(form.description) }}
+ {{ form_row(form.status) }}
+ {{ form_row(form.ipn) }}
+{% endblock %}
+
+{% block additional_panes %}
+
+{% endblock %}
diff --git a/templates/assemblies/add_parts.html.twig b/templates/assemblies/add_parts.html.twig
new file mode 100644
index 00000000..d8d8e657
--- /dev/null
+++ b/templates/assemblies/add_parts.html.twig
@@ -0,0 +1,22 @@
+{% extends "main_card.html.twig" %}
+
+{% block title %}{% trans %}assembly.add_parts_to_assembly{% endtrans %}{% endblock %}
+
+{% block card_title %}
+
+ {% trans %}assembly.add_parts_to_assembly{% endtrans %}{% if assembly %}:
{{ assembly.name }}{% endif %}
+{% endblock %}
+
+{% block card_content %}
+
+ {{ form_start(form) }}
+
+ {{ form_row(form.assembly) }}
+ {% form_theme form.bom_entries with ['form/collection_types_layout_assembly.html.twig'] %}
+ {{ form_widget(form.bom_entries) }}
+
+ {{ form_row(form.submit) }}
+
+ {{ form_end(form) }}
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/assemblies/export_bom_pdf.html.twig b/templates/assemblies/export_bom_pdf.html.twig
new file mode 100644
index 00000000..15bf5d88
--- /dev/null
+++ b/templates/assemblies/export_bom_pdf.html.twig
@@ -0,0 +1,103 @@
+
+
+
+
Assembly Hierarchy
+
+
+
+
+
+
Table of Contents
+
+
+
+ | # |
+ Assembly Name |
+ IPN |
+ Section |
+
+
+
+ {% for assembly in assemblies %}
+
+ | {{ loop.index }} |
+ Assembly: {{ assembly.name }} |
+ {% if assembly.ipn != '' %}{{ assembly.ipn }}{% else %}-{% endif %} |
+ {{ loop.index + 1 }} |
+
+ {% endfor %}
+
+
+
+
+
+{% for assembly in assemblies %}
+
+
+
+
+ | Name |
+ IPN |
+ Quantity |
+ Multiplier |
+ Effective Quantity |
+
+
+
+ {% for part in assembly.parts %}
+
+ | {{ part.name }} |
+ {{ part.ipn }} |
+ {{ part.quantity }} |
+ {% if assembly.multiplier %}{{ assembly.multiplier }}{% else %}-{% endif %} |
+ {{ part.effectiveQuantity }} |
+
+ {% endfor %}
+ {% for other in assembly.others %}
+
+ | {{ other.name }} |
+ {{ other.ipn }} |
+ {{ other.quantity }} |
+ {{ other.multiplier }} |
+ {{ other.effectiveQuantity }} |
+
+ {% endfor %}
+ {% for referencedAssembly in assembly.referencedAssemblies %}
+
+ | {{ referencedAssembly.name }} |
+ {{ referencedAssembly.ipn }} |
+ {{ referencedAssembly.quantity }} |
+ |
+ {{ referencedAssembly.quantity }} |
+
+ {% endfor %}
+
+
+
+ {% for refAssembly in assembly.referencedAssemblies %}
+ {% include 'assemblies/export_bom_referenced_assembly_pdf.html.twig' with {'assembly': refAssembly} only %}
+ {% endfor %}
+
+ {% if not loop.last %}
+
+ {% endif %}
+
+
+{% endfor %}
+
+
diff --git a/templates/assemblies/export_bom_referenced_assembly_pdf.html.twig b/templates/assemblies/export_bom_referenced_assembly_pdf.html.twig
new file mode 100644
index 00000000..b5a1324d
--- /dev/null
+++ b/templates/assemblies/export_bom_referenced_assembly_pdf.html.twig
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+ | Type |
+ Name |
+ IPN |
+ Quantity |
+ Multiplier |
+ Effective Quantity |
+
+
+
+ {% for part in assembly.parts %}
+
+ | Part |
+ {{ part.name }} |
+ {{ part.ipn }} |
+ {{ part.quantity }} |
+ {% if assembly.multiplier %}{{ assembly.multiplier }}{% else %}-{% endif %} |
+ {{ part.effectiveQuantity }} |
+
+ {% endfor %}
+
+ {% for other in assembly.others %}
+
+ | Other |
+ {{ other.name }} |
+ - |
+ {{ other.quantity }} |
+ {{ other.multiplier }} |
+ - |
+
+ {% endfor %}
+
+ {% for referencedAssembly in assembly.referencedAssemblies %}
+
+ | Referenced assembly |
+ {{ referencedAssembly.name }} |
+ - |
+ {{ referencedAssembly.quantity }} |
+ |
+ {{ referencedAssembly.multiplier }} |
+
+ {% endfor %}
+
+
+
+
+ {% for refAssembly in assembly.referencedAssemblies %}
+ {% include 'assemblies/export_bom_referenced_assembly_pdf.html.twig' with {'assembly': refAssembly} only %}
+ {% endfor %}
+
diff --git a/templates/assemblies/import_bom.html.twig b/templates/assemblies/import_bom.html.twig
new file mode 100644
index 00000000..bfbecf8d
--- /dev/null
+++ b/templates/assemblies/import_bom.html.twig
@@ -0,0 +1,114 @@
+{% extends "main_card.html.twig" %}
+
+{% block title %}{% trans %}assembly.import_bom{% endtrans %}{% endblock %}
+
+{% block before_card %}
+ {% if validationErrors or importerErrors %}
+
+
{% trans %}parts.import.errors.title{% endtrans %}
+
+ {% if validationErrors %}
+ {% for violation in validationErrors %}
+ -
+ {{ violation.propertyPath }}:
+ {{ violation.message|trans(violation.parameters, 'validators') }}
+
+ {% endfor %}
+ {% endif %}
+
+ {% if importerErrors %}
+ {% for violation in importerErrors %}
+ -
+ {{ violation.propertyPath }}:
+ {{ violation.message|trans(violation.parameters, 'validators')|raw }}
+
+ {% endfor %}
+ {% endif %}
+
+
+ {% endif %}
+{% endblock %}
+
+{% block card_title %}
+
+ {% trans %}assembly.import_bom{% endtrans %}{% if assembly %}:
{{ assembly.name }}{% endif %}
+{% endblock %}
+
+{% block card_content %}
+ {{ form(form) }}
+{% endblock %}
+
+{% block additional_content %}
+
+
+
+
+
+
{{ jsonTemplate|json_encode(constant('JSON_PRETTY_PRINT') b-or constant('JSON_UNESCAPED_UNICODE')) }}
+
+ {{ 'assembly.bom_import.template.json.table'|trans|raw }}
+
+
+
+
+
+
+
+ {{ 'assembly.bom_import.template.csv.exptected_columns'|trans }}
+
+
quantity;name;part_id;part_mpnr;part_ipn;part_name;part_description;part_manufacturer_id;part_manufacturer_name;part_category_id;part_category_name
+
+
+ - quantity
+ - name
+ - part_id
+ - part_mpnr
+ - part_ipn
+ - part_name
+ - part_description
+ - part_manufacturer_id
+ - part_manufacturer_name
+ - part_category_id
+ - part_category_name
+
+
+ {{ 'assembly.bom_import.template.csv.table'|trans|raw }}
+
+
+
+
+
+
+
+ {{ 'assembly.bom_import.template.kicad_pcbnew.exptected_columns'|trans }}
+
Id;Designator;Package;Quantity;Designation;Supplier and ref
+
+
+ - Id
+ - Designator
+ - Package
+ - Quantity
+ - Designation
+ - Supplier and ref
+ - Note
+ - Footprint
+ - Value
+ - Footprint
+
+
+ {{ 'assembly.bom_import.template.kicad_pcbnew.exptected_columns.note'|trans|raw }}
+
+ {{ 'assembly.bom_import.template.kicad_pcbnew.table'|trans|raw }}
+
+ {{ 'assembly.bom_import.template.json.table'|trans|raw }}
+
+
+
+
+{% endblock %}
diff --git a/templates/assemblies/info/_attachments_info.html.twig b/templates/assemblies/info/_attachments_info.html.twig
new file mode 100644
index 00000000..747426c3
--- /dev/null
+++ b/templates/assemblies/info/_attachments_info.html.twig
@@ -0,0 +1,91 @@
+{% import "helper.twig" as helper %}
+
+
+
+
+ |
+ {% trans %}attachment.name{% endtrans %} |
+ {% trans %}attachment.attachment_type{% endtrans %} |
+ {% trans %}attachment.file_name{% endtrans %} |
+ {% trans %}attachment.file_size{% endtrans %} |
+ |
+
+
+
+
+
+
+ {% for attachment in assembly.attachments %}
+
+ |
+ {% import "components/attachments.macro.html.twig" as attachments %}
+ {{ attachments.attachment_icon(attachment, attachment_manager) }}
+ |
+ {{ attachment.name }} |
+ {{ attachment.attachmentType.fullPath }} |
+
+ {% if attachment.hasInternal() %}
+ {{ attachment.filename }}
+ {% endif %}
+ |
+
+ {% if not attachment.hasInternal() %}
+
+ {% trans %}attachment.external_only{% endtrans %}
+
+ {% elseif attachment_manager.internalFileExisting(attachment) %}
+
+ {{ attachment_manager.humanFileSize(attachment) }}
+
+ {% else %}
+
+ {% trans %}attachment.file_not_found{% endtrans %}
+
+ {% endif %}
+ {% if attachment.secure %}
+
+ {% trans %}attachment.secure{% endtrans %}
+
+ {% endif %}
+ {% if attachment == assembly.masterPictureAttachment %}
+
+
+ {% trans %}attachment.preview{% endtrans %}
+
+ {% endif %}
+ |
+
+ |
+
+ {% endfor %}
+
+
+
+
\ No newline at end of file
diff --git a/templates/assemblies/info/_info.html.twig b/templates/assemblies/info/_info.html.twig
new file mode 100644
index 00000000..97da3f70
--- /dev/null
+++ b/templates/assemblies/info/_info.html.twig
@@ -0,0 +1,72 @@
+{% import "helper.twig" as helper %}
+
+
+
+
+
+ {% if assembly.masterPictureAttachment %}
+
+
+
+ {% else %}
+
 }})
+ {% endif %}
+
+
+
{{ assembly.name }}
+ {# You need edit permission to use the edit button #}
+ {% if is_granted('edit', assembly) %}
+
+ {% endif %}
+
+
{{ assembly.description|format_markdown(true) }}
+
+
+
+
+
+
{# Sidebar panel with infos about last creation date, etc. #}
+
+
+ {{ helper.date_user_combination(assembly, true) }}
+
+
+
+ {{ helper.date_user_combination(assembly, false) }}
+
+
+
+
+
+ {{ helper.assemblies_status_to_badge(assembly.status) }}
+
+
+
+
+
+
+ {{ assembly.bomEntries | length }}
+ {% trans %}assembly.info.bom_entries_count{% endtrans %}
+
+
+
+ {% if assembly.children is not empty %}
+
+
+
+
+ {{ assembly.children | length }}
+ {% trans %}assembly.info.sub_assemblies_count{% endtrans %}
+
+
+
+ {% endif %}
+
+
+ {% if assembly.comment is not empty %}
+
+
{% trans %}comment.label{% endtrans %}:
+ {{ assembly.comment|format_markdown }}
+
+ {% endif %}
+
diff --git a/templates/assemblies/info/_info_card.html.twig b/templates/assemblies/info/_info_card.html.twig
new file mode 100644
index 00000000..2d0c535b
--- /dev/null
+++ b/templates/assemblies/info/_info_card.html.twig
@@ -0,0 +1,118 @@
+{% import "helper.twig" as helper %}
+{% import "label_system/dropdown_macro.html.twig" as dropdown %}
+
+{{ helper.breadcrumb_entity_link(assembly) }}
+
+
+
+
+
+
+ {% if assembly.description is not empty %}
+ {{ assembly.description|format_markdown }}
+ {% endif %}
+
+
+
+
+
+
+
+ {% if assembly.attachments is not empty %}
+
+ {% include "parts/info/_attachments_info.html.twig" with {"part": assembly} %}
+
+ {% endif %}
+
+ {% if assembly.comment is not empty %}
+
+ {% endif %}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/assemblies/info/_part.html.twig b/templates/assemblies/info/_part.html.twig
new file mode 100644
index 00000000..1fa8b90e
--- /dev/null
+++ b/templates/assemblies/info/_part.html.twig
@@ -0,0 +1,5 @@
+{% import "components/datatables.macro.html.twig" as datatables %}
+
+
+
+{{ datatables.datatable(datatable, 'elements/datatables/datatables', 'assemblies') }}
\ No newline at end of file
diff --git a/templates/assemblies/info/_subassemblies.html.twig b/templates/assemblies/info/_subassemblies.html.twig
new file mode 100644
index 00000000..243e7d33
--- /dev/null
+++ b/templates/assemblies/info/_subassemblies.html.twig
@@ -0,0 +1,28 @@
+
+
+
+ | {% trans %}name.label{% endtrans %} |
+ {% trans %}description.label{% endtrans %} |
+ # {% trans %}assembly.info.bom_entries_count{% endtrans %} |
+ # {% trans %}assembly.info.sub_assemblies_count{% endtrans %} |
+
+
+
+ {% for assembly in assembly.children %}
+
+ | {# Name #}
+ {{ assembly.name }}
+ |
+ {# Description #}
+ {{ assembly.description | format_markdown }}
+ |
+
+ {{ assembly.bomEntries | length }}
+ |
+
+ {{ assembly.children | length }}
+ |
+
+ {% endfor %}
+
+
diff --git a/templates/assemblies/info/info.html.twig b/templates/assemblies/info/info.html.twig
new file mode 100644
index 00000000..9f345b97
--- /dev/null
+++ b/templates/assemblies/info/info.html.twig
@@ -0,0 +1,135 @@
+{% extends "main_card.html.twig" %}
+{% import "helper.twig" as helper %}
+
+{% block title %}
+ {% trans %}assembly.info.title{% endtrans %}: {{ assembly.name }}
+{% endblock %}
+
+{% block before_card %}
+
+{% endblock %}
+
+{% block content %}
+ {{ helper.breadcrumb_entity_link(assembly) }}
+ {{ parent() }}
+{% endblock %}
+
+{% block card_title %}
+ {% if assembly.masterPictureAttachment is not null and attachment_manager.isFileExisting(assembly.masterPictureAttachment) %}
+
 }})
+ {% else %}
+ {{ helper.entity_icon(assembly, "me-1") }}
+ {% endif %}
+ {% trans %}assembly.info.title{% endtrans %}:
{{ assembly.name }}
+{% endblock %}
+
+{% block card_content %}
+
+
+
+ {% include "assemblies/info/_info.html.twig" %}
+
+ {% if assembly.children is not empty %}
+
+ {% include "assemblies/info/_subassemblies.html.twig" %}
+
+ {% endif %}
+
+ {% include "assemblies/info/_part.html.twig" %}
+
+
+ {% include "assemblies/info/_attachments_info.html.twig" with {"assembly": assembly} %}
+
+
+ {% for name, parameters in assembly.groupedParameters %}
+ {% if name is not empty %}
{{ name }}
{% endif %}
+ {{ helper.parameters_table(assembly.parameters) }}
+ {% endfor %}
+
+
+
+{% endblock %}
diff --git a/templates/assemblies/lists/_action_bar.html.twig b/templates/assemblies/lists/_action_bar.html.twig
new file mode 100644
index 00000000..37289812
--- /dev/null
+++ b/templates/assemblies/lists/_action_bar.html.twig
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/templates/assemblies/lists/_filter.html.twig b/templates/assemblies/lists/_filter.html.twig
new file mode 100644
index 00000000..11be7bc2
--- /dev/null
+++ b/templates/assemblies/lists/_filter.html.twig
@@ -0,0 +1,62 @@
+
\ No newline at end of file
diff --git a/templates/assemblies/lists/all_list.html.twig b/templates/assemblies/lists/all_list.html.twig
new file mode 100644
index 00000000..70d75ad4
--- /dev/null
+++ b/templates/assemblies/lists/all_list.html.twig
@@ -0,0 +1,30 @@
+{% extends "base.html.twig" %}
+
+{% block title %}
+ {% trans %}assembly_list.all.title{% endtrans %}
+{% endblock %}
+
+{% block content %}
+
+
+
+
+ {% include "assemblies/lists/_filter.html.twig" %}
+
+
+ {% include "assemblies/lists/_action_bar.html.twig" with {'url_options': {}} %}
+ {% include "assemblies/lists/data.html.twig" %}
+
+{% endblock %}
diff --git a/templates/assemblies/lists/data.html.twig b/templates/assemblies/lists/data.html.twig
new file mode 100644
index 00000000..69e13e4f
--- /dev/null
+++ b/templates/assemblies/lists/data.html.twig
@@ -0,0 +1,3 @@
+{% import "components/datatables.macro.html.twig" as datatables %}
+
+{{ datatables.partsDatatableWithForm(datatable) }}
diff --git a/templates/components/search.macro.html.twig b/templates/components/search.macro.html.twig
index a324ad35..2b892a0f 100644
--- a/templates/components/search.macro.html.twig
+++ b/templates/components/search.macro.html.twig
@@ -65,6 +65,10 @@
@@ -106,4 +110,4 @@
{{ _self.settings_drodown(is_navbar) }}
{% endif %}
-{% endmacro %}
\ No newline at end of file
+{% endmacro %}
diff --git a/templates/components/tree_macros.html.twig b/templates/components/tree_macros.html.twig
index aaa871ea..c7b8338a 100644
--- a/templates/components/tree_macros.html.twig
+++ b/templates/components/tree_macros.html.twig
@@ -9,6 +9,7 @@
['manufacturers', path('tree_manufacturer_root'), '@manufacturer@@', is_granted('@manufacturers.read') and is_granted('@parts.read'), 'manufacturer'],
['suppliers', path('tree_supplier_root'), '@supplier@@', is_granted('@suppliers.read') and is_granted('@parts.read'), 'supplier'],
['projects', path('tree_device_root'), '@project@@', is_granted('@projects.read'), 'project'],
+ ['assembly', path('tree_assembly_root'), 'assembly.labelp', is_granted('@assemblies.read'), 'assembly'],
['tools', path('tree_tools'), 'tools.label', true, 'tool'],
] %}
diff --git a/templates/form/collection_types_layout_assembly.html.twig b/templates/form/collection_types_layout_assembly.html.twig
new file mode 100644
index 00000000..1bd79bb5
--- /dev/null
+++ b/templates/form/collection_types_layout_assembly.html.twig
@@ -0,0 +1,74 @@
+{% block assembly_bom_entry_collection_widget %}
+ {% import 'components/collection_type.macro.html.twig' as collection %}
+
+
+
+
+ | {# expand button #}
+ {% trans %}assembly.bom.quantity{% endtrans %} |
+ {% trans %}assembly.bom.partOrAssembly{% endtrans %} |
+ {% trans %}assembly.bom.identifiers{% endtrans %} |
+ | {# Remove button #}
+
+
+
+
+ {% for entry in form %}
+ {{ form_widget(entry) }}
+ {% endfor %}
+
+
+
+
+
+
+{% endblock %}
+
+{% block assembly_bom_entry_widget %}
+ {% set target_id = 'expand_row-' ~ form.vars.name %}
+
+ {% import 'components/collection_type.macro.html.twig' as collection %}
+
+ |
+
+ |
+
+ {{ form_widget(form.quantity) }}
+ {{ form_errors(form.quantity) }}
+ |
+
+ {{ form_row(form.part) }}
+ {{ form_errors(form.part) }}
+ ∨
+ {{ form_widget(form.referencedAssembly) }}
+ {{ form_errors(form.referencedAssembly) }}
+ |
+
+ {{ form_row(form.name) }}
+ {{ form_errors(form.name) }}
+
+ {{ form_row(form.designator) }}
+ {{ form_errors(form.designator) }}
+ |
+
+
+ {{ form_errors(form) }}
+ |
+
+
|
+
+ |
+
+ {{ form_row(form.comment) }}
+
+ |
+
+{% endblock %}
diff --git a/templates/helper.twig b/templates/helper.twig
index 66268a96..a6ac9090 100644
--- a/templates/helper.twig
+++ b/templates/helper.twig
@@ -76,6 +76,21 @@
{% endif %}
{% endmacro %}
+{% macro assemblies_status_to_badge(status, class="badge") %}
+ {% if status is not empty %}
+ {% set color = " bg-secondary" %}
+
+ {% if status == "in_production" %}
+ {% set color = " bg-success" %}
+ {% endif %}
+
+
+
+ {{ ("assembly.status." ~ status) | trans }}
+
+ {% endif %}
+{% endmacro %}
+
{% macro structural_entity_link(entity, link_type = "list_parts") %}
{# @var entity \App\Entity\Base\StructuralDBElement #}
{% if entity %}
@@ -101,6 +116,7 @@
"category": ["fa-solid fa-tags", "category.label"],
"currency": ["fa-solid fa-coins", "currency.label"],
"device": ["fa-solid fa-archive", "project.label"],
+ "assembly": ["fa-solid fa-list", "assembly.label"],
"footprint": ["fa-solid fa-microchip", "footprint.label"],
"group": ["fa-solid fa-users", "group.label"],
"label_profile": ["fa-solid fa-qrcode", "label_profile.label"],
diff --git a/templates/parts/info/_assemblies.html.twig b/templates/parts/info/_assemblies.html.twig
new file mode 100644
index 00000000..d4996c59
--- /dev/null
+++ b/templates/parts/info/_assemblies.html.twig
@@ -0,0 +1,31 @@
+{% import "components/attachments.macro.html.twig" as attachments %}
+{% import "helper.twig" as helper %}
+
+
+
+
+ |
+ {% trans %}entity.info.name{% endtrans %} |
+ {% trans %}description.label{% endtrans %} |
+ {% trans %}assembly.bom.quantity{% endtrans %} |
+
+
+
+
+ {% for bom_entry in part.assemblyBomEntries %}
+ {# @var bom_entry App\Entity\Assembly\AssemblyBOMEntry #}
+
+ | {% if bom_entry.assembly.masterPictureAttachment is not null %}{{ attachments.attachment_icon(bom_entry.assembly.masterPictureAttachment, attachment_manager) }}{% endif %} |
+ {{ bom_entry.assembly.name }} | {# Name #}
+ {{ bom_entry.assembly.description|format_markdown }} | {# Description #}
+ {{ bom_entry.quantity | format_amount(part.partUnit) }} |
+
+ {% endfor %}
+
+
+
+
+
+ {% trans %}part.info.add_part_to_assembly{% endtrans %}
+
\ No newline at end of file
diff --git a/templates/parts/info/show_part_info.html.twig b/templates/parts/info/show_part_info.html.twig
index 96b5e209..cd7b4ce7 100644
--- a/templates/parts/info/show_part_info.html.twig
+++ b/templates/parts/info/show_part_info.html.twig
@@ -109,15 +109,20 @@
{% trans %}vendor.partinfo.history{% endtrans %}
- {% if part.projectBomEntries is not empty %}
-
-
-
- {% trans %}project.labelp{% endtrans %}
- {{ part.projectBomEntries | length }}
-
-
- {% endif %}
+
+
+
+ {% trans %}project.labelp{% endtrans %}
+ {{ part.projectBomEntries | length }}
+
+
+
+
+
+ {% trans %}assembly.labelp{% endtrans %}
+ {{ part.assemblyBomEntries | length }}
+
+
@@ -167,6 +172,10 @@
{% include "parts/info/_projects.html.twig" %}
diff --git a/templates/parts/lists/_filter.html.twig b/templates/parts/lists/_filter.html.twig
index 2fb5bff2..c3642c91 100644
--- a/templates/parts/lists/_filter.html.twig
+++ b/templates/parts/lists/_filter.html.twig
@@ -31,6 +31,11 @@
{% endif %}
+ {% if filterForm.assembly is defined %}
+
+ {% endif %}
{% if filterForm.inBulkImportJob is defined %}