All files / src/pages/flowsheet-page/economics/results-panel/model financialMetricCatalog.ts

100% Statements 12/12
75% Branches 3/4
100% Functions 4/4
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                                      103x 103x 1133x   103x 1133x     103x             26x       48x           189x       7x   189x        
import type { EconomicsResultLineRead } from "@/api/apiStore.gen";
import {
  EconomicsResultLineKindEnum,
  MetricComparisonDirection,
} from "@/api/apiStore.gen";
import keyFinancialMetricRows from "@/data/economicsKeyFinancialMetrics.json";
 
export type KeyFinancialMetricRow = {
  key: string;
  rowKey: string;
  label: string;
  format: string;
  baselineDependent: boolean;
  maximumFractionDigits: number;
  comparisonDirection: MetricComparisonDirection;
  defaultComparisonMetric: boolean;
};
 
export const KEY_FINANCIAL_METRIC_ROWS =
  keyFinancialMetricRows as KeyFinancialMetricRow[];
export const KEY_FINANCIAL_METRIC_ROWS_BY_KEY = new Map(
  KEY_FINANCIAL_METRIC_ROWS.map((row) => [row.key, row] as const),
);
export const KEY_FINANCIAL_METRIC_ROWS_BY_ROW_KEY = new Map(
  KEY_FINANCIAL_METRIC_ROWS.map((row) => [row.rowKey, row] as const),
);
 
export const DEPRECIATION_METRIC_ROW_KEYS = new Set([
  "metric.annual_depreciation",
  "metric.depreciation_tax_shield",
  "metric.after_tax_annual_cash_flow",
]);
 
export function keyFinancialMetricLabelForKey(key: string) {
  return KEY_FINANCIAL_METRIC_ROWS_BY_KEY.get(key)?.label;
}
 
export function maximumFractionDigitsForKeyFinancialMetric(rowKey: string) {
  return (
    KEY_FINANCIAL_METRIC_ROWS_BY_ROW_KEY.get(rowKey)?.maximumFractionDigits ?? 0
  );
}
 
export function depreciationMetricRows(lines: EconomicsResultLineRead[]) {
  return lines.filter((line) => DEPRECIATION_METRIC_ROW_KEYS.has(line.row_key));
}
 
export function depreciationDetailRows(lines: EconomicsResultLineRead[]) {
  return lines.filter(
    (line) =>
      line.kind === EconomicsResultLineKindEnum.Depreciation &&
      line.group === "depreciation_lines",
  );
}