diff --git a/src/lib/components/test_cases/TestCaseCompareView.svelte b/src/lib/components/test_cases/TestCaseCompareView.svelte index c53a5d5022a2abc490b0016f12ebf04868b65817..0a243e3786f1aab944b3fd9c75e04ecfcc4e6c4a 100644 --- a/src/lib/components/test_cases/TestCaseCompareView.svelte +++ b/src/lib/components/test_cases/TestCaseCompareView.svelte @@ -1,6 +1,10 @@ <script lang="ts"> import Icon from "@iconify/svelte" - import { type DecompositionReference, Unit, type Waterfall } from "@openfisca/json-model" + import { + type DecompositionReference, + Unit, + type Waterfall, + } from "@openfisca/json-model" import { createEventDispatcher, getContext } from "svelte" import type { Writable } from "svelte/store" @@ -16,8 +20,11 @@ } from "$lib/decompositions" import type { DisplayMode } from "$lib/displays" import type { ParametricReform } from "$lib/reforms" - import type { Situation, Slider } from "$lib/situations" - import { variableSummaryByName } from "$lib/variables" + import type { Situation } from "$lib/situations" + import { + type ValuesByCalculationNameByVariableName, + variableSummaryByName, + } from "$lib/variables" export let decompositionByName: DecompositionByName export let displayMode: DisplayMode @@ -37,6 +44,9 @@ ) 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( @@ -117,6 +127,9 @@ mode="compare" {situation} {situationIndex} + valuesByCalculationNameByVariableName={$valuesByCalculationNameByVariableNameArray[ + situationIndex + ]} {year} /> </div> diff --git a/src/lib/components/test_cases/TestCaseSelectModal.svelte b/src/lib/components/test_cases/TestCaseSelectModal.svelte index ddf9cf27bdf8b35d75d3d4b95dcc9da9561e2d54..66235cfd84d21e86dc542dc63d10e414ccd031e9 100644 --- a/src/lib/components/test_cases/TestCaseSelectModal.svelte +++ b/src/lib/components/test_cases/TestCaseSelectModal.svelte @@ -11,24 +11,23 @@ } from "@rgossiaux/svelte-headlessui" import { createEventDispatcher, getContext } from "svelte" import type { Writable } from "svelte/store" - import type { DisplayMode } from "$lib/displays" + import { goto } from "$app/navigation" + import type { DisplayMode } from "$lib/displays" import type { Situation } from "$lib/situations" import { newSimulationUrl } from "$lib/urls" + import type { ValuesByCalculationNameByVariableName } from "$lib/variables" export let isOpen = false export let year: number - let displayMode: DisplayMode = { testCasesIndex: [0] } - const dispatch = createEventDispatcher() + const displayMode: DisplayMode = { testCasesIndex: [0] } const testCases = getContext("testCases") as Writable<Situation[]> const testCasesIndex = getContext("testCasesIndex") as Writable<number[]> - - function closeModal() { - isOpen = false - dispatch("changeTestCasesIndex", $testCasesIndex) - } + const valuesByCalculationNameByVariableNameArray = getContext( + "valuesByCalculationNameByVariableNameArray", + ) as Writable<ValuesByCalculationNameByVariableName[]> function changeTestCaseIndex(value: number) { isOpen = false @@ -40,6 +39,11 @@ { noscroll: true }, ) } + + function closeModal() { + isOpen = false + dispatch("changeTestCasesIndex", $testCasesIndex) + } </script> <Transition appear show={isOpen}> @@ -115,6 +119,9 @@ mode="select" {situation} {situationIndex} + valuesByCalculationNameByVariableName={$valuesByCalculationNameByVariableNameArray[ + situationIndex + ]} {year} /> </div> diff --git a/src/lib/components/test_cases/TestCaseSummary.svelte b/src/lib/components/test_cases/TestCaseSummary.svelte index 8012359f8e564487f8e71e97e008c5a827c0e448..cb9ac8f3c17613223a7eb3675fd8a51b167831f9 100644 --- a/src/lib/components/test_cases/TestCaseSummary.svelte +++ b/src/lib/components/test_cases/TestCaseSummary.svelte @@ -17,18 +17,25 @@ import TestCaseCompareModal from "$lib/components/test_cases/TestCaseCompareModal.svelte" import type { DisplayMode } from "$lib/displays" import { entityByKey, personEntityKey } from "$lib/entities" - import type { Situation, Slider } from "$lib/situations" import { + getCalculatedVariableValueByCalculationName, getSituationVariableValue, setSituationVariableValue, + type Situation, + type Slider, } from "$lib/situations" - import { variableSummaryByName, type VariableValue } from "$lib/variables" + import { + type ValuesByCalculationNameByVariableName, + variableSummaryByName, + type VariableValue, + } from "$lib/variables" import PictoBigHopital from "../pictos/PictoBigHopital.svelte" export let displayMode: DisplayMode export let mode: "compare" | "select" | "view" export let situation: Situation export let situationIndex: number + export let valuesByCalculationNameByVariableName: ValuesByCalculationNameByVariableName export let year: number const childrenKey = $session.childrenKey @@ -152,6 +159,38 @@ } } + function getCalculatedVariableNumberValue( + situation: Situation, + valuesByCalculationNameByVariableName: ValuesByCalculationNameByVariableName, + variableName: string, + populationId: string, + ): VariableValue | undefined { + return getCalculatedVariableValue( + situation, + valuesByCalculationNameByVariableName, + variableName, + populationId, + ) as number | undefined + } + + function getCalculatedVariableValue( + situation: Situation, + valuesByCalculationNameByVariableName: ValuesByCalculationNameByVariableName, + variableName: string, + populationId: string, + ): VariableValue | undefined { + const variable = variableSummaryByName[variableName] + if (variable === undefined) { + return undefined + } + return getCalculatedVariableValueByCalculationName( + situation, + valuesByCalculationNameByVariableName, + variable, + populationId, + ).law + } + function getVariableNumberValue( situation: Situation, variableName: string, @@ -336,7 +375,7 @@ ? "flex flex-col" : "grid gap-x-8 grid-cols-2 sm:grid-cols-3 md:grid-cols-2 xl:grid-cols-3"} > - {#each Object.entries(personSituation).sort( ([populationId1], [populationId2]) => populationId1.localeCompare(populationId2), ) as [populationId, population]} + {#each Object.keys(personSituation).sort( (populationId1, populationId2) => populationId1.localeCompare(populationId2), ) as populationId} {@const activite = getVariableValue(situation, "activite", populationId)} {@const allocation_retour_emploi = getVariableValue( situation, @@ -430,15 +469,15 @@ <abbr class="text-xs" title="Allocation chômage d'aide au retour à l'emploi (ARE) par an" - >d'allocation*/an</abbr + >d'allocation/an</abbr > {:else if retraite_brute} <abbr class="text-xs" title="Retraite brute par an" - >de retraite brute*/an</abbr + >de retraite brute/an</abbr > {:else} <abbr class="text-xs" title="Salaire de base par an" - >de base*/an</abbr + >de base/an</abbr > {/if} @@ -499,6 +538,23 @@ </div> {/each} + {#each Object.keys(familySituation).sort( (populationId1, populationId2) => populationId1.localeCompare(populationId2), ) as populationId} + {@const rsa = getCalculatedVariableNumberValue( + situation, + valuesByCalculationNameByVariableName, + "rsa", + populationId, + )} + <div class="my-2"> + {#if rsa !== 0} + <abbr + class="my-1 rounded-2xl bg-blue-200 py-1 px-2 text-xs text-gray-800 shadow-sm" + title="Revenu de solidarité active">RSA</abbr + > + {/if} + </div> + {/each} + {#each Object.keys(householdSituation).sort( (populationId1, populationId2) => populationId1.localeCompare(populationId2), ) as populationId} {@const loyer = getVariableValue(situation, "loyer", populationId)} {@const statut_occupation_logement = getVariableValue( diff --git a/src/lib/components/test_cases/TestCaseView.svelte b/src/lib/components/test_cases/TestCaseView.svelte index 174f7023f59e33a8f71ccc1e03aa760ea4f525cb..ab68433a58d2c22cee2bcaebfdfae1f6713ca46d 100644 --- a/src/lib/components/test_cases/TestCaseView.svelte +++ b/src/lib/components/test_cases/TestCaseView.svelte @@ -19,12 +19,16 @@ import type { ParametricReform } from "$lib/reforms" import type { Situation } from "$lib/situations" import { newSimulationUrl } from "$lib/urls" - import { variableSummaryByName } from "$lib/variables" + import { + type ValuesByCalculationNameByVariableName, + variableSummaryByName, + } from "$lib/variables" export let decompositionByName: DecompositionByName export let displayMode: DisplayMode export let situation: Situation export let situationIndex: number + export let valuesByCalculationNameByVariableName: ValuesByCalculationNameByVariableName export let year: number const billName = getContext("billName") as Writable<string | undefined> @@ -89,6 +93,7 @@ mode="view" {situation} {situationIndex} + {valuesByCalculationNameByVariableName} {year} /> </div> diff --git a/src/routes/index.svelte b/src/routes/index.svelte index c1bd29ef7589940cba91b4e9b8e509aea266296e..e837898e983a1edaa9f2c67e08e41e5a12921385 100644 --- a/src/routes/index.svelte +++ b/src/routes/index.svelte @@ -1118,6 +1118,9 @@ changeTestCaseToEditIndex(detail)} situation={$testCases[$testCasesIndex[0]]} situationIndex={$testCasesIndex[0]} + valuesByCalculationNameByVariableName={$valuesByCalculationNameByVariableNameArray[ + $testCasesIndex[0] + ]} year={$year} /> {:else}