Skip to content
Snippets Groups Projects
Select Git revision
  • 815fd665c07180e9d04f8cd43d512916027f4724
  • master default protected
  • ajout_ppa_rsa_budgetaire
  • 365-ouvrir-l-onglet-employeur-ou-taxes-carburant-quand-c-est-le-cas-pour-un-dispositif
  • 381-pb-affichage-labels-des-parametres-sur-plus-de-3-lignes
  • ajoute-duplicate-aide-logement
  • poc_castype_ia
  • parametres-editables-budget
  • ui-parametres
  • 366-signe-a-cote-du-droit-en-vigueur-sur-l-ui-pour-indiquer-que-la-reforme-a-eu-lieu-mais-qu-elle-n
  • 355-les-dispositifs-prestations-sociales-du-graphique-se-cachent-montrent-en-meme-temps-2
  • 358-les-variables-dont-le-montant-est-nul-apparaissent-en-bleu-et-non-cliquables
  • 356-ajuster-la-largeur-sur-les-graphiques-budgetaires
  • incoherence_cas_type_0
  • fix-ui-suppression-tranches-baremes
  • ajout-agregat-cehr-version-plf
  • impact_carbone
  • xlsx
  • header_revamp
  • 270-concevoir-la-page-d-accueil-leximpact
  • 219-conversion-des-montants-min-et-max-de-l-axe-des-x-en-smic
  • 0.0.1123
  • 0.0.1122
  • 0.0.1121
  • 0.0.1120
  • 0.0.1119
  • 0.0.1118
  • 0.0.1117
  • 0.0.1116
  • 0.0.1115
  • 0.0.1114
  • 0.0.1113
  • 0.0.1112
  • 0.0.1111
  • 0.0.1110
  • 0.0.1109
  • 0.0.1108
  • 0.0.1107
  • 0.0.1106
  • 0.0.1105
  • 0.0.1104
41 results

TestCasesPane.svelte

Blame
  • TestCasesPane.svelte 3.61 KiB
    <script lang="ts">
      import { createEventDispatcher, getContext } from "svelte"
      import type { Writable } from "svelte/store"
    
      import type {
        CalculationName,
        DecompositionByName,
        EvaluationByNameArrayByCalculationName,
      } from "$lib/decompositions"
      import type { EditionMode } from "$lib/editions"
      import { entityByKey } from "$lib/entities"
      import type { Axis, AxisDescription, Situation } from "$lib/situations"
      import { indexOfSituationPopulationId } from "$lib/situations"
    
      import TestCaseView from "./TestCaseView.svelte"
    
      export let date: string
      export let editionMode: EditionMode
      export let year: number
    
      let axisBySituationIndex: { [situationIndex: string]: Axis } = {}
      const calculationName = getContext(
        "calculationName",
      ) as Writable<CalculationName>
      const decompositionByName = getContext(
        "decompositionByName",
      ) as Writable<DecompositionByName>
      const dispatch = createEventDispatcher()
      const testCases = getContext("testCases") as Writable<Situation[]>
      const vectorIndexes = getContext("vectorIndexes") as Writable<number[]>
    
      function changeAxis(
        situationIndex: number,
        axisDescription: AxisDescription | null,
        vectorIndex: number,
      ) {
        if (axisDescription === null) {
          axisBySituationIndex = { ...axisBySituationIndex }
          delete axisBySituationIndex[situationIndex]
        } else {
          const entity = entityByKey[axisDescription.entityKey]
    
          let previousSituationsPopulationCount = 0
          for (const situation of $testCases.slice(0, situationIndex)) {
            const entitySituation = situation[entity.key_plural] ?? {}
            const populationCount = Object.keys(entitySituation).length
            previousSituationsPopulationCount += populationCount
          }
    
          const axis = {
            count: 100,
            index:
              previousSituationsPopulationCount +
              indexOfSituationPopulationId(
                entity,
                $testCases[situationIndex],
                axisDescription.populationId,
              ),
            max: (100 - 1) * axisDescription.stepValue,
            min: 0,
            name: axisDescription.variableName,
            period: year.toString(),
          }
          axisBySituationIndex = { ...axisBySituationIndex, [situationIndex]: axis }
        }
        dispatch("changeAxes", {
          axisBySituationIndex,
          situationIndex,
          vectorIndex,
        })