-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathscript.js
More file actions
109 lines (96 loc) · 3.15 KB
/
Copy pathscript.js
File metadata and controls
109 lines (96 loc) · 3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
window.addEventListener("DOMContentLoaded", (event) => {
const generateBtn = document.querySelector("[data-generate-qr-btn]");
const editBtn = document.querySelector("[data-go-back-btn]");
const flippedCards = document.querySelectorAll("section");
const data = document.querySelector("[data-url]");
const mainColor = document.querySelector("input#main-color");
const bgColor = document.querySelector("input#background-color");
const size = document.querySelector("input#size");
const margin = document.querySelector("input#margin");
const format = document.querySelectorAll("input[type=radio]");
const QRCodeContainer = document.querySelector(".qr-image");
const QRImg = document.querySelector(".qr-code");
const marginValue = document.querySelector(".margin-value");
const sizeValue = document.querySelector(".size-value");
const btns = [generateBtn, editBtn];
// GET value of checked chechbox of image format
function getFormatValue(checkboxes) {
for (const checkbox of checkboxes) {
if (checkbox.checked) {
return checkbox.value;
}
}
}
// check that url not emply
function validData(data) {
if (data.value.length >= 1) {
generateBtn.disabled = false;
data.classList.remove("error");
return true;
} else {
generateBtn.disabled = true;
data.classList.add("error");
return false;
}
}
const getParams = (params) => {
return {
format: params.imageFormat,
data: params.dataVal,
size: `${params.sizeVal}x${params.sizeVal}`,
color: params.mainColorVal.replace("#", ""),
bgcolor: params.bgColorVal.replace("#", ""),
qzone: params.marginVal,
};
};
getQRCode = async (parameters) => {
const UrlParams = new URLSearchParams(parameters).toString();
const response = await fetch(`http://api.qrserver.com/v1/create-qr-code/?${UrlParams}`);
if (response.ok) {
return response.url;
}
};
displayQRCode = async () => {
const imageFormat = getFormatValue(format);
const dataVal = data.value;
const mainColorVal = mainColor.value;
const bgColorVal = bgColor.value;
const sizeVal = size.value;
const marginVal = margin.value;
const parameters = getParams({
imageFormat,
dataVal,
mainColorVal,
bgColorVal,
sizeVal,
marginVal,
});
const srcImg = await getQRCode(parameters);
QRImg.src = srcImg;
QRImg.alt = "QR Code";
QRCodeContainer.appendChild(QRImg);
};
data.addEventListener("change", () => {
validData(data);
});
// update size & margin
const updateSizeValue = (e) => {
const val = e.target.value;
sizeValue.innerHTML = `${val}x${val}`;
};
const updateMarginVal = (e) => {
const val = e.target.value;
marginValue.innerHTML = `${val}px`;
};
size.addEventListener("change", updateSizeValue);
margin.addEventListener("change", updateMarginVal);
btns.forEach((btn) => {
btn.addEventListener("click", (e) => {
e.preventDefault();
if (btn.hasAttribute("data-generate-qr-btn")) {
displayQRCode();
}
flippedCards.forEach((card) => card.classList.toggle("flipped"));
});
});
});