Skip to content
Snippets Groups Projects
Select Git revision
  • e2191b5b577e9739099103eeaf193ab55be42d50
  • master default protected
  • suppression_allegements_specifiques
  • budgetaire_retraites_plf
  • doc-script-gen-off-tests
  • 366-signe-a-cote-du-droit-en-vigueur-sur-l-ui-pour-indiquer-que-la-reforme-a-eu-lieu-mais-qu-elle-n
  • revalo_retraites
  • 381-pb-affichage-labels-des-parametres-sur-plus-de-3-lignes
  • ajoute-duplicate-aide-logement
  • poc_castype_ia
  • parametres-editables-budget
  • ui-parametres
  • 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
  • 0.0.1191
  • 0.0.1190
  • 0.0.1189
  • 0.0.1188
  • 0.0.1187
  • 0.0.1186
  • 0.0.1185
  • 0.0.1184
  • 0.0.1183
  • 0.0.1182
  • 0.0.1181
  • 0.0.1180
  • 0.0.1179
  • 0.0.1178
  • 0.0.1177
  • 0.0.1176
  • 0.0.1175
  • 0.0.1174
  • 0.0.1173
  • 0.0.1172
41 results

displays.ts

Blame
  • urls.ts 2.96 KiB
    import type { DisplayMode } from "./displays"
    
    export interface SelfTargetAProps {
      href: string
      "data-sveltekit-prefetch"?: boolean
      "data-sveltekit-noscroll"?: boolean
    }
    
    export function newSelfTargetAProps(url: string): SelfTargetAProps {
      return {
        href: url,
        "data-sveltekit-prefetch": true,
      }
    }
    
    export function newSimulationUrl(displayMode: DisplayMode): string {
      const query: URLSearchParams = new URLSearchParams()
      if (displayMode.compact) {
        query.append("compact", "true")
      }
      if (displayMode.edit !== undefined) {
        query.append("edit", displayMode.edit.toString())
      }
      if (displayMode.mobileLaw) {
        query.append("law", "true")
      }
      if (
        displayMode.testCasesIndex.length !== 1 ||
        displayMode.testCasesIndex[0] !== 0
      ) {
        for (const testCaseIndex of displayMode.testCasesIndex) {
          query.append("test_case", testCaseIndex.toString())
        }
      }
      if (displayMode.variableName !== undefined) {
        query.append("variable", displayMode.variableName)
      }
      if (displayMode.parameterName !== undefined) {
        query.append("parameter", displayMode.parameterName)
      }
      if (displayMode.parametersVariableName !== undefined) {
        query.append("parameters", displayMode.parametersVariableName)
      }
      const queryString = query.toString()
      return `/${queryString ? "?" + queryString : ""}`
    }
    
    // export function parseQuery(
    //   queryString?: string,
    // ): { [key: string]: string | string[] } {
    //   return (queryString ?? "")
    //     .replace(/\+/g, " ")
    //     .split("&")
    //     .filter(Boolean)
    //     .reduce(
    //       (
    //         queryParameters: { [key: string]: string | string[] },
    //         keyAndValue: string,
    //       ): { [key: string]: string | string[] } => {
    //         const keyAndValueCouple = keyAndValue.split("=")
    //         const key: string = decodeURIComponent(keyAndValueCouple[0] ?? "")
    //         const value = decodeURIComponent(keyAndValueCouple[1] ?? "")
    //         const existingValue = queryParameters[key]
    //         queryParameters[key] =
    //           existingValue === undefined
    //             ? value
    //             : (Array.isArray(existingValue)
    //                 ? existingValue
    //                 : [existingValue]
    //               ).concat([value])
    //         return queryParameters
    //       },
    //       {},
    //     )
    // }
    
    export function stringifyQuery(queryParameters?: {
      [key: string]: string | string[]
    }): string {
      return Object.entries(queryParameters ?? {})
        .reduce(
          (
            queryArray: string[],
            [key, value]: [string, string | string[]],
          ): string[] => {
            if (Array.isArray(value)) {
              for (const item of value) {
                queryArray.push(
                  `${encodeURIComponent(key)}=${encodeURIComponent(item)}`,
                )
              }
            } else {
              queryArray.push(
                `${encodeURIComponent(key)}=${encodeURIComponent(value ?? "")}`,
              )
            }
            return queryArray
          },
          [],
        )
        .join("&")
        .replace(/\s/g, "+")
    }