Files
iQR/script.js
T

126 lines
4.1 KiB
JavaScript

const textInput = document.getElementById('text-input');
const generateBtn = document.getElementById('generate-btn');
const downloadQrBtn = document.getElementById('download-qr-btn');
const qrCodeDiv = document.getElementById('qr-code');
const delBtn = document.getElementById('del-qr-btn');
const textError = document.getElementById('error');
const zoomInBtn = document.getElementById('zoom-in-btn');
const zoomOutBtn = document.getElementById('zoom-out-btn');
let scale = 1; // Начальный масштаб
// Установление значения поля ввода из local storage
window.onload = () => {
let inputText = localStorage.getItem('userText');
if (inputText) {
textInput.value = inputText;
generateQR()
} else {
localStorage.setItem('userText', '')
}
}
// Вывести сообщение пользователю
function logMessage(message, color = 'red') {
textError.innerText = message;
textError.style.color = color;
}
function generateQR() {
const userText = textInput.value.trim();
if (!userText) {
logMessage('Введите текст для генерации QR-кода!');
return;
};
localStorage.setItem('userText', userText);
qrCodeDiv.innerHTML = '';
QRCode.toCanvas(userText, (error, canvas) => {
if (error) {
console.error(error);
logMessage('Ошибка при генерации QR-кода.');
return;
}
qrCodeDiv.appendChild(canvas);
logMessage('');
canvas.style.transform = `scale(${scale})`;
canvas.style.transformOrigin = 'top';
})
const canvas = qrCodeDiv.querySelector('canvas');
let canvasWidth = canvas.getBoundingClientRect().width;
if (canvasWidth > window.innerWidth * 0.8) {
scale = 1;
}
}
// Генерация QR-кода
generateBtn.addEventListener('click', generateQR);
// Скачивание QR-кода
downloadQrBtn.addEventListener('click', () => {
let userText = textInput.value.slice(0, 20)
const canvas = qrCodeDiv.querySelector('canvas');
if (!canvas) {
logMessage('QR-код не сгенерирован!');
return;
}
if (!userText) {
logMessage('Отсутствует текст в поле для ввода');
return;
}
const link = document.createElement('a');
link.href = canvas.toDataURL('image/png');
link.download = `qr-code-${userText}.png`;
link.click();
logMessage('QR-код скачан!', 'green');
});
// Удаление данных
delBtn.addEventListener('click', () => {
textInput.value = '';
qrCodeDiv.innerHTML = '';
textError.innerText = '';
scale = 1;
localStorage.removeItem('userText');
});
// Изменить значение шкалы
function chengeScale(scale) {
const canvas = qrCodeDiv.querySelector('canvas');
logMessage('')
canvas.style.transform = `scale(${scale})`;
};
// Увеличение QR-кода
zoomInBtn.addEventListener('click', () => {
const canvas = qrCodeDiv.querySelector('canvas');
if (!canvas) {
logMessage('До генерации QR кода маштаб менять нельзя')
return
}
let canvasWidth = canvas.getBoundingClientRect().width;
if (canvasWidth + 0.1 < (window.innerWidth * 0.8)) {
scale += 0.1; // Увеличить масштаб на 10%
chengeScale(scale)
} else {
logMessage('Достигнут максимальный размер QR кода')
}
});
// Уменьшение QR-кода
zoomOutBtn.addEventListener('click', () => {
const canvas = qrCodeDiv.querySelector('canvas');
if (!canvas) {
logMessage('До генерации QR кода маштаб менять нельзя')
return
}
let canvasWidth = canvas.getBoundingClientRect().width;
if (canvasWidth > window.innerWidth * 0.8) {
scale = 1;
}
if (scale > 0.5) {
scale -= 0.1; // Уменьшить масштаб на 10%
chengeScale(scale)
} else {
logMessage('Достигнут минимальный размер QR кода')
}
});