Select Git revision
ParameterView.svelte
TestCaseCompareView.svelte 15.04 KiB
<script lang="ts">
import Icon from "@iconify/svelte"
import {
type DecompositionReference,
Unit,
type Waterfall,
} from "@openfisca/json-model"
import { createEventDispatcher, getContext } from "svelte"
import type { Writable } from "svelte/store"
import type { CalculationByName, CalculationName } from "$lib/calculations"
import Spinner from "$lib/components/Spinner.svelte"
import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
import ValueChangeCompare from "$lib/components/ValueChangeCompare.svelte"
import WaterfallCompareView from "$lib/components/WaterfallCompareView.svelte"
import {
type DecompositionByName,
type EvaluationByName,
waterfalls,
} from "$lib/decompositions"
import type { DisplayMode } from "$lib/displays"
import type { ParametricReform } from "$lib/reforms"
import type { Situation } from "$lib/situations"
import { newSimulationUrl } from "$lib/urls"
import {
type ValuesByCalculationNameByVariableName,
variableSummaryByName,
} from "$lib/variables"
export let decompositionByName: DecompositionByName
export let displayMode: DisplayMode
export let situationsToCompareIndex: number[]
export let year: number
const billName = getContext("billName") as Writable<string | undefined>
const calculationByName = getContext(
"calculationByName",
) as Writable<CalculationByName>
const dispatch = createEventDispatcher()
const evaluationByNameArray = getContext("evaluationByNameArray") as Writable<
EvaluationByName[]
>
const parametricReform = getContext(
"parametricReform",
) as Writable<ParametricReform>
const testCases = getContext("testCases") as Writable<Situation[]>
const testCasesIndex = getContext("testCasesIndex") as Writable<number[]>
const valuesByCalculationNameByVariableNameArray = getContext(
"valuesByCalculationNameByVariableNameArray",
) as Writable<ValuesByCalculationNameByVariableName[]>
const waterfall = getContext("waterfall") as Writable<Waterfall>
$: situationsToCompare = situationsToCompareIndex.map(
(situationIndex) => $testCases[situationIndex],
)
function calculateTotal(
evaluationByName: EvaluationByName,
calculationName: CalculationName,
rootDecompositionName: string,
totalDecomposition: DecompositionReference[] | undefined,
): number {
if (totalDecomposition === undefined) {
return (
evaluationByName[rootDecompositionName]?.calculationEvaluationByName[
calculationName
]?.deltaAtVectorIndex ?? 0
)
}
let total = 0