add number generator

author
Marijn Besseling <njirambem@gmail.com> · 2025-09-07 19:07 UTC
commit
8a6bd55837caebb260df0d1b85668df3d89614e7
parent
9ab322751a
tree
browse at this commit

3 files changed +60 -1

Blog/Components/App.razor +1 -1

@@ -49,7 +49,7 @@
49 49 <li><NavLink href="/calc">Calculator</NavLink></li>
50 50 <li><NavLink href="/concat">Concatenator</NavLink></li>
51 51 <li><NavLink href="/letterflixd">Netflix to Letterboxd converter</NavLink></li>
52 - <li><a href="/generator.html">Number generator</a></li>
52 + <li><NavLink href="/generator">Number generator</NavLink></li>
53 53 <li><NavLink href="/note">Note</NavLink></li>
54 54 <li><a href="/qrcode.html">QR-code scanner</a></li>
55 55 <li><a href="/qrcode-generator.html">QR-code generator</a></li>

Blog/Components/Pages/Generator.razor +12 -0

@@ -0,0 +1,12 @@
1 +@page "/Generator"
2 +<PageTitle>Number generator</PageTitle>
3 +<PageScript Src="./Components/Pages/Generator.razor.js"></PageScript>
4 +
5 +<main>
6 + <button id="bsn">Generate BSN</button>
7 + <!-- <button id="iban">Generate IBAN</button> -->
8 +
9 + <div>
10 + <div id="log"></div>
11 + </div>
12 +</main>
No newline at end of file

Blog/Components/Pages/Generator.razor.js +47 -0

@@ -0,0 +1,47 @@
1 +import { addClass /*writeInfo*/, div, getById, span } from "/common.module.js";
2 +
3 +function writeInfo(label, msg) {
4 + log.appendChild(
5 + div(
6 + addClass(div(addClass(span(label), "noselect"), span(msg)), "info"),
7 + ),
8 + );
9 +}
10 +
11 +export function onLoad() {
12 + const gen_bsn = getById("bsn");
13 + gen_bsn.addEventListener("click", generateBsn);
14 +}
15 +
16 +function generateBsn() {
17 + const nr9 = Math.floor(Math.random() * 7);
18 + const nr8 = Math.floor(Math.random() * 10);
19 + const nr7 = Math.floor(Math.random() * 10);
20 + const nr6 = Math.floor(Math.random() * 10);
21 + const nr5 = Math.floor(Math.random() * 10);
22 + const nr4 = Math.floor(Math.random() * 10);
23 + const nr3 = Math.floor(Math.random() * 10);
24 + let nr2 = Math.floor(Math.random() * 10);
25 + const bsnNumber =
26 + 9 * nr9 +
27 + 8 * nr8 +
28 + 7 * nr7 +
29 + 6 * nr6 +
30 + 5 * nr5 +
31 + 4 * nr4 +
32 + 3 * nr3 +
33 + 2 * nr2;
34 + let nr1 = Math.floor(bsnNumber - Math.floor(bsnNumber / 11) * 11);
35 + if (nr1 > 9) {
36 + if (nr2 > 0) {
37 + nr2 -= 1;
38 + nr1 = 8;
39 + } else {
40 + nr2 += 1;
41 + nr1 = 1;
42 + }
43 + }
44 +
45 + const BSNString = "" + nr9 + nr8 + nr7 + nr6 + nr5 + nr4 + nr3 + nr2 + nr1;
46 + writeInfo("BSN: ", BSNString);
47 +}