forked from git.gladyson/openmonetis
Remove 6 componentes não utilizados (dashboard-grid, expenses/income by category widgets, installment analysis panels, fatura-warning-dialog). Remove funções/tipos não utilizados: successResult, generateApiToken, validateApiToken, getTodayUTC/Local, formatDateForDb, getDateInfo, calculatePercentage, roundToDecimals, safeParseInt/Float, isPeriodValid, getLastPeriods, normalizeWhitespace, formatCurrency wrapper, InboxItemInput, InboxBatchInput, ProcessInboxInput, DiscardInboxInput, LancamentosColumnId, 5 funções de anticipation-helpers. Redireciona imports de formatCurrency para lib/lancamentos/formatting-helpers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
27 lines
783 B
TypeScript
27 lines
783 B
TypeScript
/**
|
|
* Utility functions for mathematical calculations
|
|
*/
|
|
|
|
/**
|
|
* Calculates percentage change between two values
|
|
* @param current - Current value
|
|
* @param previous - Previous value
|
|
* @returns Percentage change or null if previous is 0 and current is also 0
|
|
*/
|
|
export function calculatePercentageChange(
|
|
current: number,
|
|
previous: number,
|
|
): number | null {
|
|
const EPSILON = 0.01; // Considera valores menores que 1 centavo como zero
|
|
|
|
if (Math.abs(previous) < EPSILON) {
|
|
if (Math.abs(current) < EPSILON) return null;
|
|
return current > 0 ? 100 : -100;
|
|
}
|
|
|
|
const change = ((current - previous) / Math.abs(previous)) * 100;
|
|
|
|
// Protege contra valores absurdos (retorna null se > 1 milhão %)
|
|
return Number.isFinite(change) && Math.abs(change) < 1000000 ? change : null;
|
|
}
|