Ajout de la génération de QR codes Wi-Fi
This commit is contained in:
1 parent
8be33ed3f6
commit
591589787a
3 files changed
+90
-3
No files matched your search
+53
-2
@@ -1,7 +1,15 @@
|
||||
(() => {
|
||||
"use strict";
|
||||
|
||||
const modeEl = document.getElementById("qr-mode");
|
||||
const modeTextWrap = document.getElementById("mode-text");
|
||||
const modeWifiWrap = document.getElementById("mode-wifi");
|
||||
const textEl = document.getElementById("qr-text");
|
||||
const wifiSsidEl = document.getElementById("wifi-ssid");
|
||||
const wifiEncryptionEl = document.getElementById("wifi-encryption");
|
||||
const wifiPasswordEl = document.getElementById("wifi-password");
|
||||
const wifiPasswordField = document.getElementById("wifi-password-field");
|
||||
const wifiHiddenEl = document.getElementById("wifi-hidden");
|
||||
const cellSizeEl = document.getElementById("qr-cell-size");
|
||||
const correctionEl = document.getElementById("qr-correction");
|
||||
const fgColorEl = document.getElementById("qr-fg-color");
|
||||
@@ -40,15 +48,57 @@
|
||||
render();
|
||||
});
|
||||
|
||||
function escapeWifiField(value) {
|
||||
return String(value).replace(/([\\;,":])/g, "\\$1");
|
||||
}
|
||||
|
||||
function buildWifiPayload() {
|
||||
const ssid = wifiSsidEl.value;
|
||||
const encryption = wifiEncryptionEl.value;
|
||||
const password = wifiPasswordEl.value;
|
||||
const hidden = wifiHiddenEl.checked;
|
||||
|
||||
if (!ssid) return "";
|
||||
|
||||
let payload = `WIFI:T:${encryption};S:${escapeWifiField(ssid)};`;
|
||||
if (encryption !== "nopass" && password) {
|
||||
payload += `P:${escapeWifiField(password)};`;
|
||||
}
|
||||
payload += `H:${hidden ? "true" : "false"};;`;
|
||||
return payload;
|
||||
}
|
||||
|
||||
function updateModeVisibility() {
|
||||
const isWifi = modeEl.value === "wifi";
|
||||
modeTextWrap.style.display = isWifi ? "none" : "block";
|
||||
modeWifiWrap.style.display = isWifi ? "block" : "none";
|
||||
wifiPasswordField.style.display = wifiEncryptionEl.value === "nopass" ? "none" : "block";
|
||||
}
|
||||
|
||||
modeEl.addEventListener("change", () => {
|
||||
updateModeVisibility();
|
||||
render();
|
||||
});
|
||||
|
||||
wifiEncryptionEl.addEventListener("change", updateModeVisibility);
|
||||
|
||||
[wifiSsidEl, wifiEncryptionEl, wifiPasswordEl, wifiHiddenEl].forEach((el) => {
|
||||
el.addEventListener("input", render);
|
||||
el.addEventListener("change", render);
|
||||
});
|
||||
|
||||
function render() {
|
||||
const text = textEl.value;
|
||||
const isWifi = modeEl.value === "wifi";
|
||||
const text = isWifi ? buildWifiPayload() : textEl.value;
|
||||
statusEl.classList.remove("error");
|
||||
|
||||
if (!text) {
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
canvas.width = 280;
|
||||
canvas.height = 280;
|
||||
statusEl.textContent = "Saisissez un texte ou une URL pour générer le QR code.";
|
||||
statusEl.textContent = isWifi
|
||||
? "Renseignez au moins le nom du réseau (SSID) pour générer le QR code."
|
||||
: "Saisissez un texte ou une URL pour générer le QR code.";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -125,5 +175,6 @@
|
||||
generateBtn.addEventListener("click", render);
|
||||
downloadBtn.addEventListener("click", downloadPng);
|
||||
|
||||
updateModeVisibility();
|
||||
render();
|
||||
})();
|
||||
Reference in new issue
Block a user