Files
AtreidesAssetsFree/client/wealth/carried.js
T

38 lines
1.5 KiB
JavaScript
Raw Normal View History

2026-10-29 11:57:29 +01:00
// Generated, do not edit. sha256:f962f4bc88fe2f11615f93f44c35fe729fcb597398ce82af6f05055c78fd9a0a
import { CONFIG } from '../../shared/config.js';
export function carriedPerAsset({ dagen = [], assets = [], rijenPerAsset = new Map() } = {}) {
const uit = new Map();
for (const a of assets) {
if (a.kind === 'fiat') continue;
const echt = new Set((rijenPerAsset.get(a.id) || []).filter(r => r.fiatPrice != null && r.fiatPrice > 0)
.map(r => String(r.observedAt).slice(0, 10)));
if (dagen.length) echt.add(dagen[dagen.length - 1]);
const dicht = CONFIG.PRICE_HISTORY.CLOSED_MARKET_DAYS[a.kind] ?? 0;
const vlag = dagen.map(() => false);
let gezien = false;
let begin = null;
const sluit = eind => {
if (begin != null && eind - begin > dicht) for (let k = begin; k < eind; k++) vlag[k] = true;
begin = null;
};
dagen.forEach((dag, i) => {
if (echt.has(dag)) { sluit(i); gezien = true; return; }
if (gezien && begin == null) begin = i;
});
sluit(dagen.length);
uit.set(a.id, vlag);
}
return uit;
}
export function carriedDays(reeks = {}, ids = null, assets = []) {
const kandidaten = assets.filter(a => ids == null || ids.includes(a.id));
const vlaggen = carriedPerAsset({ dagen: reeks.dagen || [], assets: kandidaten, rijenPerAsset: reeks.rijenPerAsset || new Map() });
const uit = new Set();
for (const [id, vlag] of vlaggen) {
const eenheden = reeks.eenhedenPerAsset?.get(id) || [];
vlag.forEach((aan, i) => { if (aan && eenheden[i]) uit.add(i); });
}
return uit;
}