From 30b2c8b8416afae1b3432e988550ffff435f07e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 1 Dec 2023 22:47:05 +0100 Subject: [PATCH] Added forms to change EDA infos of footprints and categories --- src/Form/AdminPages/CategoryAdminForm.php | 7 ++ src/Form/AdminPages/FootprintAdminForm.php | 8 ++ src/Form/Part/EDA/EDACategoryInfoType.php | 86 +++++++++++++++++++++ src/Form/Part/EDA/EDAFootprintInfoType.php | 55 +++++++++++++ src/Form/Part/{ => EDA}/EDAPartInfoType.php | 3 +- src/Form/Part/PartBaseType.php | 12 ++- templates/admin/category_admin.html.twig | 26 +++++++ templates/admin/footprint_admin.html.twig | 15 ++++ 8 files changed, 203 insertions(+), 9 deletions(-) create mode 100644 src/Form/Part/EDA/EDACategoryInfoType.php create mode 100644 src/Form/Part/EDA/EDAFootprintInfoType.php rename src/Form/Part/{ => EDA}/EDAPartInfoType.php (98%) diff --git a/src/Form/AdminPages/CategoryAdminForm.php b/src/Form/AdminPages/CategoryAdminForm.php index 10a56646..44c1dede 100644 --- a/src/Form/AdminPages/CategoryAdminForm.php +++ b/src/Form/AdminPages/CategoryAdminForm.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Form\AdminPages; use App\Entity\Base\AbstractNamedDBElement; +use App\Form\Part\EDA\EDACategoryInfoType; use App\Form\Type\RichTextEditorType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -104,5 +105,11 @@ class CategoryAdminForm extends BaseEntityAdminForm ], 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), ]); + + //EDA info + $builder->add('eda_info', EDACategoryInfoType::class, [ + 'label' => false, + 'required' => false, + ]); } } diff --git a/src/Form/AdminPages/FootprintAdminForm.php b/src/Form/AdminPages/FootprintAdminForm.php index a01e91bc..ac28b1e4 100644 --- a/src/Form/AdminPages/FootprintAdminForm.php +++ b/src/Form/AdminPages/FootprintAdminForm.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace App\Form\AdminPages; use App\Entity\Base\AbstractNamedDBElement; +use App\Entity\EDA\EDAFootprintInfo; +use App\Form\Part\EDA\EDAFootprintInfoType; use App\Form\Type\MasterPictureAttachmentType; use Symfony\Component\Form\FormBuilderInterface; @@ -37,5 +39,11 @@ class FootprintAdminForm extends BaseEntityAdminForm 'filter' => '3d_model', 'entity' => $entity, ]); + + //EDA info + $builder->add('eda_info', EDAFootprintInfoType::class, [ + 'label' => false, + 'required' => false, + ]); } } diff --git a/src/Form/Part/EDA/EDACategoryInfoType.php b/src/Form/Part/EDA/EDACategoryInfoType.php new file mode 100644 index 00000000..30a82017 --- /dev/null +++ b/src/Form/Part/EDA/EDACategoryInfoType.php @@ -0,0 +1,86 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Form\Part\EDA; + +use App\Entity\EDA\EDACategoryInfo; +use App\Entity\EDA\EDAFootprintInfo; +use App\Form\Type\TriStateCheckboxType; +use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; + +use function Symfony\Component\Translation\t; + +class EDACategoryInfoType extends AbstractType +{ + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder + ->add('reference_prefix', TextType::class, [ + 'label' => 'eda_info.reference_prefix', + 'attr' => [ + 'placeholder' => t('eda_info.reference_prefix.placeholder'), + ] + ] + ) + ->add('invisible', TriStateCheckboxType::class, [ + 'label' => 'eda_info.invisible', + ]) + ->add('exclude_from_bom', TriStateCheckboxType::class, [ + 'label' => 'eda_info.exclude_from_bom', + 'label_attr' => [ + 'class' => 'checkbox-inline' + ] + ]) + ->add('exclude_from_board', TriStateCheckboxType::class, [ + 'label' => 'eda_info.exclude_from_board', + 'label_attr' => [ + 'class' => 'checkbox-inline' + ] + ]) + ->add('exclude_from_sim', TriStateCheckboxType::class, [ + 'label' => 'eda_info.exclude_from_sim', + 'label_attr' => [ + 'class' => 'checkbox-inline' + ] + ]) + ->add('kicad_symbol', TextType::class, [ + 'label' => 'eda_info.kicad_symbol', + 'attr' => [ + 'placeholder' => t('eda_info.kicad_symbol.placeholder'), + ] + ]) + ; + + + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => EDACategoryInfo::class, + ]); + } +} \ No newline at end of file diff --git a/src/Form/Part/EDA/EDAFootprintInfoType.php b/src/Form/Part/EDA/EDAFootprintInfoType.php new file mode 100644 index 00000000..d7d83f40 --- /dev/null +++ b/src/Form/Part/EDA/EDAFootprintInfoType.php @@ -0,0 +1,55 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Form\Part\EDA; + +use App\Entity\EDA\EDAFootprintInfo; +use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; + +use function Symfony\Component\Translation\t; + +class EDAFootprintInfoType extends AbstractType +{ + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder + ->add('kicad_footprint', TextType::class, [ + 'label' => 'eda_info.kicad_footprint', + 'attr' => [ + 'placeholder' => t('eda_info.kicad_footprint.placeholder'), + ] + ]); + + + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => EDAFootprintInfo::class, + ]); + } +} \ No newline at end of file diff --git a/src/Form/Part/EDAPartInfoType.php b/src/Form/Part/EDA/EDAPartInfoType.php similarity index 98% rename from src/Form/Part/EDAPartInfoType.php rename to src/Form/Part/EDA/EDAPartInfoType.php index 6b3ceea8..6115e2aa 100644 --- a/src/Form/Part/EDAPartInfoType.php +++ b/src/Form/Part/EDA/EDAPartInfoType.php @@ -21,10 +21,9 @@ declare(strict_types=1); -namespace App\Form\Part; +namespace App\Form\Part\EDA; use App\Entity\EDA\EDAPartInfo; -use App\Entity\Parts\PartAssociation; use App\Form\Type\TriStateCheckboxType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; diff --git a/src/Form/Part/PartBaseType.php b/src/Form/Part/PartBaseType.php index a36c6484..a97cafe7 100644 --- a/src/Form/Part/PartBaseType.php +++ b/src/Form/Part/PartBaseType.php @@ -22,28 +22,28 @@ declare(strict_types=1); namespace App\Form\Part; -use App\Entity\EDA\EDAPartInfo; -use App\Entity\Parts\ManufacturingStatus; -use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; -use Symfony\Bundle\SecurityBundle\Security; use App\Entity\Attachments\PartAttachment; +use App\Entity\EDA\EDAPartInfo; use App\Entity\Parameters\PartParameter; use App\Entity\Parts\Category; use App\Entity\Parts\Footprint; use App\Entity\Parts\Manufacturer; +use App\Entity\Parts\ManufacturingStatus; use App\Entity\Parts\MeasurementUnit; use App\Entity\Parts\Part; use App\Entity\PriceInformations\Orderdetail; use App\Form\AttachmentFormType; use App\Form\ParameterType; +use App\Form\Part\EDA\EDAPartInfoType; use App\Form\Type\MasterPictureAttachmentType; use App\Form\Type\RichTextEditorType; use App\Form\Type\SIUnitType; use App\Form\Type\StructuralEntityType; +use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\LogSystem\EventCommentNeededHelper; +use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; -use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\CollectionType; use Symfony\Component\Form\Extension\Core\Type\EnumType; use Symfony\Component\Form\Extension\Core\Type\ResetType; @@ -53,7 +53,6 @@ use Symfony\Component\Form\Extension\Core\Type\UrlType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Contracts\Translation\TranslatorInterface; class PartBaseType extends AbstractType { @@ -260,7 +259,6 @@ class PartBaseType extends AbstractType $builder->add('eda_info', EDAPartInfoType::class, [ 'label' => false, 'required' => false, - 'setter' => fn (Part $part, ?EDAPartInfo $x) => $part->setEdaInfo($x), ]); $builder->add('log_comment', TextType::class, [ diff --git a/templates/admin/category_admin.html.twig b/templates/admin/category_admin.html.twig index 4ba0248f..ddbf9b9b 100644 --- a/templates/admin/category_admin.html.twig +++ b/templates/admin/category_admin.html.twig @@ -7,6 +7,7 @@ {% block additional_pills %} + {% endblock %} {% block edit_title %} @@ -34,4 +35,29 @@ {{ form_row(form.default_description) }} {{ form_row(form.default_comment) }} + +
+ {{ form_row(form.eda_info.reference_prefix) }} + +
+
+ {{ form_row(form.eda_info.invisible) }} +
+
+ +
+
+ {{ form_widget(form.eda_info.exclude_from_bom) }} + {{ form_widget(form.eda_info.exclude_from_board) }} + {{ form_widget(form.eda_info.exclude_from_sim) }} +
+
+ +
+
+
{% trans %}eda_info.kicad_section.title{% endtrans %}:
+
+
+ {{ form_row(form.eda_info.kicad_symbol) }} +
{% endblock %} \ No newline at end of file diff --git a/templates/admin/footprint_admin.html.twig b/templates/admin/footprint_admin.html.twig index e4ed7713..a2c3e4af 100644 --- a/templates/admin/footprint_admin.html.twig +++ b/templates/admin/footprint_admin.html.twig @@ -19,4 +19,19 @@ {% block additional_controls %} {{ form_row(form.alternative_names) }} +{% endblock %} + +{% block additional_pills %} + +{% endblock %} + +{% block additional_panes %} +
+
+
+
{% trans %}eda_info.kicad_section.title{% endtrans %}:
+
+
+ {{ form_row(form.eda_info.kicad_footprint) }} +
{% endblock %} \ No newline at end of file