Versie 0.2.0

This commit is contained in:
Atreides Assets committed 2026-10-29 11:57:29 +01:00
commit e77d8fd373
495 files changed
+81026

No files matched your search

+43
View File
@@ -0,0 +1,43 @@
// Generated, do not edit. sha256:9910b171f8780710e55bbf6e2270b3758af0e766b12a3590b21420b1bc45cfe8
import { listAssets } from '../data/assets.js';
import { baseCurrency } from '../app-settings.js';
import { currentRate } from '../price/providers.js';
import { fmtMoney } from '../ui/format.js';
import { esc } from '../ui/escape.js';
import { t } from '../i18n/index.js';
export function secondCurrencyOf(instance, fallback = null) {
const p = instance && instance.params;
const v = p && Object.prototype.hasOwnProperty.call(p, 'second') ? p.second : fallback;
return typeof v === 'string' && v !== '' && v !== baseCurrency() ? v : null;
}
export async function secondCurrencyChoices() {
const base = baseCurrency();
const fiat = (await listAssets()).filter(a => a.kind === 'fiat' && a.symbol !== base);
const rates = await Promise.all(fiat.map(a => currentRate(a.symbol).catch(() => null)));
return fiat.filter((_, i) => rates[i] != null).map(a => a.symbol).sort();
}
export async function secondAmount(baseAmount, code, fmtOpts = {}) {
if (!code || baseAmount == null || !Number.isFinite(baseAmount)) return '';
const rate = await currentRate(code).catch(() => null);
return rate ? fmtMoney(baseAmount / rate, code, fmtOpts) : '';
}
export async function renderSecondCurrencySetting(host, instance, commit, fallback = null) {
const current = secondCurrencyOf(instance, fallback);
const choices = await secondCurrencyChoices();
if (current && !choices.includes(current)) choices.unshift(current);
const opties = [`<option value=""${current ? '' : ' selected'}>${esc(t('dashboard.secondNone'))}</option>`]
.concat(choices.map(c => `<option value="${esc(c)}"${c === current ? ' selected' : ''}>${esc(c)}</option>`)).join('');
const block = document.createElement('label');
block.className = 'dash-set-row';
block.innerHTML = `<span class="t-label t-label--ter">${esc(t('dashboard.secondCurrency'))}</span>
<select class="input dash-set-select" data-second>${opties}</select>`;
host.appendChild(block);
block.querySelector('select').addEventListener('change', e => {
instance.params = { ...(instance.params || {}), second: e.target.value || null };
commit();
});
}