2019-07-26 20:33:07 +00:00
{% include 'header.html' %}
2024-01-25 16:50:06 +00:00
{% from 'style.html' import breadcrumb_line_svg, circular_arrows_svg, withdraw_svg, utxo_groups_svg, create_utxo_svg, lock_svg, eye_show_svg %}
2022-10-10 21:44:14 +00:00
< div class = "container mx-auto" >
2024-01-25 16:50:06 +00:00
< section class = "p-5 mt-5" >
2023-04-06 14:59:28 +00:00
< div class = "flex flex-wrap items-center -m-2" >
2024-01-25 16:50:06 +00:00
< div class = "w-full md:w-1/2 p-2" >
< ul class = "flex flex-wrap items-center gap-x-3 mb-2" >
< li > < a class = "flex font-medium text-xs text-coolGray-500 dark:text-gray-300 hover:text-coolGray-700" href = "/" > < p > Home< / p > < / a > < / li >
< li > {{ breadcrumb_line_svg | safe }}< / li >
< li > < a class = "flex font-medium text-xs text-coolGray-500 dark:text-gray-300 hover:text-coolGray-700" href = "/wallets" > Wallets< / a > < / li >
< li > {{ breadcrumb_line_svg | safe }}< / li >
< / ul >
< / div >
2023-04-06 14:59:28 +00:00
< / div >
2024-01-25 16:50:06 +00:00
< / section >
< section class = "py-3" >
2023-04-06 14:59:28 +00:00
< div class = "container px-4 mx-auto" >
< div class = "relative py-11 px-16 bg-coolGray-900 dark:bg-blue-500 rounded-md overflow-hidden" >
2024-01-25 16:50:06 +00:00
< img class = "absolute z-10 left-4 top-4" src = "/static/images/elements/dots-red.svg" alt = "dots-red" >
< img class = "absolute z-10 right-4 bottom-4" src = "/static/images/elements/dots-red.svg" alt = "dots-red" >
< img class = "absolute h-64 left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2 object-cover" src = "/static/images/elements/wave.svg" alt = "wave" >
2023-04-06 14:59:28 +00:00
< div class = "relative z-20 flex flex-wrap items-center -m-3" >
2023-06-26 18:01:09 +00:00
< div class = "w-full md:w-1/2 p-3 h-48" >
2023-06-28 15:45:41 +00:00
< h2 class = "mb-6 text-4xl font-bold text-white tracking-tighter" > Wallets< / h2 >
2024-01-25 16:50:06 +00:00
< div class = "flex items-center" >
< h2 class = "text-lg font-bold text-white tracking-tighter mr-2" > Total Assets:< / h2 >
< button id = "hide-usd-amount-toggle" class = "flex items-center justify-center p-1 focus:ring-0 focus:outline-none" > {{ eye_show_svg | safe }}< / button >
< / div >
< div class = "flex items-baseline mt-2" >
< div id = "total-usd-value" class = "text-5xl font-bold text-white" > < / div >
< div id = "usd-text" class = "text-sm text-white ml-1" > USD< / div >
< / div >
< div id = "total-btc-value" class = "text-sm text-white mt-2" > < / div >
2023-04-06 14:59:28 +00:00
< / div >
2024-01-25 16:50:06 +00:00
< div class = "w-full md:w-1/2 p-3 p-6 container flex flex-wrap items-center justify-end items-center mx-auto" >
< a class = "rounded-full mr-5 flex flex-wrap justify-center px-5 py-3 bg-blue-500 hover:bg-blue-600 font-medium text-sm text-white border dark:bg-gray-500 dark:hover:bg-gray-700 border-blue-500 rounded-md shadow-button focus:ring-0 focus:outline-none" id = "refresh" href = "/changepassword" > {{ lock_svg | safe }}< span > Change Password< / span > < / a >
< a class = "rounded-full flex flex-wrap justify-center px-5 py-3 bg-blue-500 hover:bg-blue-600 font-medium text-sm text-white border dark:bg-gray-500 dark:hover:bg-gray-700 border-blue-500 rounded-md shadow-button focus:ring-0 focus:outline-none" id = "refresh" href = "/wallets" > {{ circular_arrows_svg | safe }}< span > Refresh< / span > < / a >
2023-04-06 14:59:28 +00:00
< / div >
2022-10-10 21:44:14 +00:00
< / div >
2023-04-06 14:59:28 +00:00
< / div >
< / div >
< / section >
2024-01-25 16:50:06 +00:00
2023-04-06 14:59:28 +00:00
{% include 'inc_messages.html' %}
2024-01-25 16:50:06 +00:00
2023-04-06 14:59:28 +00:00
< section class = "py-4" >
< div class = "container px-4 mx-auto" >
2024-01-25 16:50:06 +00:00
< div class = "flex flex-wrap -m-4" >
2024-02-09 20:53:37 +00:00
{% for w in wallets %}
{% if w.havedata %}
{% if w.error %}< p > Error: {{ w.error }}< / p >
2024-01-25 16:50:06 +00:00
{% else %}
< div class = "w-full lg:w-1/3 p-4" >
2024-04-12 12:46:47 +00:00
< div class = "bg-gray-50 rounded overflow-hidden dark:bg-gray-500" >
2023-04-06 14:59:28 +00:00
< div class = "pt-6 px-6 mb-10 flex justify-between items-center" >
< span class = "inline-flex items-center justify-center w-9 h-10 bg-white-50 rounded" >
2024-01-25 16:50:06 +00:00
< img class = "h-9" src = "/static/images/coins/{{ w.name }}.png" alt = "{{ w.name }}" >
2023-04-06 14:59:28 +00:00
< / span >
2024-01-25 16:50:06 +00:00
< a class = "py-2 px-3 bg-blue-500 text-xs text-white rounded-full hover:bg-blue-600" href = "/wallet/{{ w.ticker }}" > Manage Wallet< / a >
2022-10-10 21:44:14 +00:00
< / div >
2023-04-06 14:59:28 +00:00
< div class = "px-6 mb-6" >
< h4 class = "text-xl font-bold dark:text-white" > {{ w.name }}
< span class = "inline-block font-medium text-xs text-gray-500 dark:text-white" > ({{ w.ticker }})< / span >
< / h4 >
2024-01-25 16:50:06 +00:00
< p class = "text-xs text-gray-500 dark:text-gray-200" > Version: {{ w.version }} {% if w.updating %} < span class = "inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-700 dark:hover:bg-gray-700" > Updating..< / span > < / p >
{% endif %}
2022-10-10 21:44:14 +00:00
< / div >
2023-04-06 14:59:28 +00:00
< div class = "p-6 bg-coolGray-100 dark:bg-gray-600" >
2024-04-12 12:46:47 +00:00
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Balance:< / h4 >
< div class = "bold inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200 coinname-value" data-coinname = "{{ w.name }}" > {{ w.balance }} {{ w.ticker }}< / div >
< / div >
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white usd-text" > {{ w.ticker }} USD value:< / h4 >
< div class = "bold inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200 usd-value" data-coinname = "{{ w.name }}" > < / div >
< / div >
2024-02-09 20:53:37 +00:00
{% if w.pending %}
2023-06-28 15:45:41 +00:00
< div class = "flex mb-2 justify-between items-center" >
2024-02-09 20:53:37 +00:00
< h4 class = "text-xs font-bold text-green-500 dark:text-green-500" > Pending:< / h4 >
< span class = "bold inline-block py-1 px-2 rounded-full bg-green-100 text-xs text-green-500 dark:bg-gray-500 dark:text-green-500 coinname-value" data-coinname = "{{ w.name }}" > +{{ w.pending }} {{ w.ticker }}< / span >
2023-06-28 15:45:41 +00:00
< / div >
< div class = "flex mb-2 justify-between items-center" >
2024-02-09 20:53:37 +00:00
< h4 class = "text-xs font-bold text-green-500 dark:text-green-500" > Pending USD value:< / h4 >
2023-06-28 15:45:41 +00:00
< div class = "bold inline-block py-1 px-2 rounded-full bg-green-100 text-xs text-green-500 dark:bg-gray-500 dark:text-green-500 usd-value" > < / div >
< / div >
{% endif %}
2023-12-29 13:36:00 +00:00
{% if w.cid == '1' %} {# PART #}
2023-04-06 14:59:28 +00:00
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Blind Balance:< / h4 >
2023-06-26 18:01:09 +00:00
< span class = "bold inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200 coinname-value" data-coinname = "{{ w.name }}" > {{ w.blind_balance }} {{ w.ticker }}< / span >
< / div >
2023-06-28 15:45:41 +00:00
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Blind USD value:< / h4 >
< div class = "bold inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200 usd-value" > < / div >
< / div >
2023-06-26 18:01:09 +00:00
{% if w.blind_unconfirmed %}
2023-04-06 14:59:28 +00:00
< div class = "flex mb-2 justify-between items-center" >
2023-06-28 15:45:41 +00:00
< h4 class = "text-xs font-bold text-green-500 dark:text-green-500" > Blind Unconfirmed:< / h4 >
< span class = "bold inline-block py-1 px-2 rounded-full bg-green-100 text-xs text-green-500 dark:bg-gray-500 dark:text-green-500 coinname-value" data-coinname = "{{ w.name }}" > +{{ w.blind_unconfirmed }} {{ w.ticker }}< / span >
< / div >
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-bold text-green-500 dark:text-green-500" > Blind Unconfirmed USD value:< / h4 >
< div class = "bold inline-block py-1 px-2 rounded-full bg-green-100 text-xs text-green-500 dark:bg-gray-500 dark:text-green-500 usd-value" > < / div >
2023-12-29 13:36:00 +00:00
< / div >
2023-06-28 15:45:41 +00:00
{% endif %}
2023-04-06 14:59:28 +00:00
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Anon Balance:< / h4 >
2023-06-26 18:01:09 +00:00
< span class = "bold inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200 coinname-value" data-coinname = "{{ w.name }}" > {{ w.anon_balance }} {{ w.ticker }}< / span >
< / div >
2023-06-28 15:45:41 +00:00
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Anon USD value:< / h4 >
< div class = "bold inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200 usd-value" > < / div >
< / div >
2023-06-26 18:01:09 +00:00
{% if w.anon_pending %}
2023-04-06 14:59:28 +00:00
< div class = "flex mb-2 justify-between items-center" >
2023-06-28 15:45:41 +00:00
< h4 class = "text-xs font-bold text-green-500 dark:text-green-500" > Anon Pending:< / h4 >
2024-04-12 12:46:47 +00:00
< span class = "bold inline-block py-1 px-2 rounded-full bg-green-100 text-xs text-green-500 dark:bg-gray-500 dark:text-green-500 coinname-value" data-coinname = "{{ w.name }}" >
2023-06-26 18:01:09 +00:00
+{{ w.anon_pending }} {{ w.ticker }}< / span >
2023-04-06 14:59:28 +00:00
< / div >
2023-06-28 15:45:41 +00:00
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-bold text-green-500 dark:text-green-500" > Anon Pending USD value:< / h4 >
< div class = "bold inline-block py-1 px-2 rounded-full bg-green-100 text-xs text-green-500 dark:bg-gray-500 dark:text-green-500 usd-value" > < / div >
2023-12-29 13:36:00 +00:00
< / div >
2023-04-06 14:59:28 +00:00
{% endif %}
2023-12-29 13:36:00 +00:00
{% endif %} {# / PART #}
{% if w.cid == '3' %} {# LTC #}
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > MWEB Balance:< / h4 >
< span class = "bold inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200 coinname-value" data-coinname = "{{ w.name }}" > {{ w.mweb_balance }} {{ w.ticker }}< / span >
< / div >
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > MWEB USD value:< / h4 >
< div class = "bold inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200 usd-value" > < / div >
< / div >
{% if w.mweb_pending %}
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-bold text-green-500 dark:text-green-500" > MWEB Pending:< / h4 >
< span class = "bold inline-block py-1 px-2 rounded-full bg-green-100 text-xs text-green-500 dark:bg-gray-500 dark:text-green-500 coinname-value" data-coinname = "{{ w.name }}" >
+{{ w.mweb_pending }} {{ w.ticker }}< / span >
< / div >
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-bold text-green-500 dark:text-green-500" > MWEB Pending USD value:< / h4 >
< div class = "bold inline-block py-1 px-2 rounded-full bg-green-100 text-xs text-green-500 dark:bg-gray-500 dark:text-green-500 usd-value" > < / div >
< / div >
2023-04-06 14:59:28 +00:00
{% endif %}
2024-01-25 16:50:06 +00:00
{% endif %}
{# / LTC #}
< hr class = "border-t border-gray-100 dark:border-gray-500 my-5" >
2023-04-06 14:59:28 +00:00
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Blocks:< / h4 >
2024-01-25 16:50:06 +00:00
< span class = "inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200" > {{ w.blocks }}{% if w.known_block_count %} / {{ w.known_block_count }}
{% endif %}
< / span >
2023-04-06 14:59:28 +00:00
< / div >
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Last Updated:< / h4 >
< span class = "inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200" > {{ w.lastupdated }}< / span >
2024-01-25 16:50:06 +00:00
< / div >
{% if w.bootstrapping %}
2023-04-06 14:59:28 +00:00
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Bootstrapping:< / h4 >
< span class = "inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200" > {{ w.bootstrapping }}< / span >
2024-01-25 16:50:06 +00:00
< / div >
{% endif %}
2023-04-06 14:59:28 +00:00
{% if w.encrypted %}
< div class = "flex mb-2 justify-between items-center" >
< h4 class = "text-xs font-medium dark:text-white" > Locked:< / h4 >
< span class = "inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200" > {{ w.locked }}< / span >
2024-01-25 16:50:06 +00:00
< / div >
{% endif %}
< div class = "flex mb-2 justify-between items-center" >
2023-04-06 14:59:28 +00:00
< h4 class = "text-xs font-medium dark:text-white" > Expected Seed:< / h4 >
< span class = "inline-block py-1 px-2 rounded-full bg-blue-100 text-xs text-black-500 dark:bg-gray-500 dark:text-gray-200" > {{ w.expected_seed }}< / span >
< / div >
< div class = "flex justify-between mb-1 mt-10" >
2024-01-25 16:50:06 +00:00
< span class = "text-xs font-medium dark:text-gray-200" > Blockchain< / span >
< span class = "text-xs font-medium dark:text-gray-200" > {{ w.synced }}%< / span >
2023-04-06 14:59:28 +00:00
< / div >
2024-04-12 12:46:47 +00:00
< div class = "w-full bg-gray-200 rounded-full h-1 " data-tooltip-target = "tooltip-blocks{{loop.index}}" >
< div class = "{% if w.synced | float < 100 %} bg-red-500 sync-bar-color-change {% else %} bg-blue-500 {% endif %} h-1 rounded-full" style = "width: {{ w.synced }}%;" > < / div >
< / div >
< div class = "flex justify-between mb-1 mt-5" >
< span class = "text-xs font-medium dark:text-gray-200" >
< script >
if ({{ w.synced }} !== 100) {
document.write("< p class = 'bg-gray-50 rounded overflow-hidden dark:bg-gray-500 p-2.5 dark:text-white' > The order book/blockchain is currently syncing, offers will only display once the network has fully < b > 100%< / b > synced. Please wait until the process completes.< / p > ");
}
< / script >
< div id = "tooltip-blocks{{loop.index}}" role = "tooltip" class = "inline-block absolute invisible z-10 py-2 px-3 text-xs text-white {% if w.synced | float < 100 %} bg-red-500 sync-bar-color-change {% else %} bg-blue-500 {% endif %} rounded-lg shadow-sm opacity-0 transition-opacity duration-300 tooltip" >
< div > < span class = "bold" > Blocks: {{ w.blocks }}{% if w.known_block_count %} / {{ w.known_block_count }} {% endif %}< / div >
< div class = "tooltip-arrow pl-1" data-popper-arrow > < / div >
< / div >
< / span >
2023-04-06 14:59:28 +00:00
< / div >
< / div >
< / div >
{% endif %}
{% endif %}
2024-01-25 16:50:06 +00:00
< / div >
{% endfor %}
2023-04-06 14:59:28 +00:00
< / div >
< / section >
< / div >
2024-01-25 16:50:06 +00:00
2022-10-10 21:44:14 +00:00
{% include 'footer.html' %}
2024-01-25 16:50:06 +00:00
2023-06-26 18:01:09 +00:00
< script >
const coinNameToSymbol = {
'Bitcoin': 'BTC',
'Particl': 'PART',
'Particl Blind': 'PART',
'Particl Anon': 'PART',
'Monero': 'XMR',
'Litecoin': 'LTC',
'Firo': 'FIRO',
'Dash': 'DASH',
2024-04-12 12:46:47 +00:00
'PIVX': 'PIVX',
'Wownero': 'WOW',
'Decred': 'DCR',
'Zano': 'ZANO',
2023-06-26 18:01:09 +00:00
};
const getUsdValue = (cryptoValue, coinSymbol) => {
return fetch(`https://min-api.cryptocompare.com/data/price?fsym=${coinSymbol}& tsyms=USD`)
.then(response => response.json())
.then(data => {
const exchangeRate = data.USD;
if (!isNaN(exchangeRate)) {
return {
usdValue: cryptoValue * exchangeRate,
btcValue: cryptoValue / exchangeRate
};
} else {
throw new Error(`Invalid exchange rate for ${coinSymbol}`);
}
});
};
const updateValues = async () => {
const coinNameValues = document.querySelectorAll('.coinname-value');
for (const coinNameValue of coinNameValues) {
const coinFullName = coinNameValue.getAttribute('data-coinname');
const cryptoValue = parseFloat(coinNameValue.textContent);
const coinSymbol = coinNameToSymbol[coinFullName];
if (coinSymbol) {
try {
const { usdValue, btcValue } = await getUsdValue(cryptoValue, coinSymbol);
const usdValueElement = coinNameValue.nextElementSibling.querySelector('.usd-value');
if (usdValueElement) {
usdValueElement.textContent = `$${usdValue.toFixed(2)}`;
}
const btcValueElement = coinNameValue.nextElementSibling.querySelector('.btc-value');
if (btcValueElement) {
btcValueElement.textContent = `${btcValue.toFixed(8)} BTC`;
}
} catch (error) {
console.error(`Error retrieving exchange rate for ${coinSymbol}`);
}
} else {
console.error(`Coin symbol not found for full name: ${coinFullName}`);
}
}
calculateTotalUsdValue();
calculateTotalBtcValue();
};
2024-04-12 12:46:47 +00:00
const toggleUsdAmount = async (usdCell, isVisible) => {
2023-06-26 18:01:09 +00:00
2024-04-12 12:46:47 +00:00
const usdText = document.getElementById('usd-text');
if (usdText) {
usdText.style.display = isVisible ? 'inline' : 'none';
2023-06-26 18:01:09 +00:00
}
2024-04-12 12:46:47 +00:00
if (isVisible) {
const coinNameValueElement = usdCell.parentElement.querySelector('.coinname-value');
if (coinNameValueElement) {
const coinFullName = coinNameValueElement.getAttribute('data-coinname');
console.log("coinFullName:", coinFullName);
if (coinFullName) {
const cryptoValue = parseFloat(coinNameValueElement.textContent);
console.log("cryptoValue:", cryptoValue);
const coinSymbol = coinNameToSymbol[coinFullName.trim()];
console.log("coinSymbol:", coinSymbol);
if (coinSymbol) {
await updateValues();
} else {
console.error(`Coin symbol not found for full name: ${coinFullName}`);
}
} else {
console.error(`Data attribute 'data-coinname' not found.`);
}
} else {
}
} else {
usdCell.textContent = "******";
const btcValueElement = usdCell.nextElementSibling;
if (btcValueElement) {
btcValueElement.textContent = "****";
}
2023-06-26 18:01:09 +00:00
}
};
const toggleUsdIcon = (isVisible) => {
const usdIcon = document.querySelector("#hide-usd-amount-toggle svg");
if (usdIcon) {
if (isVisible) {
usdIcon.innerHTML = `
< path d = "M23.444,10.239C21.905,8.062,17.708,3,12,3S2.1,8.062,.555,10.24a3.058,3.058,0,0,0,0,3.52h0C2.1,15.938,6.292,21,12,21s9.905-5.062,11.445-7.24A3.058,3.058,0,0,0,23.444,10.239ZM12,17a5,5,0,1,1,5-5A5,5,0,0,1,12,17Z" > < / path >
`;
} else {
usdIcon.innerHTML = `
< path d = "M23.444,10.239a22.936,22.936,0,0,0-2.492-2.948l-4.021,4.021A5.026,5.026,0,0,1,17,12a5,5,0,0,1-5,5,5.026,5.026,0,0,1-.688-.069L8.055,20.188A10.286,10.286,0,0,0,12,21c5.708,0,9.905-5.062,11.445-7.24A3.058,3.058,0,0,0,23.444,10.239Z" > < / path >
< path d = "M12,3C6.292,3,2.1,8.062,.555,10.24a3.058,3.058,0,0,0,0,3.52h0a21.272,21.272,0,0,0,4.784,4.9l3.124-3.124a5,5,0,0,1,7.071-7.072L8.464,15.536l10.2-10.2A11.484,11.484,0,0,0,12,3Z" > < / path >
< path data-color = "color-2" d = "M1,24a1,1,0,0,1-.707-1.707l22-22a1,1,0,0,1,1.414,1.414l-22,22A1,1,0,0,1,1,24Z" > < / path >
`;
}
}
};
const calculateTotalUsdValue = async () => {
const coinNameValues = document.querySelectorAll('.coinname-value');
let totalUsdValue = 0;
for (const coinNameValue of coinNameValues) {
const coinFullName = coinNameValue.getAttribute('data-coinname');
const cryptoValue = parseFloat(coinNameValue.textContent);
const coinSymbol = coinNameToSymbol[coinFullName];
if (coinSymbol) {
try {
const { usdValue } = await getUsdValue(cryptoValue, coinSymbol);
totalUsdValue += usdValue;
const usdValueElement = coinNameValue.parentElement.nextElementSibling.querySelector('.usd-value');
if (usdValueElement) {
usdValueElement.textContent = `$${usdValue.toFixed(2)}`;
}
} catch (error) {
console.error(`Error retrieving exchange rate for ${coinSymbol}`);
}
} else {
console.error(`Coin symbol not found for full name: ${coinFullName}`);
}
}
const totalUsdValueElement = document.getElementById('total-usd-value');
if (totalUsdValueElement) {
totalUsdValueElement.textContent = `$${totalUsdValue.toFixed(2)}`;
}
};
const calculateTotalBtcValue = async () => {
const usdValueElements = document.getElementsByClassName('usd-value');
let totalBtcValue = 0;
try {
const btcToUsdRate = await fetch('https://min-api.cryptocompare.com/data/price?fsym=BTC& tsyms=USD')
.then(response => response.json())
.then(data => data.USD);
for (const usdValueElement of usdValueElements) {
const usdValue = parseFloat(usdValueElement.textContent.replace('$', ''));
const btcValue = usdValue / btcToUsdRate;
if (!isNaN(btcValue)) {
totalBtcValue += btcValue;
} else {
console.error(`Invalid USD value: ${usdValue}`);
}
}
const totalBtcValueElement = document.getElementById('total-btc-value');
if (totalBtcValueElement) {
if (localStorage.getItem('usdAmountVisible') === 'false') {
totalBtcValueElement.textContent = "****";
} else {
totalBtcValueElement.textContent = `~ ${totalBtcValue.toFixed(8)} BTC`;
}
}
} catch (error) {
console.error(`Error retrieving BTC to USD exchange rate: ${error}`);
}
};
const loadUsdAmountVisibility = async () => {
let usdAmountVisible = localStorage.getItem('usdAmountVisible') === 'true';
toggleUsdIcon(usdAmountVisible);
const usdValueElements = document.getElementsByClassName('usd-value');
for (const usdValueElement of usdValueElements) {
toggleUsdAmount(usdValueElement, usdAmountVisible, !usdAmountVisible);
}
const totalUsdValueElement = document.getElementById('total-usd-value');
if (!usdAmountVisible & & totalUsdValueElement) {
totalUsdValueElement.textContent = "*****";
} else if (usdAmountVisible & & totalUsdValueElement) {
await calculateTotalUsdValue();
calculateTotalBtcValue();
}
};
window.onload = async () => {
const hideUsdAmountToggle = document.getElementById('hide-usd-amount-toggle');
let usdAmountVisible = localStorage.getItem('usdAmountVisible') === 'true';
hideUsdAmountToggle.addEventListener('click', async () => {
usdAmountVisible = !usdAmountVisible;
localStorage.setItem('usdAmountVisible', usdAmountVisible);
toggleUsdIcon(usdAmountVisible);
const usdValueElements = document.getElementsByClassName('usd-value');
for (const usdValueElement of usdValueElements) {
toggleUsdAmount(usdValueElement, usdAmountVisible);
}
const totalUsdValueElement = document.getElementById('total-usd-value');
if (!usdAmountVisible & & totalUsdValueElement) {
totalUsdValueElement.textContent = "*****";
} else if (usdAmountVisible & & totalUsdValueElement) {
await calculateTotalUsdValue();
}
const totalBtcValueElement = document.getElementById('total-btc-value');
if (!usdAmountVisible & & totalBtcValueElement) {
totalBtcValueElement.textContent = "";
} else if (usdAmountVisible & & totalBtcValueElement) {
await calculateTotalBtcValue();
}
});
await loadUsdAmountVisibility();
};
< / script >
2022-10-10 21:44:14 +00:00
< / body >
2024-02-09 20:53:37 +00:00
< / html >