Skip to content
Snippets Groups Projects
Select Git revision
  • 7ba9bcac3046b265e2256814a47693555fab5965
  • master default protected
  • maj-readme
  • update-budget-msg-2022
  • share-with-metadata
  • explications-resultats-macros-PLF2022
  • plf_fix
  • benoit-cty-master-patch-87290
  • activate-plf-2021
  • stats
  • switch-plf
  • carto
  • adapt-matomo
  • js-to-ts
  • nbre-part-logic
  • add-nbre-part
  • 1.0.0
17 results

server.js

Blame
  • parameters.ts 2.67 KiB
    import type {
      Metadata,
      Reference,
      ValueAtInstant,
      ValueParameter,
    } from "@openfisca/ast"
    import {
      AmountUnit,
      ParameterClass,
      RateUnit,
      ScaleType,
      Unit,
      ValueType,
    } from "@openfisca/ast"
    
    export interface InstantReferencesAndValue {
      instant: string
      references: Reference[]
      valueAtInstant?: ValueAtInstant
    }
    
    export function buildInstantReferencesAndValueArray(
      parameter: ValueParameter,
    ): InstantReferencesAndValue[] {
      const instantReferencesAndValueByInstant: {
        [instant: string]: InstantReferencesAndValue
      } = Object.fromEntries(
        Object.entries(parameter.values ?? {}).map(([instant, valueAtInstant]) => [
          instant,
          { instant, references: [], valueAtInstant },
        ]),
      )
      if (parameter.reference !== undefined) {
        for (const [instant, references] of Object.entries(parameter.reference)) {
          if (instantReferencesAndValueByInstant[instant] === undefined) {
            instantReferencesAndValueByInstant[instant] = {
              instant,
              references,
            }
          } else {
            instantReferencesAndValueByInstant[instant].references = references
          }
        }
      }
      return Object.entries(instantReferencesAndValueByInstant)
        .sort(([instant1], [instant2]) => instant2.localeCompare(instant1))
        .map(([_instant, instantReferencesAndValue]) => instantReferencesAndValue)
    }
    
    export function labelFromParameterClass(
      parameterClass: ParameterClass | string,
    ): string {
      return (
        {
          [ParameterClass.Node]: "Nœud",
          [ParameterClass.Scale]: "Barème",
          [ParameterClass.Value]: "Valeur",
        }[parameterClass] ?? parameterClass
      )
    }
    
    export function labelFromScaleType(type: ScaleType | string): string {
      return (
        {
          [ScaleType.LinearAverageRate]: "à taux moyen linéaire",
          [ScaleType.MarginalAmount]: "à montant marginal",
          [ScaleType.MarginalRate]: "à taux marginal",
          [ScaleType.SingleAmount]: "à montant unique",
        }[type] ?? type
      )
    }
    
    export function labelFromUnit(
      metadata: Metadata,
      unit: AmountUnit | RateUnit | Unit | string,
    ): string {
      return (
        {
          [Unit.CodesDepartements]: "code département",
          [Unit.CountryCode]: "code pays",
          [Unit.Currency]: metadata.currency,
          [Unit.CurrencyFRF]: "FRF",
          [Unit.Day]: "jour",
          [Unit.Month]: "mois",
          [Unit.Rate]: "ratio", // Number between 0 and 1
          [Unit.Year]: "année",
        }[unit] ?? unit
      )
    }
    
    export function labelFromValueType(type: ValueType | string): string {
      return (
        {
          [ValueType.Number]: "nombre",
          [ValueType.StringArray]: "tableau de chaînes de caractères",
          [ValueType.StringByString]: "dictionnaire de chaines de caractères",
        }[type] ?? type
      )
    }