araştırdığım kadarıyla şu an sağlıklı bir çözümü yok, eğer chromium tabanlı tarayıcılarda şu flag'ı açarsan:
chrome://flags/#enable-web-bluetooth-new-permissions-backend
getDevices() metodu kullanılıyor. Ama deneysel olduğu için henüz pek işe yarar değil.
Yine de bir butona tıkladığında kullanıcıya bluetooth cihazlarını çıkartıp eşlersen, sadece eşlediğin cihazları bu metodla alabiliyorsun. Yani yine bütün cihazları alıp ekleyemiyorsun. Eşlediklerini almak için:
navigator.bluetooth.getDevices()
.then(devices => console.log(devices))
ama dediğim gibi, çok sağlıklı bir çözümü yok şu an için :)
en pratik yolu;
const params = new Proxy(new URLSearchParams(window.location.search), {
get: (searchParams, prop) => searchParams.get(prop),
});
console.log( params?.isim )
console.log( params?.soyisim )
?. - optional chaining - yoksa hata vermemesi için kullanabilirsin.
erişilebilirlik adı altında kullanılan niteliklerden bir tanesi, daha çok ekran okuyucular için ilgili elemanın yaptığı işi belirtmek için kullanılıyor, görme engelli arkadaşların kullandığı ekran okuyucu programlar bunları algılayıp ona göre mesela tıklanan bir buton olduğunu, bir link bağlantısı olduğunu vs. anlayabiliyor.
erişilebilirlik konusuyla ilgili bir ders hazırlama niyetindeyim, daha detaylasını orada anlatırım ama şimdilik bu kadar bilgi yeterli olacaktır sanırım.
css'lerini ayrıca dahil edebilirsin, mesela github'ın markdown css'i için:
https://github.com/sindresorhus/github-markdown-css
.markdown-body class'ı aynen kalsın, buradaki css dosyasını import etmen yeterli olur. Kodları renklendirmek içinse başka eklentiler kullanman gerek tabi :)
fetch apisi de aslında promise dönüyor, yani muhtemelen fetch'i direk return etsekte aynı işi yapardı ancak ben kontrolü sevdiğim için resolve ve reject durumlarını bazı koşullara göre yönetmek ve bunu her servis istediğinde ayrıca yapmak istemediğim için tek fonksiyon içinde bu tarz bir yaklaşıma gittim, diğer türlü fetch'i direk return etsek her bir servis isteğinde then bloğu koyup res.json() dedikten sonra aynı kontrolleri vs. yapmak gerekecektir. toastr vs. daha global yönetmek adına böyle bir yaklaşıma gittim.
performansı artırmak için sayfada göründüğü anda componentleri yükletebilirsiniz, observer api ile, bizim kanalda da bir örneği var, bunu react'e uyarlamakta çok zor değil hazır paketleride var, ayırmaktan bir zarar gelmez ama sayfada görünmeyeni atmanında çok bir esprisi yok
mantık şöyle olmalı, bakiyeyi tuttuğun bir değerin olduğunu düşünüyorum. örneğin şöyle bir şeyde tutulsun şimdilik;
const balance = 6000
loop'da index değerini de dahil edip eğer index değeri 0 değilse bir önceki elemanı index - 1 ile seçip onun değerini balance'dan çıkarmak olacak. yani;
<table className="table text-wrap">
<thead>
<tr>
<th>Tarih</th>
<th>Tip</th>
<th>Firma</th>
<th>Açıklama</th>
<th>Tutar</th>
<th>Bakiye</th>
</tr>
</thead>
<tbody>
{transactions.map((item, key) => {
return (
<tr key={item.id}>
<td>{item.document_date}</td>
<td>{item.document_type}</td>
<td>{item.interlocutors_label}</td>
<td>{item.description}</td>
<td>
{readableMoneyFormat(item.document_total)} {props.detail.currency}
</td>
<td>
{readableMoneyFormat(key !== 0 ? balance - transactions[key - 1].document_total : balance)}
</td>
</tr>
);
})}
</tbody>
</table>;
çalışan bir örnek: https://codesandbox.io/s/icy-tdd-l1mpdj?file=/src/App.js
eğer mp4 apple cihazlarda çalışmıyorsa ki çalışması gerekir, codec problemi vardır, mp4 dosyası geçerli bir codec'te değildir.
internette örnek mp4 dosyaları var, onları deneyip bir test edin eğer onlar çalışıyorsa sorun codec'tendir. Boyut ile şöyle alakası olabilir, eğer stream ettiremiyorsan dosyayı tümünü yüklene kadar çalıştırmayabilir. onu stream sunucu yapıp çözmen gerekir ama o da ekstra maliyet :)
sayıları almak istiyorsan ufak bir regex'te kullanabilirsin:
$codes = [
'2110660MAVİ',
'2110660SARI',
'2110660KIRMIZI'
];
foreach($codes as $code) {
preg_match('@([0-9]+)@', $code, $number);
echo $number[1] . '<br />';
}
.mov uzantısı web standartı olmadığı için mümkünse videoların .mp4 formatında olması tüm cihazlarda doğru çalışmasını sağlayacaktır.