From f844f1e1a7da966493242b66d16fa6f965dece2a Mon Sep 17 00:00:00 2001 From: KimlikDAO-bot Date: Sun, 28 Jan 2024 17:26:53 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=202=20iptalciyle=20ilerleme=20hata?= =?UTF-8?q?s=C4=B1n=C4=B1=20d=C3=BCzelt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "al/imece\304\260ptal/birim.css" | 4 +- "al/imece\304\260ptal/birim.html" | 2 +- "al/imece\304\260ptal/birim.js" | 164 ++++++++++++++++++------------ 3 files changed, 102 insertions(+), 68 deletions(-) diff --git "a/al/imece\304\260ptal/birim.css" "b/al/imece\304\260ptal/birim.css" index 93ac1af4..4d3261a5 100644 --- "a/al/imece\304\260ptal/birim.css" +++ "b/al/imece\304\260ptal/birim.css" @@ -71,11 +71,11 @@ margin: 4px 0 0 10px; } -.im3 > .imcont > .imdel { +.im4 > .imcont > .imdel { opacity: 0.3 } -.im3 > .imcont > .imdel:hover { +.im4 > .imcont > .imdel:hover { opacity: 1; } diff --git "a/al/imece\304\260ptal/birim.html" "b/al/imece\304\260ptal/birim.html" index 20849109..19ee50ea 100644 --- "a/al/imece\304\260ptal/birim.html" +++ "b/al/imece\304\260ptal/birim.html" @@ -16,7 +16,7 @@ Adres Ağırlık -
+
diff --git "a/al/imece\304\260ptal/birim.js" "b/al/imece\304\260ptal/birim.js" index 1778ae33..b980ac2c 100644 --- "a/al/imece\304\260ptal/birim.js" +++ "b/al/imece\304\260ptal/birim.js" @@ -9,17 +9,32 @@ import TCKT from "/lib/ethereum/TCKT"; import evm from "/lib/ethereum/evm"; import dom from "/lib/util/dom"; -/** @const {Element} */ -const GösterButonu = dom.adla("imbe"); -/** @const {Element} */ -const İptalButonu = dom.adla("imbh"); -/** @const {Element} */ -const İptalciler = dom.adla("imf"); +/** @const {!Element} */ +const Kök = /** @type {!Element} */(dom.adla("im")); +/** @const {!Element} */ +const EşikGirdisi = /** @type {!Element} */(dom.adla("imt")); +/** @const {!Element} */ +const GösterButonu = /** @type {!Element} */(dom.adla("imbe")); +/** @const {!Element} */ +const İptalButonu = /** @type {!Element} */(dom.adla("imbh")); +/** @const {!Element} */ +const İptalciler = /** @type {!Element} */(dom.adla("imf")); +/** @const {!Element} */ +const Kutu = /** @type {!Element} */(dom.adla("imc")); +/** @const {!Element} */ +const ToplamAğırlık = /** @type {!Element} */(dom.adla("ims")); /** * @param {ChainId} ağ Native tokeninde TCKT fiyatının gösterileceği ağ. */ const fiyatGöster = (ağ) => { + /** @const {!Element} */ + const indirimsizFiyat = /** @type {!Element} */(dom.adla("imft")); + /** @const {!Element} */ + const indirimliFiyat = /** @type {!Element} */(dom.adla("imfs")); + /** @const {!Element} */ + const indirimYüzdesi = /** @type {!Element} */(dom.adla("imfu")); + /** * @type {!AğBilgisi} * @const @@ -30,16 +45,16 @@ const fiyatGöster = (ağ) => { /** @const {!Array} */ const ek = ağBilgisi.tokenEki; TCKT.priceIn(ağ, 0).then(([çok, az]) => { - dom.adla("imft").innerText = dom.paradanMetne(çok) + " " + token + (dom.TR ? ek[0] : ""); - dom.adla("imfs").innerText = dom.paradanMetne(az) + " " + token + (dom.TR ? ek[1] : ""); - dom.adla("imfu").innerText = Math.round(100 * (çok - az) / çok); + indirimsizFiyat.innerText = dom.paradanMetne(çok) + " " + token + (dom.TR ? ek[0] : ""); + indirimliFiyat.innerText = dom.paradanMetne(az) + " " + token + (dom.TR ? ek[1] : ""); + indirimYüzdesi.innerText = Math.round(100 * (çok - az) / çok); }); } const göster = () => { fiyatGöster(Cüzdan.ağ()); Cüzdan.ağDeğişince(fiyatGöster); - dom.adla("im").classList.remove("disabled"); + Kök.classList.remove("disabled"); } /** @@ -62,8 +77,8 @@ const atla = (sonra) => { İptalButonu.innerText = dom.TR ? "İmece iptal kurulmadı 🤌" : "Skipped 🤌"; İptalButonu.classList.add("done"); dom.düğmeDurdur(İptalButonu); - dom.adla("im").classList.add("done"); - dom.gizle(dom.adla("imc")); + Kök.classList.add("done"); + dom.gizle(Kutu); sonra({}, 0); } @@ -71,22 +86,33 @@ const atla = (sonra) => { * @param {function(!Object, number)} sonra */ const kutularıAç = (sonra) => { - dom.adla("im").classList.remove("done"); - dom.göster(dom.adla("imc")); + /** @const {!Element} */ + const iptalciGirdisiEkleDüğmesi = /** @type {!Element} */(dom.adla("imba")); + /** @const {!Element} */ + const eşikDüşürDüğmesi = /** @type {!Element} */(dom.adla("imtm")); + /** @const {!Element} */ + const eşikArtırDüğmesi = /** @type {!Element} */(dom.adla("imtp")); + /** @const {!Element} */ + const tamamDüğmesi = /** @type {!Element} */(dom.adla("imbt")); + /** @const {!Element} */ + const atlaDüğmesi = /** @type {!Element} */(dom.adla("imbi")); + + Kök.classList.remove("done"); + dom.göster(Kutu); dom.gizle(GösterButonu); dom.gizle(İptalButonu); - dom.adla("imbi").onclick = () => atla(sonra); + atlaDüğmesi.onclick = () => atla(sonra); /** @const {NodeList} */ const satır = İptalciler.children; - for (let i = 0; i < satır.length; ++i) { + for (let i = 0; i < satır.length; ++i) işlevEkle(satır[i]); - } - dom.adla("imba").onclick = girdiAlanıEkle; - dom.adla("imt").onblur = eşikDeğeriBlurOlunca; - dom.adla("imtm").onclick = () => eşikBirDeğiştir(false); - dom.adla("imtp").onclick = () => eşikBirDeğiştir(true); - dom.adla("imbt").onclick = () => { + + iptalciGirdisiEkleDüğmesi.onclick = iptalciGirdisiEkle; + EşikGirdisi.onblur = eşikDeğeriBlurOlunca; + eşikDüşürDüğmesi.onclick = () => eşikBirDeğiştir(false); + eşikArtırDüğmesi.onclick = () => eşikBirDeğiştir(true); + tamamDüğmesi.onclick = () => { /** @type {!Object} */ let adresAğırlığı = {}; /** @type {boolean} */ @@ -97,39 +123,43 @@ const kutularıAç = (sonra) => { /** @const {NodeList} */ const satır = İptalciler.children; for (let /** number */ i = 0; i < satır.length; ++i) { - /** @const {Element} */ - const girdi = satır[i].firstElementChild; + /** @const {!Element} */ + const girdi = /** @type {!Element} */(satır[i].firstElementChild); /** @const {string} */ const adres = girdi.value; if (!evm.adresGeçerli(adres) || adres in adresAğırlığı || - adres.toLowerCase() === Cüzdan.adres()) { + adres.toLowerCase() == Cüzdan.adres().toLowerCase()) { geçerli = false; satır[i].firstElementChild.classList.add("imin"); + } else { + /** @type {number} */ + const ağırlık = +satır[i].children[3].value; + adresAğırlığı[adres] = ağırlık; + toplamAğırlık += ağırlık; } - /** @type {number} */ - const ağırlık = +satır[i].children[3].value; - adresAğırlığı[adres] = ağırlık; - toplamAğırlık += ağırlık; } /** @type {number} */ - const eşikDeğeri = +dom.adla("imt").value; + const eşikDeğeri = +EşikGirdisi.value; if (toplamAğırlık < eşikDeğeri) { geçerli = false; - dom.adla("imt").classList.add("imin"); + EşikGirdisi.classList.add("imin"); + } + if (Object.keys(adresAğırlığı).length < 3) { + geçerli = false; } if (geçerli) { dom.göster(İptalButonu); İptalButonu.innerText = dom.TR ? "İmece iptal kuruldu ✓" : "Social revoke setup is complete ✓"; İptalButonu.onclick = null; - dom.gizle(dom.adla("imc")); - dom.adla("im").classList.add("done"); + dom.gizle(Kutu); + Kök.classList.add("done"); sonra(adresAğırlığı, eşikDeğeri); } }; } /** - * @param {Element} satır + * @param {!Element} satır */ const işlevEkle = (satır) => { /** @const {NodeList} */ @@ -143,26 +173,42 @@ const işlevEkle = (satır) => { elemanlar[3].onclick = (e) => e.target.value = ""; elemanlar[3].value = 1; elemanlar[4].onclick = birArttır; - elemanlar[5].onclick = satırSil; + elemanlar[5].onclick = iptalciGirdisiSil; } -const girdiAlanıEkle = () => { +const iptalciGirdisiEkle = () => { /** @const {number} */ const tane = İptalciler.childElementCount; if (tane >= 5) return; - /** @type {Element} */ - let yeniSatır = İptalciler.firstElementChild.cloneNode(true); + /** @const {!Element} */ + const yeniSatır = İptalciler.firstElementChild.cloneNode(true); işlevEkle(yeniSatır); - if (tane > 2) - İptalciler.classList.add("im3"); + if (tane >= 3) + İptalciler.classList.add("im4"); İptalciler.appendChild(yeniSatır); ağırlıkHesapla(); } +const iptalciGirdisiSil = (event) => { + /** @type {Element} */ + const a = event.target.nodeName == "A" + ? event.target : event.target.parentElement + const satırSayısı = İptalciler.childElementCount; + // Silmeden önceki sayı 4 ise, x'leri kaldır. + if (satırSayısı <= 4) + İptalciler.classList.remove("im4"); + if (satırSayısı > 3) + a.parentElement.remove(); + ağırlıkHesapla(); +} + +/** + * @param {Event} event + */ const eşikDeğeriBlurOlunca = (event) => { /** @const {boolean} */ - const geçerli = +event.target.value <= +dom.adla("ims").value; - dom.adla("imt").classList.toggle("imin", geçerli); + const geçerli = +event.target.value <= +ToplamAğırlık.value; + EşikGirdisi.classList.toggle("imin", geçerli); } /** @@ -176,7 +222,7 @@ const girdiDüzelt = (girdi) => { if (düz) girdi.value = düz /** @const {boolean} */ const hataVar = değer != "" && - (!düz || değer.toLowerCase() === Cüzdan.adres().toLowerCase()) + (!düz || değer.toLowerCase() == Cüzdan.adres().toLowerCase()) girdi.classList.toggle("imin", hataVar); } @@ -187,7 +233,7 @@ const yapıştır = (event) => { /** @type {Element} */ let a = /** @type {Element} */(event.target); for (; a.nodeName !== 'A'; a = a.parentElement) - if (a.nodeName === 'DIV') return; + if (a.nodeName == 'DIV') return; const girdi = a.previousElementSibling; navigator.clipboard.readText().then( (değer) => { @@ -196,17 +242,6 @@ const yapıştır = (event) => { }) } -const satırSil = (event) => { - let a = event.target.nodeName == "A" - ? event.target : event.target.parentElement - const satırSayısı = İptalciler.childElementCount; - if (satırSayısı <= 3) - İptalciler.classList.remove("im3"); - if (satırSayısı >= 3) - a.parentElement.remove(); - ağırlıkHesapla(); -} - const birAzalt = (event) => { const node = event.target.nextElementSibling; if (node.value == 1) return; @@ -224,16 +259,16 @@ const birArttır = (event) => { const ağırlıkBlurOlunca = (event) => { let val = event.target.value; if (val > 9) event.target.value = 9; - if (val < 1 || val === "") event.target.value = 1; + if (val < 1 || val == "") event.target.value = 1; ağırlıkHesapla(); } const eşikBirDeğiştir = (artır) => { - /** @const {Element} */ - const eşik = dom.adla("imt"); - const değer = +eşik.value; - const toplam = +dom.adla("ims").value; - eşik.value = artır + /** @const {number} */ + const değer = +EşikGirdisi.value; + /** @const {number} */ + const toplam = +ToplamAğırlık.value; + EşikGirdisi.value = artır ? Math.min(değer + 1, 99, toplam) : Math.max(değer - 1, 1); } @@ -245,10 +280,9 @@ const ağırlıkHesapla = () => { for (let /** number */ i = 0; i < satır.length; ++i) { total += +satır[i].children[3].value; } - dom.adla("ims").value = total; - const eşik = dom.adla("imt"); - if (eşik.value > total) - eşik.value = total; + ToplamAğırlık.value = total; + if (EşikGirdisi.value > total) + EşikGirdisi.value = total; } export default { kurVe, göster };