- add 3Y/5Y/10Y financial history filtering and reorganize normalization details UI - add new fiscal taxonomy surface/income bridge/KPI packs and update Rust taxonomy loading - auto-detect Homebrew SQLite for native `sqlite-vec` in local dev/e2e with docs and env guidance
43 lines
854 B
TypeScript
43 lines
854 B
TypeScript
import type { FinancialCadence, FinancialStatementPeriod } from "@/lib/types";
|
|
|
|
export type FinancialHistoryWindow = 3 | 5 | 10;
|
|
|
|
export function financialHistoryLimit(
|
|
cadence: FinancialCadence,
|
|
window: FinancialHistoryWindow,
|
|
) {
|
|
if (cadence === "quarterly") {
|
|
return window * 4 + 4;
|
|
}
|
|
|
|
return window + 2;
|
|
}
|
|
|
|
function visiblePeriodCount(
|
|
cadence: FinancialCadence,
|
|
window: FinancialHistoryWindow,
|
|
) {
|
|
if (cadence === "quarterly") {
|
|
return window * 4;
|
|
}
|
|
|
|
return window;
|
|
}
|
|
|
|
export function filterPeriodsByHistoryWindow(
|
|
periods: FinancialStatementPeriod[],
|
|
cadence: FinancialCadence,
|
|
window: FinancialHistoryWindow,
|
|
) {
|
|
if (periods.length === 0) {
|
|
return periods;
|
|
}
|
|
|
|
const count = visiblePeriodCount(cadence, window);
|
|
if (periods.length <= count) {
|
|
return periods;
|
|
}
|
|
|
|
return periods.slice(-count);
|
|
}
|