From 374e6d018bc0ebaabcc1b965ba06db428cac80b4 Mon Sep 17 00:00:00 2001 From: Herwin Bozet Date: Tue, 18 Mar 2025 22:09:06 +0100 Subject: [PATCH] Finished IBAN generator, Hotfixed standalone pages spacing, Imrpoved IBAN generator standalone appearance Update commons.yml, iban-generator.yml, and 6 more files... --- data/strings/en/commons.yml | 1 + data/strings/en/iban-generator.yml | 6 +++ data/strings/fr/commons.yml | 1 + data/strings/fr/iban-generator.yml | 6 +++ .../applets/iban-generator/iban-generator.mjs | 44 +++++++++++++++++-- templates/applets/iban-generator.jinja | 34 +++++++++++--- templates/base_standalone.jinja | 4 +- templates/pages/tools_page.jinja | 25 +++++++---- 8 files changed, 101 insertions(+), 20 deletions(-) diff --git a/data/strings/en/commons.yml b/data/strings/en/commons.yml index 11cb1ae..fa671f5 100644 --- a/data/strings/en/commons.yml +++ b/data/strings/en/commons.yml @@ -85,6 +85,7 @@ file.drop.selected.multiple: "You selected ?? license.mit.single: "MIT License" +format.download.as: "Download as" format.raw: "Raw" format.json: "JSON" format.yaml: "YAML" diff --git a/data/strings/en/iban-generator.yml b/data/strings/en/iban-generator.yml index 24b779a..5a61f6a 100644 --- a/data/strings/en/iban-generator.yml +++ b/data/strings/en/iban-generator.yml @@ -10,3 +10,9 @@ option.prefer.numbers: "Prefer numbers over letters" option.for.each: "Generate X for each country" option.sepa.enable: "Enable SEPA countries" option.non-sepa.enable: "Enable non-SEPA countries" + +license.1: "The code for this project is released in the public domain." +license.2: "The original source code can be found on GitHub." +license.3: "Data from Swift's +IBAN Registry +was also used and may be licensed under different terms." diff --git a/data/strings/fr/commons.yml b/data/strings/fr/commons.yml index 6bb61c8..f043abe 100644 --- a/data/strings/fr/commons.yml +++ b/data/strings/fr/commons.yml @@ -85,6 +85,7 @@ file.drop.selected.multiple: "Vous avez séléctionné X pour chaque pays" option.sepa.enable: "Activer les pays SEPA" option.non-sepa.enable: "Activer les pays non-SEPA" + +license.1: "Le code de ce projet est publié dans le domaine public." +license.2: "Le code source original peut être trouvé sur GitHub." +license.3: "Les données du +Registre IBAN +de Swift ont également été utilisées et peuvent être soumises à des conditions de licence différentes." diff --git a/static/resources/NibblePoker/applets/iban-generator/iban-generator.mjs b/static/resources/NibblePoker/applets/iban-generator/iban-generator.mjs index 3d5f7d8..14c477f 100644 --- a/static/resources/NibblePoker/applets/iban-generator/iban-generator.mjs +++ b/static/resources/NibblePoker/applets/iban-generator/iban-generator.mjs @@ -49,6 +49,30 @@ import {initCore} from "../../js/nibblepoker-core.mjs"; let lastIBANs = []; + function onExclusionRulesChanged() { + let showSepa = eOptionEnableSepa.checked; + let showNonSepa = eOptionEnableNonSepa.checked; + + eOptionCountry.querySelectorAll("option").forEach(eOption => { + /** @type {IbanSpecification} */ + let countrySpec = countriesSpecs[eOption.value]; + + if(countrySpec.isSepa) { + eOption.disabled = !showSepa; + } else { + eOption.disabled = !showNonSepa; + } + }); + + if (eOptionCountry.options[eOptionCountry.selectedIndex]?.disabled) { + const eFirstEnabled = Array.from(eOptionCountry.options) + .find(option => !option.disabled); + if (eFirstEnabled) { + eFirstEnabled.selected = true; + } + } + } + /** @returns {number} */ function getDesiredCount() { return getInputCount(eOptionCount, 1, 1000); @@ -62,7 +86,19 @@ import {initCore} from "../../js/nibblepoker-core.mjs"; } window.onload = function () { - // FIXME: Handle the exclusions properly + // Exclusion rules + eOptionEnableSepa.addEventListener("change", function() { + if(!eOptionEnableSepa.checked && !eOptionEnableNonSepa.checked) { + eOptionEnableNonSepa.checked = true; + } + onExclusionRulesChanged(); + }); + eOptionEnableNonSepa.addEventListener("change", function() { + if(!eOptionEnableSepa.checked && !eOptionEnableNonSepa.checked) { + eOptionEnableSepa.checked = true; + } + onExclusionRulesChanged(); + }); // Generation eGenerateButton.addEventListener("click", function() { @@ -119,19 +155,19 @@ import {initCore} from "../../js/nibblepoker-core.mjs"; if (lastIBANs.length <= 0) { return; } - downloadStringAsFile(lastIBANs.join("\n"), "uuids.txt", "text/plain"); + downloadStringAsFile(lastIBANs.join("\n"), "ibans.txt", "text/plain"); }); eDownloadJsonButton.addEventListener("click", function() { if (lastIBANs.length <= 0) { return; } - downloadStringAsFile(JSON.stringify(lastIBANs, null, 4), "uuids.json", "application/json"); + downloadStringAsFile(JSON.stringify(lastIBANs, null, 4), "ibans.json", "application/json"); }); eDownloadYamlButton.addEventListener("click", function() { if (lastIBANs.length <= 0) { return; } - downloadStringAsFile("- \"" + lastIBANs.join("\"\n- \"") + "\"", "uuids.yaml", "text/yaml"); + downloadStringAsFile("- \"" + lastIBANs.join("\"\n- \"") + "\"", "ibans.yaml", "text/yaml"); }); }; } diff --git a/templates/applets/iban-generator.jinja b/templates/applets/iban-generator.jinja index e1db376..9729e39 100644 --- a/templates/applets/iban-generator.jinja +++ b/templates/applets/iban-generator.jinja @@ -129,13 +129,23 @@
- - +{% else %} + {{ l10n("format.download.as", "commons", user_lang) }} : +{% endif %} + +
+ + +{% if is_standalone %} +
+ +

+ {{ l10n("license.1", "iban-generator", user_lang) }}
+ {{ l10n("license.2", "iban-generator", user_lang) }} +

+

+ {{ l10n("license.3", "iban-generator", user_lang) }} +

+{% endif %} diff --git a/templates/base_standalone.jinja b/templates/base_standalone.jinja index 429b593..3670cfb 100644 --- a/templates/base_standalone.jinja +++ b/templates/base_standalone.jinja @@ -28,7 +28,7 @@ -
+

{% block header_title %}{% endblock %}

@@ -38,7 +38,7 @@ {% block main_content %}{% endblock %} -