92 lines
2.9 KiB
JavaScript
92 lines
2.9 KiB
JavaScript
(function () {
|
|
// IBAN: tylko cyfry, auto-grupowanie co 4 (po prefiksie PL)
|
|
const iban = document.getElementById('numer_konta');
|
|
if (iban) {
|
|
iban.addEventListener('input', () => {
|
|
const digits = iban.value.replace(/\\D/g, '').slice(0, 26); // 26 cyfr po "PL"
|
|
const chunked = digits.replace(/(.{4})/g, '$1 ').trim();
|
|
iban.value = chunked;
|
|
});
|
|
}
|
|
|
|
// Telefon BLIK: tylko cyfry, format 3-3-3
|
|
const tel = document.getElementById('numer_telefonu_blik');
|
|
if (tel) {
|
|
tel.addEventListener('input', () => {
|
|
const digits = tel.value.replace(/\\D/g, '').slice(0, 9);
|
|
const parts = [];
|
|
if (digits.length > 0) parts.push(digits.substring(0, 3));
|
|
if (digits.length > 3) parts.push(digits.substring(3, 6));
|
|
if (digits.length > 6) parts.push(digits.substring(6, 9));
|
|
tel.value = parts.join(' ');
|
|
});
|
|
}
|
|
|
|
// Biała lista IP/hostów — helpery
|
|
const ta = document.getElementById('allowed_login_hosts');
|
|
const count = document.getElementById('hostsCount');
|
|
const addBtn = document.getElementById('btn-add-host');
|
|
const addMyBtn = document.getElementById('btn-add-my-ip');
|
|
const input = document.getElementById('host_input');
|
|
|
|
function parseList(text) {
|
|
// akceptuj przecinki, średniki i nowe linie; trimuj; usuń puste
|
|
return text
|
|
.split(/[\\n,;]+/)
|
|
.map(s => s.trim())
|
|
.filter(Boolean);
|
|
}
|
|
function formatList(arr) {
|
|
return arr.join('\\n');
|
|
}
|
|
function dedupe(arr) {
|
|
const seen = new Set();
|
|
const out = [];
|
|
for (const v of arr) {
|
|
const k = v.toLowerCase();
|
|
if (!seen.has(k)) { seen.add(k); out.push(v); }
|
|
}
|
|
return out;
|
|
}
|
|
function updateCount() {
|
|
if (!ta || !count) return;
|
|
count.textContent = parseList(ta.value).length.toString();
|
|
}
|
|
function addEntry(val) {
|
|
if (!ta || !val) return;
|
|
const list = dedupe([...parseList(ta.value), val]);
|
|
ta.value = formatList(list);
|
|
updateCount();
|
|
}
|
|
|
|
if (ta) {
|
|
ta.addEventListener('input', updateCount);
|
|
// inicjalny przelicznik
|
|
updateCount();
|
|
}
|
|
|
|
if (addBtn && input) {
|
|
addBtn.addEventListener('click', () => {
|
|
const val = (input.value || '').trim();
|
|
if (!val) return;
|
|
addEntry(val);
|
|
input.value = '';
|
|
input.focus();
|
|
});
|
|
}
|
|
|
|
if (addMyBtn) {
|
|
addMyBtn.addEventListener('click', () => {
|
|
const ip = addMyBtn.dataset.myIp || '';
|
|
if (ip) addEntry(ip);
|
|
});
|
|
}
|
|
|
|
const dedupeBtn = document.getElementById('btn-dedupe');
|
|
if (dedupeBtn && ta) {
|
|
dedupeBtn.addEventListener('click', () => {
|
|
ta.value = formatList(dedupe(parseList(ta.value)));
|
|
updateCount();
|
|
});
|
|
}
|
|
})(); |