update
This commit is contained in:
@@ -131,6 +131,38 @@
|
||||
}).format(Number(value));
|
||||
}
|
||||
|
||||
function recentMeasurementWindow(rows, windowDays) {
|
||||
if (!Array.isArray(rows) || rows.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const normalizedWindowDays = Number(windowDays);
|
||||
if (!Number.isFinite(normalizedWindowDays) || normalizedWindowDays <= 0) {
|
||||
return rows;
|
||||
}
|
||||
|
||||
const sortedRows = rows
|
||||
.filter((row) => row && row.measured_at)
|
||||
.slice()
|
||||
.sort((left, right) => new Date(left.measured_at).getTime() - new Date(right.measured_at).getTime());
|
||||
if (sortedRows.length === 0) {
|
||||
return rows;
|
||||
}
|
||||
|
||||
const latestTs = new Date(sortedRows[sortedRows.length - 1].measured_at).getTime();
|
||||
if (!Number.isFinite(latestTs)) {
|
||||
return sortedRows;
|
||||
}
|
||||
|
||||
const minTs = latestTs - (normalizedWindowDays * 86400 * 1000);
|
||||
const filteredRows = sortedRows.filter((row) => {
|
||||
const measuredTs = new Date(row.measured_at).getTime();
|
||||
return Number.isFinite(measuredTs) && measuredTs >= minTs;
|
||||
});
|
||||
|
||||
return filteredRows.length ? filteredRows : [sortedRows[sortedRows.length - 1]];
|
||||
}
|
||||
|
||||
function parseStoredUtcDate(value) {
|
||||
const raw = String(value || '').trim();
|
||||
if (!raw) {
|
||||
@@ -1258,8 +1290,10 @@
|
||||
}, [payload, projectKey]);
|
||||
|
||||
const overviewCharts = useMemo(() => {
|
||||
const overviewWindowDays = Number(payload?.bootstrap_meta?.overview_window_days || 15);
|
||||
const overviewRows = recentMeasurementWindow(measurements, overviewWindowDays);
|
||||
const chartCoinCurrency = String(currentSettings.crypto_currency || 'DOGE').toUpperCase();
|
||||
const comparisonRows = measurements.filter((row) => {
|
||||
const comparisonRows = overviewRows.filter((row) => {
|
||||
const miningRate = Number(row.doge_per_hour_per_mh_interval);
|
||||
const price = Number(row.effective_price_per_coin ?? row.price_per_coin);
|
||||
return Number.isFinite(miningRate) && miningRate > 0 && Number.isFinite(price) && price > 0;
|
||||
@@ -1269,10 +1303,10 @@
|
||||
const basePrice = baseComparison ? Number(baseComparison.effective_price_per_coin ?? baseComparison.price_per_coin) : null;
|
||||
|
||||
return {
|
||||
mining: measurements.map((row) => ({ x: fmtDate(row.measured_at), y: row.coins_total })),
|
||||
performance: measurements.filter((row) => row.doge_per_day_interval !== null)
|
||||
mining: overviewRows.map((row) => ({ x: fmtDate(row.measured_at), y: row.coins_total })),
|
||||
performance: overviewRows.filter((row) => row.doge_per_day_interval !== null)
|
||||
.map((row) => ({ x: fmtDate(row.measured_at), y: row.doge_per_day_interval })),
|
||||
pricing: measurements.filter((row) => row.price_per_coin !== null)
|
||||
pricing: overviewRows.filter((row) => row.price_per_coin !== null)
|
||||
.map((row) => ({ x: fmtDate(row.measured_at), y: row.price_per_coin })),
|
||||
miningVsPrice: baseMining && basePrice ? [
|
||||
{
|
||||
@@ -1295,7 +1329,7 @@
|
||||
},
|
||||
] : [],
|
||||
};
|
||||
}, [currentSettings.crypto_currency, measurements]);
|
||||
}, [currentSettings.crypto_currency, measurements, payload?.bootstrap_meta?.overview_window_days]);
|
||||
|
||||
async function submitMeasurement(fromPreview) {
|
||||
const preview = normalizeOcrPreview(ocrPreview);
|
||||
|
||||
Reference in New Issue
Block a user