diff --git a/VERSION b/VERSION
index 7ec1d6db..e9307ca5 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.1.0
+2.0.2
diff --git a/assets/controllers/elements/datatables/parts_controller.js b/assets/controllers/elements/datatables/parts_controller.js
index c43fa276..1fe11a20 100644
--- a/assets/controllers/elements/datatables/parts_controller.js
+++ b/assets/controllers/elements/datatables/parts_controller.js
@@ -45,10 +45,8 @@ export default class extends DatatablesController {
//Hide/Unhide panel with the selection tools
if (count > 0) {
selectPanel.classList.remove('d-none');
- selectPanel.classList.add('sticky-select-bar');
} else {
selectPanel.classList.add('d-none');
- selectPanel.classList.remove('sticky-select-bar');
}
//Update selection count text
diff --git a/assets/css/app/images.css b/assets/css/app/images.css
index 0212a85b..214776e7 100644
--- a/assets/css/app/images.css
+++ b/assets/css/app/images.css
@@ -18,8 +18,8 @@
*/
.hoverpic {
- min-width: var(--table-image-preview-min-size, 20px);
- max-width: var(--table-image-preview-max-size, 35px);
+ min-width: 10px;
+ max-width: 30px;
display: block;
margin-left: auto;
margin-right: auto;
@@ -49,7 +49,7 @@
}
.part-table-image {
- max-height: calc(1.2*var(--table-image-preview-max-size, 35px)); /** Aspect ratio of maximum 1.2 */
+ max-height: 40px;
object-fit: contain;
}
diff --git a/assets/css/app/tables.css b/assets/css/app/tables.css
index 8d4b200c..ae892f50 100644
--- a/assets/css/app/tables.css
+++ b/assets/css/app/tables.css
@@ -17,16 +17,6 @@
* along with this program. If not, see .
*/
-/****************************************
- * Action bar
- ****************************************/
-
-.sticky-select-bar {
- position: sticky;
- top: 120px;
- z-index: 1000; /* Ensure the bar is above other content */
-}
-
/****************************************
* Tables
****************************************/
@@ -119,4 +109,4 @@ Classes for Datatables export
#export-messageTop,
.export-helper{
display: none;
-}
+}
\ No newline at end of file
diff --git a/src/Controller/AttachmentFileController.php b/src/Controller/AttachmentFileController.php
index 81369e12..7917e97f 100644
--- a/src/Controller/AttachmentFileController.php
+++ b/src/Controller/AttachmentFileController.php
@@ -24,7 +24,6 @@ namespace App\Controller;
use App\DataTables\AttachmentDataTable;
use App\DataTables\Filters\AttachmentFilter;
-use App\DataTables\PartsDataTable;
use App\Entity\Attachments\Attachment;
use App\Form\Filters\AttachmentFilterType;
use App\Services\Attachments\AttachmentManager;
@@ -113,7 +112,7 @@ class AttachmentFileController extends AbstractController
$filterForm->handleRequest($formRequest);
- $table = $dataTableFactory->createFromType(AttachmentDataTable::class, ['filter' => $filter], ['pageLength' => $tableSettings->fullDefaultPageSize, 'lengthMenu' => PartsDataTable::LENGTH_MENU])
+ $table = $dataTableFactory->createFromType(AttachmentDataTable::class, ['filter' => $filter], ['pageLength' => $tableSettings->fullDefaultPageSize])
->handleRequest($request);
if ($table->isCallback()) {
diff --git a/src/Controller/InfoProviderController.php b/src/Controller/InfoProviderController.php
index dae8213e..a6e886e6 100644
--- a/src/Controller/InfoProviderController.php
+++ b/src/Controller/InfoProviderController.php
@@ -30,7 +30,6 @@ use App\Services\InfoProviderSystem\ExistingPartFinder;
use App\Services\InfoProviderSystem\PartInfoRetriever;
use App\Services\InfoProviderSystem\ProviderRegistry;
use App\Settings\AppSettings;
-use App\Settings\InfoProviderSystem\InfoProviderGeneralSettings;
use Doctrine\ORM\EntityManagerInterface;
use Jbtronics\SettingsBundle\Form\SettingsFormFactoryInterface;
use Jbtronics\SettingsBundle\Manager\SettingsManagerInterface;
@@ -114,7 +113,7 @@ class InfoProviderController extends AbstractController
#[Route('/search', name: 'info_providers_search')]
#[Route('/update/{target}', name: 'info_providers_update_part_search')]
- public function search(Request $request, #[MapEntity(id: 'target')] ?Part $update_target, LoggerInterface $exceptionLogger, InfoProviderGeneralSettings $infoProviderSettings): Response
+ public function search(Request $request, #[MapEntity(id: 'target')] ?Part $update_target, LoggerInterface $exceptionLogger): Response
{
$this->denyAccessUnlessGranted('@info_providers.create_parts');
@@ -145,23 +144,6 @@ class InfoProviderController extends AbstractController
}
}
- //If the providers form is still empty, use our default value from the settings
- if (count($form->get('providers')->getData() ?? []) === 0) {
- $default_providers = $infoProviderSettings->defaultSearchProviders;
- $provider_objects = [];
- foreach ($default_providers as $provider_key) {
- try {
- $tmp = $this->providerRegistry->getProviderByKey($provider_key);
- if ($tmp->isActive()) {
- $provider_objects[] = $tmp;
- }
- } catch (\InvalidArgumentException $e) {
- //If the provider is not found, just ignore it
- }
- }
- $form->get('providers')->setData($provider_objects);
- }
-
if ($form->isSubmitted() && $form->isValid()) {
$keyword = $form->get('keyword')->getData();
$providers = $form->get('providers')->getData();
diff --git a/src/Controller/PartController.php b/src/Controller/PartController.php
index 6708ed4c..b11a5c90 100644
--- a/src/Controller/PartController.php
+++ b/src/Controller/PartController.php
@@ -46,7 +46,6 @@ use App\Services\Parameters\ParameterExtractor;
use App\Services\Parts\PartLotWithdrawAddHelper;
use App\Services\Parts\PricedetailHelper;
use App\Services\ProjectSystem\ProjectBuildPartHelper;
-use App\Settings\BehaviorSettings\PartInfoSettings;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Exception;
@@ -70,7 +69,7 @@ class PartController extends AbstractController
protected PartPreviewGenerator $partPreviewGenerator,
private readonly TranslatorInterface $translator,
private readonly AttachmentSubmitHandler $attachmentSubmitHandler, private readonly EntityManagerInterface $em,
- protected EventCommentHelper $commentHelper, private readonly PartInfoSettings $partInfoSettings)
+ protected EventCommentHelper $commentHelper)
{
}
@@ -120,8 +119,8 @@ class PartController extends AbstractController
'pricedetail_helper' => $this->pricedetailHelper,
'pictures' => $this->partPreviewGenerator->getPreviewAttachments($part),
'timeTravel' => $timeTravel_timestamp,
- 'description_params' => $this->partInfoSettings->extractParamsFromDescription ? $parameterExtractor->extractParameters($part->getDescription()) : [],
- 'comment_params' => $this->partInfoSettings->extractParamsFromNotes ? $parameterExtractor->extractParameters($part->getComment()) : [],
+ 'description_params' => $parameterExtractor->extractParameters($part->getDescription()),
+ 'comment_params' => $parameterExtractor->extractParameters($part->getComment()),
'withdraw_add_helper' => $withdrawAddHelper,
]
);
diff --git a/src/Controller/PartListsController.php b/src/Controller/PartListsController.php
index b2df18c1..f6836ddc 100644
--- a/src/Controller/PartListsController.php
+++ b/src/Controller/PartListsController.php
@@ -161,9 +161,7 @@ class PartListsController extends AbstractController
$filterForm->handleRequest($formRequest);
- $table = $this->dataTableFactory->createFromType(PartsDataTable::class, array_merge(
- ['filter' => $filter], $additional_table_vars),
- ['pageLength' => $this->tableSettings->fullDefaultPageSize, 'lengthMenu' => PartsDataTable::LENGTH_MENU])
+ $table = $this->dataTableFactory->createFromType(PartsDataTable::class, array_merge(['filter' => $filter], $additional_table_vars), ['pageLength' => $this->tableSettings->fullDefaultPageSize])
->handleRequest($request);
if ($table->isCallback()) {
diff --git a/src/Form/InfoProviderSystem/ProviderSelectType.php b/src/Form/InfoProviderSystem/ProviderSelectType.php
index 95e10791..a9373390 100644
--- a/src/Form/InfoProviderSystem/ProviderSelectType.php
+++ b/src/Form/InfoProviderSystem/ProviderSelectType.php
@@ -28,7 +28,6 @@ use App\Services\InfoProviderSystem\Providers\InfoProviderInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\ChoiceList\ChoiceList;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
-use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ProviderSelectType extends AbstractType
@@ -45,43 +44,13 @@ class ProviderSelectType extends AbstractType
public function configureOptions(OptionsResolver $resolver): void
{
- $providers = $this->providerRegistry->getActiveProviders();
+ $resolver->setDefaults([
+ 'choices' => $this->providerRegistry->getActiveProviders(),
+ 'choice_label' => ChoiceList::label($this, static fn (?InfoProviderInterface $choice) => $choice?->getProviderInfo()['name']),
+ 'choice_value' => ChoiceList::value($this, static fn(?InfoProviderInterface $choice) => $choice?->getProviderKey()),
- $resolver->setDefault('input', 'object');
- $resolver->setAllowedTypes('input', 'string');
- //Either the form returns the provider objects or their keys
- $resolver->setAllowedValues('input', ['object', 'string']);
- $resolver->setDefault('multiple', true);
-
- $resolver->setDefault('choices', function (Options $options) use ($providers) {
- if ('object' === $options['input']) {
- return $this->providerRegistry->getActiveProviders();
- }
-
- $tmp = [];
- foreach ($providers as $provider) {
- $name = $provider->getProviderInfo()['name'];
- $tmp[$name] = $provider->getProviderKey();
- }
-
- return $tmp;
- });
-
- //The choice_label and choice_value only needs to be set if we want the objects
- $resolver->setDefault('choice_label', function (Options $options){
- if ('object' === $options['input']) {
- return ChoiceList::label($this, static fn (?InfoProviderInterface $choice) => $choice?->getProviderInfo()['name']);
- }
-
- return null;
- });
- $resolver->setDefault('choice_value', function (Options $options) {
- if ('object' === $options['input']) {
- return ChoiceList::value($this, static fn(?InfoProviderInterface $choice) => $choice?->getProviderKey());
- }
-
- return null;
- });
+ 'multiple' => true,
+ ]);
}
-}
+}
\ No newline at end of file
diff --git a/src/Settings/BehaviorSettings/PartInfoSettings.php b/src/Settings/BehaviorSettings/PartInfoSettings.php
index f017c846..4c44b9bb 100644
--- a/src/Settings/BehaviorSettings/PartInfoSettings.php
+++ b/src/Settings/BehaviorSettings/PartInfoSettings.php
@@ -40,10 +40,4 @@ class PartInfoSettings
#[SettingsParameter(label: new TM("settings.behavior.part_info.show_part_image_overlay"), description: new TM("settings.behavior.part_info.show_part_image_overlay.help"),
envVar: "bool:SHOW_PART_IMAGE_OVERLAY", envVarMode: EnvVarMode::OVERWRITE)]
public bool $showPartImageOverlay = true;
-
- #[SettingsParameter(label: new TM("settings.behavior.part_info.extract_params_from_description"))]
- public bool $extractParamsFromDescription = true;
-
- #[SettingsParameter(label: new TM("settings.behavior.part_info.extract_params_from_notes"))]
- public bool $extractParamsFromNotes = true;
-}
+}
\ No newline at end of file
diff --git a/src/Settings/BehaviorSettings/TableSettings.php b/src/Settings/BehaviorSettings/TableSettings.php
index b6964876..7b4e7912 100644
--- a/src/Settings/BehaviorSettings/TableSettings.php
+++ b/src/Settings/BehaviorSettings/TableSettings.php
@@ -70,20 +70,6 @@ class TableSettings
PartTableColumns::CATEGORY, PartTableColumns::FOOTPRINT, PartTableColumns::MANUFACTURER,
PartTableColumns::LOCATION, PartTableColumns::AMOUNT];
- #[SettingsParameter(label: new TM("settings.behavior.table.preview_image_min_width"),
- formOptions: ['attr' => ['min' => 1, 'max' => 100]],
- envVar: "int:TABLE_IMAGE_PREVIEW_MIN_SIZE", envVarMode: EnvVarMode::OVERWRITE
- )]
- #[Assert\Range(min: 1, max: 100)]
- public int $previewImageMinWidth = 20;
-
- #[SettingsParameter(label: new TM("settings.behavior.table.preview_image_max_width"),
- formOptions: ['attr' => ['min' => 1, 'max' => 100]],
- envVar: "int:TABLE_IMAGE_PREVIEW_MAX_SIZE", envVarMode: EnvVarMode::OVERWRITE
- )]
- #[Assert\Range(min: 1, max: 100)]
- #[Assert\GreaterThanOrEqual(propertyPath: 'previewImageMinWidth')]
- public int $previewImageMaxWidth = 35;
public static function mapPartsDefaultColumnsEnv(string $columns): array
{
@@ -101,4 +87,4 @@ class TableSettings
return $ret;
}
-}
+}
\ No newline at end of file
diff --git a/src/Settings/InfoProviderSystem/InfoProviderGeneralSettings.php b/src/Settings/InfoProviderSystem/InfoProviderGeneralSettings.php
deleted file mode 100644
index 03fff0bf..00000000
--- a/src/Settings/InfoProviderSystem/InfoProviderGeneralSettings.php
+++ /dev/null
@@ -1,45 +0,0 @@
-.
- */
-
-declare(strict_types=1);
-
-
-namespace App\Settings\InfoProviderSystem;
-
-use App\Form\InfoProviderSystem\ProviderSelectType;
-use App\Settings\SettingsIcon;
-use Jbtronics\SettingsBundle\ParameterTypes\ArrayType;
-use Jbtronics\SettingsBundle\ParameterTypes\StringType;
-use Jbtronics\SettingsBundle\Settings\Settings;
-use Jbtronics\SettingsBundle\Settings\SettingsParameter;
-use Symfony\Component\Translation\TranslatableMessage as TM;
-
-#[Settings(label: new TM("settings.ips.general"))]
-#[SettingsIcon("fa-magnifying-glass")]
-class InfoProviderGeneralSettings
-{
- /**
- * @var string[]
- */
- #[SettingsParameter(type: ArrayType::class, label: new TM("settings.ips.default_providers"),
- description: new TM("settings.ips.default_providers.help"), options: ['type' => StringType::class],
- formType: ProviderSelectType::class, formOptions: ['input' => 'string'])]
- public array $defaultSearchProviders = [];
-}
diff --git a/src/Settings/InfoProviderSystem/InfoProviderSettings.php b/src/Settings/InfoProviderSystem/InfoProviderSettings.php
index c223bd88..3c7159cb 100644
--- a/src/Settings/InfoProviderSystem/InfoProviderSettings.php
+++ b/src/Settings/InfoProviderSystem/InfoProviderSettings.php
@@ -25,7 +25,6 @@ namespace App\Settings\InfoProviderSystem;
use Jbtronics\SettingsBundle\Settings\EmbeddedSettings;
use Jbtronics\SettingsBundle\Settings\Settings;
-use Jbtronics\SettingsBundle\Settings\SettingsParameter;
use Jbtronics\SettingsBundle\Settings\SettingsTrait;
#[Settings()]
@@ -33,9 +32,6 @@ class InfoProviderSettings
{
use SettingsTrait;
- #[EmbeddedSettings]
- public ?InfoProviderGeneralSettings $general = null;
-
#[EmbeddedSettings]
public ?DigikeySettings $digikey = null;
@@ -62,4 +58,4 @@ class InfoProviderSettings
#[EmbeddedSettings]
public ?PollinSettings $pollin = null;
-}
+}
\ No newline at end of file
diff --git a/templates/base.html.twig b/templates/base.html.twig
index bb9844fa..48e45ab0 100644
--- a/templates/base.html.twig
+++ b/templates/base.html.twig
@@ -53,14 +53,6 @@
{% endif %}
{{ encore_entry_link_tags('app') }}
-
- {% set table_settings = settings_instance('table') %}
-
{% endblock %}
{% block javascripts %}
diff --git a/templates/components/datatables.macro.html.twig b/templates/components/datatables.macro.html.twig
index 009f815e..5ce0f23f 100644
--- a/templates/components/datatables.macro.html.twig
+++ b/templates/components/datatables.macro.html.twig
@@ -29,7 +29,7 @@
-
+
{# #}
@@ -95,4 +95,4 @@
-{% endmacro %}
+{% endmacro %}
\ No newline at end of file
diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf
index 9fb3f6ef..8515abb8 100644
--- a/translations/messages.de.xlf
+++ b/translations/messages.de.xlf
@@ -8553,6 +8553,16 @@ Element 1 -> Element 1.2
Authenticator App
+
+
+ obsolete
+ obsolete
+
+
+ Login successful
+ Login erfolgreich.
+
+ obsolete
@@ -8678,6 +8688,15 @@ Element 1 -> Element 1.2
Sicherheitsschlüssel erfolgreich hinzugefügt.
+
+
+ obsolete
+
+
+ Username
+ Benutzername
+
+ obsolete
@@ -13421,65 +13440,5 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
Labelprofil aktualisiert
-
-
- settings.behavior.hompepage.items
- Startseiten-Elemente
-
-
-
-
- settings.behavior.homepage.items.help
- Die Elemente, die auf der Startseite angezeigt werden sollen. Die Reihenfolge kann per Drag & Drop geändert werden.
-
-
-
-
- settings.system.customization.showVersionOnHomepage
- Part-DB-Version auf der Startseite anzeigen
-
-
-
-
- settings.behavior.part_info.extract_params_from_description
- Parameter aus der Bauteilebeschreibung extrahieren
-
-
-
-
- settings.behavior.part_info.extract_params_from_notes
- Parameter aus der Bauteilenotiz extrahieren
-
-
-
-
- settings.ips.default_providers
- Standard-Suchquellen
-
-
-
-
- settings.ips.general
- Allgemeine Einstellungen
-
-
-
-
- settings.ips.default_providers.help
- Diese Anbieter werden für die Suche in Informationsquellen vorausgewählt.
-
-
-
-
- settings.behavior.table.preview_image_max_width
- Max. Vorschaubilde-Breite (px)
-
-
-
-
- settings.behavior.table.preview_image_min_width
- Min. Vorschaubilde-Breite (px)
-
-
diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf
index af70cb50..b7710f0c 100644
--- a/translations/messages.en.xlf
+++ b/translations/messages.en.xlf
@@ -242,7 +242,7 @@
part.info.timetravel_hint
- This is how the part appeared before %timestamp%. <i>Please note that this feature is experimental, so the info may not be correct.</i>
+ Please note that this feature is experimental, so the info may not be correct.]]>
@@ -731,10 +731,10 @@
user.edit.tfa.disable_tfa_message
- This will disable <b>all active two-factor authentication methods of the user</b> and delete the <b>backup codes</b>!
-<br>
-The user will have to set up all two-factor authentication methods again and print new backup codes! <br><br>
-<b>Only do this if you are absolutely sure about the identity of the user (seeking help), otherwise the account could be compromised by an attacker!</b>
+ all active two-factor authentication methods of the user and delete the backup codes!
+
+The user will have to set up all two-factor authentication methods again and print new backup codes!
+Only do this if you are absolutely sure about the identity of the user (seeking help), otherwise the account could be compromised by an attacker!]]>
@@ -885,9 +885,9 @@ The user will have to set up all two-factor authentication methods again and pri
entity.delete.message
- This can not be undone!
-<br>
-Sub elements will be moved upwards.
+
+Sub elements will be moved upwards.]]>
@@ -1441,7 +1441,7 @@ Sub elements will be moved upwards.
homepage.github.text
- Source, downloads, bug reports, to-do-list etc. can be found on <a href="%href%" class="link-external" target="_blank">GitHub project page</a>
+ GitHub project page]]>
@@ -1463,7 +1463,7 @@ Sub elements will be moved upwards.
homepage.help.text
- Help and tips can be found in Wiki the <a href="%href%" class="link-external" target="_blank">GitHub page</a>
+ GitHub page]]>
@@ -1705,7 +1705,7 @@ Sub elements will be moved upwards.
email.pw_reset.fallback
- If this does not work for you, go to <a href="%url%">%url%</a> and enter the following info
+ %url% and enter the following info]]>
@@ -1735,7 +1735,7 @@ Sub elements will be moved upwards.
email.pw_reset.valid_unit %date%
- The reset token will be valid until <i>%date%</i>.
+ %date%.]]>
@@ -3578,8 +3578,8 @@ Sub elements will be moved upwards.
tfa_google.disable.confirm_message
- If you disable the Authenticator App, all backup codes will be deleted, so you may need to reprint them.<br>
-Also note that without two-factor authentication, your account is no longer as well protected against attackers!
+
+Also note that without two-factor authentication, your account is no longer as well protected against attackers!]]>
@@ -3599,7 +3599,7 @@ Also note that without two-factor authentication, your account is no longer as w
tfa_google.step.download
- Download an authenticator app (e.g. <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Google Authenticator</a> oder <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">FreeOTP Authenticator</a>)
+ Google Authenticator oder FreeOTP Authenticator)]]>
@@ -3841,8 +3841,8 @@ Also note that without two-factor authentication, your account is no longer as w
tfa_trustedDevices.explanation
- When checking the second factor, the current computer can be marked as trustworthy, so no more two-factor checks on this computer are needed.
-If you have done this incorrectly or if a computer is no longer trusted, you can reset the status of <i>all </i>computers here.
+ all computers here.]]>
@@ -5313,7 +5313,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
label_options.lines_mode.help
- If you select Twig here, the content field is interpreted as Twig template. See <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig documentation</a> and <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a> for more information.
+ Twig documentation and Wiki for more information.]]>
@@ -7157,15 +7157,15 @@ Exampletown
mass_creation.lines.placeholder
- Element 1
+
+Element 1 -> Element 1.1
+Element 1 -> Element 1.2]]>
@@ -8554,6 +8554,16 @@ Element 1 -> Element 1.2
Authenticator app
+
+
+ obsolete
+ obsolete
+
+
+ Login successful
+ Login successful
+
+ obsolete
@@ -8679,6 +8689,15 @@ Element 1 -> Element 1.2
Security key added successfully.
+
+
+ obsolete
+
+
+ Username
+ Username
+
+ obsolete
@@ -9372,25 +9391,25 @@ Element 1 -> Element 1.2
filter.parameter_value_constraint.operator.<
- Typ. Value <
+ filter.parameter_value_constraint.operator.>
- Typ. Value >
+ ]]>filter.parameter_value_constraint.operator.<=
- Typ. Value <=
+ filter.parameter_value_constraint.operator.>=
- Typ. Value >=
+ =]]>
@@ -9498,7 +9517,7 @@ Element 1 -> Element 1.2
parts_list.search.searching_for
- Searching parts with keyword <b>%keyword%</b>
+ %keyword%]]>
@@ -10158,13 +10177,13 @@ Element 1 -> Element 1.2
project.builds.number_of_builds_possible
- You have enough stocked to build <b>%max_builds%</b> builds of this project.
+ %max_builds% builds of this project.]]>project.builds.check_project_status
- The current project status is <b>"%project_status%"</b>. You should check if you really want to build the project with this status!
+ "%project_status%". You should check if you really want to build the project with this status!]]>
@@ -10266,7 +10285,7 @@ Element 1 -> Element 1.2
entity.select.add_hint
- Use -> to create nested structures, e.g. "Node 1->Node 1.1"
+ to create nested structures, e.g. "Node 1->Node 1.1"]]>
@@ -10290,13 +10309,13 @@ Element 1 -> Element 1.2
homepage.first_steps.introduction
- Your database is still empty. You might want to read the <a href="%url%">documentation</a> or start to creating the following data structures:
+ documentation or start to creating the following data structures:]]>homepage.first_steps.create_part
- Or you can directly <a href="%url%">create a new part</a>.
+ create a new part.]]>
@@ -10308,7 +10327,7 @@ Element 1 -> Element 1.2
homepage.forum.text
- For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a>
+ discussion forum]]>
@@ -10962,7 +10981,7 @@ Element 1 -> Element 1.2
parts.import.help_documentation
- See the <a href="%link%">documentation</a> for more information on the file format.
+ documentation for more information on the file format.]]>
@@ -11142,7 +11161,7 @@ Element 1 -> Element 1.2
part.filter.lessThanDesired
- In stock less than desired (total amount < min. amount)
+
@@ -11954,13 +11973,13 @@ Please note, that you can not impersonate a disabled user. If you try you will g
part.merge.confirm.title
- Do you really want to merge <b>%other%</b> into <b>%target%</b>?
+ %other% into %target%?]]>part.merge.confirm.message
- <b>%other%</b> will be deleted, and the part will be saved with the shown information.
+ %other% will be deleted, and the part will be saved with the shown information.]]>
@@ -12314,7 +12333,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.ips.element14.apiKey.help
- You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>.
+ https://partner.element14.com/.]]>
@@ -12326,7 +12345,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.ips.element14.storeId.help
- The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains.
+ here for a list of valid domains.]]>
@@ -12344,7 +12363,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.ips.tme.token.help
- You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>.
+ https://developers.tme.eu/en/.]]>
@@ -12392,7 +12411,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.ips.mouser.apiKey.help
- You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>.
+ https://eu.mouser.com/api-hub/.]]>
@@ -12470,7 +12489,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.system.attachments
- Attachments & Files
+
@@ -12494,7 +12513,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.system.attachments.allowDownloads.help
- With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b>
+ Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!]]>
@@ -12668,8 +12687,8 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.system.localization.base_currency_description
- The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information.
-<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b>
+ Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!]]>
@@ -12699,7 +12718,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.misc.kicad_eda.category_depth.help
- This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.
+ 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.]]>
@@ -12717,7 +12736,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.behavior.sidebar.items.help
- The menus which appear at the sidebar by default. Order of items can be changed via drag & drop.
+
@@ -12765,7 +12784,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.behavior.table.parts_default_columns.help
- The columns to show by default in part tables. Order of items can be changed via drag & drop.
+
@@ -12819,7 +12838,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
settings.ips.oemsecrets.sortMode.M
- Completeness & Manufacturer name
+
@@ -13159,328 +13178,286 @@ Please note, that you can not impersonate a disabled user. If you try you will g
-
+ project.bom_import.type.kicad_schematicKiCAD Schematic BOM (CSV file)
-
+ common.backBack
-
+ project.bom_import.validation.errors.required_field_missingLine %line%: Required field "%field%" is missing or empty. Please ensure this field is mapped and contains data.
-
+ project.bom_import.validation.errors.no_valid_designatorsLine %line%: Designator field contains no valid component references. Expected format: "R1,C2,U3" or "R1, C2, U3".
-
+ project.bom_import.validation.warnings.unusual_designator_formatLine %line%: Some component references may have unusual format: %designators%. Expected format: "R1", "C2", "U3", etc.
-
+ project.bom_import.validation.errors.duplicate_designatorsLine %line%: Duplicate component references found: %designators%. Each component should be referenced only once per line.
-
+ project.bom_import.validation.errors.invalid_quantityLine %line%: Quantity "%quantity%" is not a valid number. Please enter a numeric value (e.g., 1, 2.5, 10).
-
+ project.bom_import.validation.errors.quantity_zero_or_negativeLine %line%: Quantity must be greater than 0, got %quantity%.
-
+ project.bom_import.validation.warnings.quantity_unusually_highLine %line%: Quantity %quantity% seems unusually high. Please verify this is correct.
-
+ project.bom_import.validation.warnings.quantity_not_whole_numberLine %line%: Quantity %quantity% is not a whole number, but you have %count% component references. This may indicate a mismatch.
-
+ project.bom_import.validation.errors.quantity_designator_mismatchLine %line%: Mismatch between quantity and component references. Quantity: %quantity%, References: %count% (%designators%). These should match. Either adjust the quantity or check your component references.
-
+ project.bom_import.validation.errors.invalid_partdb_idLine %line%: Part-DB ID "%id%" is not a valid number. Please enter a numeric ID.
-
+ project.bom_import.validation.errors.partdb_id_zero_or_negativeLine %line%: Part-DB ID must be greater than 0, got %id%.
-
+ project.bom_import.validation.warnings.partdb_id_not_foundLine %line%: Part-DB ID %id% not found in database. The component will be imported without linking to an existing part.
-
+ project.bom_import.validation.info.partdb_link_successLine %line%: Successfully linked to Part-DB part "%name%" (ID: %id%).
-
+ project.bom_import.validation.warnings.no_component_nameLine %line%: No component name/designation provided (MPN, Designation, or Value). Component will be named "Unknown Component".
-
+ project.bom_import.validation.warnings.package_name_too_longLine %line%: Package name "%package%" is unusually long. Please verify this is correct.
-
+ project.bom_import.validation.info.library_prefix_detectedLine %line%: Package "%package%" contains library prefix. This will be automatically removed during import.
-
+ project.bom_import.validation.errors.non_numeric_fieldLine %line%: Field "%field%" contains non-numeric value "%value%". Please enter a valid number.
-
+ project.bom_import.validation.info.import_summaryImport summary: %total% total entries, %valid% valid, %invalid% with issues.
-
+ project.bom_import.validation.errors.summaryFound %count% validation error(s) that must be fixed before import can proceed.
-
+ project.bom_import.validation.warnings.summaryFound %count% warning(s). Please review these issues before proceeding.
-
+ project.bom_import.validation.info.all_validAll entries passed validation successfully!
-
+ project.bom_import.validation.summaryValidation Summary
-
+ project.bom_import.validation.total_entriesTotal Entries
-
+ project.bom_import.validation.valid_entriesValid Entries
-
+ project.bom_import.validation.invalid_entriesInvalid Entries
-
+ project.bom_import.validation.success_rateSuccess Rate
-
+ project.bom_import.validation.errors.titleValidation Errors
-
+ project.bom_import.validation.errors.descriptionThe following errors must be fixed before the import can proceed:
-
+ project.bom_import.validation.warnings.titleValidation Warnings
-
+ project.bom_import.validation.warnings.descriptionThe following warnings should be reviewed before proceeding:
-
+ project.bom_import.validation.info.titleInformation
-
+ project.bom_import.validation.details.titleDetailed Validation Results
-
+ project.bom_import.validation.details.lineLine
-
+ project.bom_import.validation.details.statusStatus
-
+ project.bom_import.validation.details.messagesMessages
-
+ project.bom_import.validation.details.validValid
-
+ project.bom_import.validation.details.invalidInvalid
-
+ project.bom_import.validation.all_validAll entries are valid and ready for import!
-
+ project.bom_import.validation.fix_errorsPlease fix the validation errors before proceeding with the import.
-
+ project.bom_import.type.generic_csvGeneric CSV
-
+ label_generator.update_profileUpdate profile with current settings
-
+ label_generator.profile_updatedLabel profile updated successfully.
-
+ settings.behavior.hompepage.itemsHomepage items
-
+ settings.behavior.homepage.items.help
- The items to show at the homepage. Order can be changed via drag & drop.
+
-
+ settings.system.customization.showVersionOnHomepageShow Part-DB version on homepage
-
-
- settings.behavior.part_info.extract_params_from_description
- Extract parameters from part description
-
-
-
-
- settings.behavior.part_info.extract_params_from_notes
- Extract parameters from part notes
-
-
-
-
- settings.ips.default_providers
- Default search providers
-
-
-
-
- settings.ips.general
- General settings
-
-
-
-
- settings.ips.default_providers.help
- These providers will be preselected for searches in part providers.
-
-
-
-
- settings.behavior.table.preview_image_max_width
- Preview image max width (px)
-
-
-
-
- settings.behavior.table.preview_image_min_width
- Preview image min width (px)
-
-