123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- const root = document.getElementById("root");
- const url = "https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5";
- let data = [
- {
- "ccy": "USD",
- "base_ccy": "UAH",
- "buy": "26.00000",
- "sale": "26.20000"
- },
- {
- "ccy": "EUR",
- "base_ccy": "UAH",
- "buy": "29.90000",
- "sale": "30.50000"
- },
- {
- "ccy": "RUR",
- "base_ccy": "UAH",
- "buy": "0.35000",
- "sale": "0.38000"
- },
- {
- "ccy": "BTC",
- "base_ccy": "USD",
- "buy": "58252.9497",
- "sale": "64384.8391"
- }
- ]
- let currentCurrency = null;
- let bankOperation = "buy";
- let defaultValue = 100;
- getCurrency();
- function getCurrency() {
- fetch(url)
- .then((res) => {
- return res.json();
- },
- (err) => {
- currentCurrency = data[0];
- initApp(data, currentCurrency);
- console.log("some probloms");
- })
- .then((json) => {
- if (json) {
- data = json;
- currentCurrency = data[0];
- initApp(json, currentCurrency);
- }
- }
- )
- }
- function initApp(data, currentCurrency) {
- const wrapper = document.createElement("div");
- wrapper.classList.add("wrapper");
- root.appendChild(wrapper);
- const informBlockWrapper = document.createElement("div");
- informBlockWrapper.classList.add("informBlockWrapper");
- wrapper.appendChild(informBlockWrapper);
- const currencyBlockWrapper = document.createElement("div");
- currencyBlockWrapper.classList.add("currencyBlockWrapper");
- informBlockWrapper.appendChild(currencyBlockWrapper);
- for (let i = 0; i < 3; i++) {
- const currencyBlock = document.createElement("div");
- currencyBlock.classList.add("currencyBlock");
- currencyBlock.innerText = `${data[i].ccy}`;
- currencyBlockWrapper.appendChild(currencyBlock);
- currencyBlock.addEventListener("click", chooseCurrency);
- }
- const exchangeRatesWrapper = document.createElement("div");
- exchangeRatesWrapper.classList.add("currencyBlockWrapperValue");
- informBlockWrapper.appendChild(exchangeRatesWrapper);
- for (let i = 0; i < 3; i++) {
- const exchangeRates = document.createElement("div");
- exchangeRates.classList.add("currencyBlockValue");
- exchangeRatesWrapper.appendChild(exchangeRates);
- for (let j = 0; j < 1; j++) {
- const buySaleCell = document.createElement("div");
- buySaleCell.classList.add("currencyBlockItem");
- buySaleCell.innerText = `${Number(data[i].buy).toFixed(2)} / ${Number(data[i].sale).toFixed(2)}`;
- exchangeRates.appendChild(buySaleCell);
- }
- }
- const tableHeader = document.createElement("div");
- tableHeader.classList.add("tableHeader");
- wrapper.appendChild(tableHeader);
- const titleHeaderLeft = document.createElement("div");
- titleHeaderLeft.classList.add("blockTitle");
- titleHeaderLeft.innerText = "Отдаю";
- tableHeader.appendChild(titleHeaderLeft);
- const titleHeaderRight = document.createElement("div");
- titleHeaderRight.classList.add("titleHeaderRight", "blockTitle");
- titleHeaderRight.innerText = "Получаю";
- tableHeader.appendChild(titleHeaderRight);
- const converterWrapper = document.createElement("div");
- converterWrapper.classList.add("converterWrapper");
- wrapper.appendChild(converterWrapper);
- updateTable(currentCurrency)
- }
- function updateTable() {
- if (bankOperation === "buy") {
- leftBlock();
- centerBlock();
- rightBlock();
- } else {
- if (bankOperation === "sale") {
- rightBlock();
- centerBlock();
- leftBlock();
- }
- }
- }
- function leftBlock() {
- const converterWrapper = document.querySelector(".converterWrapper");
- const converterBlockLeft = document.createElement("div");
- converterBlockLeft.classList.add("converterBlock");
- converterWrapper.appendChild(converterBlockLeft);
- const converterBlokTitleSell = document.createElement("div");
- converterBlokTitleSell.classList.add("converterBlockTitle");
- converterBlokTitleSell.innerText = `${currentCurrency.ccy}`;
- converterBlockLeft.appendChild(converterBlokTitleSell);
- const converterCurrencySell = document.createElement("input");
- converterCurrencySell.classList.add("converterCurrency", "sell");
- converterCurrencySell.value = defaultValue;
- converterBlockLeft.appendChild(converterCurrencySell);
- converterCurrencySell.addEventListener("keyup", inputHandler);
- const converterBlockInfoSell = document.createElement("div");
- converterBlockInfoSell.classList.add("converterBlockInfo");
- converterBlockInfoSell.innerText = `1 ${currentCurrency.ccy} = ${Number(currentCurrency[bankOperation]).toFixed(2)} UAH`;
- converterBlockLeft.appendChild(converterBlockInfoSell);
- }
- function centerBlock() {
- const converterWrapper = document.querySelector(".converterWrapper");
- const converterBlockCenter = document.createElement("div");
- converterBlockCenter.classList.add("converterBlockCenter");
- converterWrapper.appendChild(converterBlockCenter);
- const icon = document.createElement("i");
- icon.classList.add("fas");
- icon.classList.add("fa-sync-alt");
- icon.addEventListener("click", swapCurrency);
- converterBlockCenter.appendChild(icon);
- }
- function rightBlock() {
- const converterWrapper = document.querySelector(".converterWrapper");
- const converterBlockRight = document.createElement("div");
- converterBlockRight.classList.add("converterBlock");
- converterWrapper.appendChild(converterBlockRight);
- const converterBlokTitleBuy = document.createElement("div");
- converterBlokTitleBuy.classList.add("converterBlockTitle");
- converterBlokTitleBuy.innerText = "UAH";
- converterBlockRight.appendChild(converterBlokTitleBuy);
- const converterCurrencyBuy = document.createElement("input");
- converterCurrencyBuy.classList.add("converterCurrency", "buy");
- converterCurrencyBuy.value = defaultValue * Number(currentCurrency[bankOperation]);
- converterCurrencyBuy.addEventListener("keyup", inputHandler);
- converterBlockRight.appendChild(converterCurrencyBuy);
- const converterBlockInfoBuy = document.createElement("div");
- converterBlockInfoBuy.classList.add("converterBlockInfo");
- converterBlockInfoBuy.innerText = `1 UAH = ${(1 / Number(currentCurrency[bankOperation])).toFixed(2)} ${currentCurrency.ccy}`;
- converterBlockRight.appendChild(converterBlockInfoBuy);
- }
- function chooseCurrency(event) {
- switch (event.target.innerText) {
- case "USD":
- currentCurrency = data[0];
- break
- case "EUR":
- currentCurrency = data[1];
- break;
- case "RUR":
- currentCurrency = data[2];
- break;
- }
- const converterWrapper = document.querySelector(".converterWrapper")
- converterWrapper.innerHTML = "";
- updateTable(currentCurrency);
- }
- function inputHandler(event) {
- let buyInput = document.querySelector(".buy");
- let sellInput = document.querySelector(".sell");
- let value = event.target.value;
- if (event.target.classList.contains("sell")) {
- if (isNaN(+event.target.value)) {
- buyInput.value = "Wrong value";
- } else {
- buyInput.value = (Number(value) * Number(currentCurrency[bankOperation])).toFixed(2);
- }
- }
- if (event.target.classList.contains("buy")) {
- if (isNaN(+event.target.value)) {
- sellInput.value = "Wrong value";
- } else {
- sellInput.value = (Number(value) / Number(currentCurrency[bankOperation])).toFixed(2);
- }
- }
- }
- function swapCurrency() {
- const converterWrapper = document.querySelector(".converterWrapper");
- converterWrapper.innerHTML = "";
- if (bankOperation === "buy") {
- bankOperation = "sale";
- } else {
- bankOperation = "buy";
- }
- updateTable();
- }
|