diff --git a/assets/controllers/elements/assembly_select_controller.js b/assets/controllers/elements/assembly_select_controller.js
new file mode 100644
index 00000000..98702d41
--- /dev/null
+++ b/assets/controllers/elements/assembly_select_controller.js
@@ -0,0 +1,70 @@
+import {Controller} from "@hotwired/stimulus";
+
+import "tom-select/dist/css/tom-select.bootstrap5.css";
+import '../../css/components/tom-select_extensions.css';
+import TomSelect from "tom-select";
+import {marked} from "marked";
+
+export default class extends Controller {
+ _tomSelect;
+
+ connect() {
+
+ let settings = {
+ allowEmptyOption: true,
+ plugins: ['dropdown_input', 'clear_button'],
+ searchField: ["name", "description", "category", "footprint"],
+ valueField: "id",
+ labelField: "name",
+ preload: "focus",
+ render: {
+ item: (data, escape) => {
+ return '' + (data.image ? "" : "") + escape(data.name) + '';
+ },
+ option: (data, escape) => {
+ if(data.text) {
+ return '' + escape(data.text) + '';
+ }
+
+ let tmp = '
' + marked.parseInline(data.description) + '
' : "") + + (data.category ? '' + escape(data.category) : ""); + + return tmp + '
' + + '{% trans %}assembly.edit.associated_build.hint{% endtrans %}
+{% trans %}project.edit.associated_build.hint{% endtrans %}
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/build/_form.html.twig b/templates/assemblies/build/_form.html.twig new file mode 100644 index 00000000..0123ab01 --- /dev/null +++ b/templates/assemblies/build/_form.html.twig @@ -0,0 +1,88 @@ +{% import "helper.twig" as helper %} + +{{ form_start(form) }} + +|
+
+
+
+ |
+ {% trans %}part.table.name{% endtrans %} | +{% trans %}assembly.bom.mountnames{% endtrans %} | +{% trans %}assembly.build.required_qty{% endtrans %} | +
|---|---|---|---|
|
+
+
+ {#
+ |
+ + {% if bom_entry.part %} + {{ bom_entry.part.name }} {% if bom_entry.name %}({{ bom_entry.name }}){% endif %} + {% else %} + {{ bom_entry.name }} + {% endif %} + | ++ {% for tag in bom_entry.mountnames|split(',') %} + {{ tag | trim }} + {% endfor %} + | ++ {{ build_request.neededAmountForBOMEntry(bom_entry) | format_amount(bom_entry.part.partUnit ?? null) }} {% trans %}assembly.builds.needed{% endtrans %} + (= {{ number_of_builds }} x {{ bom_entry.quantity | format_amount(bom_entry.part.partUnit ?? null) }}) + | +
|
+ {% set lots = build_request.partLotsForBOMEntry(bom_entry) %}
+ {% if lots is not null %}
+ {% for lot in lots %}
+ {# @var lot \App\Entity\Parts\PartLot #}
+
+
+
+ {% endfor %}
+ {% endif %}
+
+ {{ form_errors(form["lot_"~lot.id]) }}
+ {{ form_widget(form["lot_"~lot.id]) }}
+
+
+ / {{ lot.amount | format_amount(lot.part.partUnit) }} {% trans %}assembly.builds.stocked{% endtrans %}
+
+ |
+ |||
{% trans %}assembly.build.help{% endtrans %}
+ + {% include 'assemblies/build/_form.html.twig' %} + + +{% endblock %} \ No newline at end of file diff --git a/templates/assemblies/import_bom.html.twig b/templates/assemblies/import_bom.html.twig new file mode 100644 index 00000000..53168b43 --- /dev/null +++ b/templates/assemblies/import_bom.html.twig @@ -0,0 +1,60 @@ +{% extends "main_card.html.twig" %} + +{% block title %}{% trans %}assembly.import_bom{% endtrans %}{% endblock %} + +{% block before_card %} + {% if errors %} +{{ jsonTemplate|json_encode(constant('JSON_PRETTY_PRINT') b-or constant('JSON_UNESCAPED_UNICODE')) }}
+
+ {{ 'assembly.bom_import.template.json.table'|trans|raw }}
+ Id;Designator;Package;Quantity;Designation;Supplier and ref+ {{ 'assembly.bom_import.template.kicad_pcbnew.exptected_columns.note'|trans|raw }} + + {{ 'assembly.bom_import.template.json.table'|trans|raw }} +
{% trans %}assembly.builds.no_stocked_builds{% endtrans %}: {{ assembly.buildPart.amountSum }}
+{% endif %} \ 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..495072b8 --- /dev/null +++ b/templates/assemblies/info/_info.html.twig @@ -0,0 +1,77 @@ +{% import "helper.twig" as helper %} + ++
| {% trans %}name.label{% endtrans %} | +{% trans %}description.label{% endtrans %} | +# {% trans %}assembly.info.bom_entries_count{% endtrans %} | +# {% trans %}assembly.info.sub_assemblies_count{% endtrans %} | +
|---|---|---|---|
| {# Name #} + {{ subassembly.name }} + | +{# Description #} + {{ subassembly.description | format_markdown }} + | ++ {{ subassembly.bomEntries | length }} + | ++ {{ subassembly.children | length }} + | +
| {# expand button #} + | {% trans %}assembly.bom.quantity{% endtrans %} | +{% trans %}assembly.bom.part{% endtrans %} | +{% trans %}assembly.bom.name{% endtrans %} | +{# Remove button #} + |
|---|