Skip to content
Snippets Groups Projects
Commit ccd44f21 authored by sandcha's avatar sandcha
Browse files

Ordonnance les dotations des strates selon l'ordre de la section loi

parent 1f64d4cd
Branches
Tags
1 merge request!24Corrige l'affichage sur petit écran, corrige l'ordre d'affichage des impacts et permet la suppression de carte communale
Pipeline #21527 failed
......@@ -6,7 +6,7 @@ import type { Dotation, DotationSummaryTotal } from "$lib/dotations"
export type ApiCommuneRequest = Commune // identification principale via Commune.codeInseeCommune
export type ApiCommuneResponse = Commune & { error?: string } // Commune où tous les champs optionnels devraient être remplis
type DotationImpact = {
export type DotationImpact = {
dotation: Dotation // nom (acronyme)
proportionEntitesEligibles: number // pourcentage
dotationMoyenneParHabitant: number // euros
......
......@@ -8,8 +8,9 @@
getDotationIconName,
Trend,
getTrendIconPath,
getDotations,
} from "$lib/dotations"
import type { StrateImpact } from "$lib/api"
import type { StrateImpact, DotationImpact } from "$lib/api"
import { amendementExists, getAmendementStrates } from "$lib/state.svelte"
import { IMPACT_INCLUDE_DOTATION_COMMUNES_NOUVELLES_STRATES } from "$lib/config"
......@@ -22,7 +23,23 @@
} = $props()
const EMPTY_STRING_UNICODE = "\u00A0\u00A0\u00A0"
// export const unexpectedValue = "-"
function orderDotationsImpacts(
dotationsImpacts: DotationImpact[],
dotationsReferenceOrder: Dotation[],
): DotationImpact[] {
const ordre = dotationsReferenceOrder.reduce(
(accumulatedResult, valeur, index) => ({
...accumulatedResult,
[valeur]: index,
}),
{} as Record<(typeof Dotation)[keyof typeof Dotation], number>,
)
return [...dotationsImpacts].sort(
(a, b) => ordre[a.dotation] - ordre[b.dotation],
)
}
</script>
<table
......@@ -105,8 +122,14 @@
</td>
<!-- par dotation -->
{#if row.dotationsImpacts}
{@const orderedDotationsImpacts = orderDotationsImpacts(
row.dotationsImpacts,
getDotations(),
)}
<td class="w-20 text-left">
{#each row.dotationsImpacts as dotationImpact, index}
{#each orderedDotationsImpacts as dotationImpact, index}
{#if IMPACT_INCLUDE_DOTATION_COMMUNES_NOUVELLES_STRATES || dotationImpact.dotation !== Dotation.DCN}
{#if index > 0}
<!-- une sous-ligne par dotation -->
......@@ -125,7 +148,7 @@
</td>
<td>
{#each row.dotationsImpacts as dotationImpact, index}
{#each orderedDotationsImpacts as dotationImpact, index}
{#if IMPACT_INCLUDE_DOTATION_COMMUNES_NOUVELLES_STRATES || dotationImpact.dotation !== Dotation.DCN}
{#if index > 0}
<!-- une sous-ligne par dotation -->
......@@ -163,7 +186,7 @@
</td>
<td>
{#each row.dotationsImpacts as dotationImpact, index}
{#each orderedDotationsImpacts as dotationImpact, index}
{#if IMPACT_INCLUDE_DOTATION_COMMUNES_NOUVELLES_STRATES || dotationImpact.dotation !== Dotation.DCN}
{#if index > 0}
<!-- une sous-ligne par dotation -->
......@@ -200,7 +223,7 @@
</td>
<td>
{#each row.dotationsImpacts as dotationImpact, index}
{#each orderedDotationsImpacts as dotationImpact, index}
{#if IMPACT_INCLUDE_DOTATION_COMMUNES_NOUVELLES_STRATES || dotationImpact.dotation !== Dotation.DCN}
{#if index > 0}
<!-- une sous-ligne par dotation -->
......@@ -235,6 +258,7 @@
{/if}
{/each}
</td>
{/if}
</tr>
{/each}
</tbody>
......
const UNDEFINED_DOTATION_ICON = "ri-file-warning-line" // https://remixicon.com/icon/file-warning-line
export enum Dotation {
DF = "DF",
DSR = "DSR",
DSU = "DSU",
DF = "DF",
DCN = "DCN"
}
// Renvoie dans un ordre fixe les valeurs de l'énuméré Dotation (un enum n'étant pas ordonnancé)
export function getDotations(): Array<typeof Dotation[keyof typeof Dotation]> {
return [
Dotation.DSR,
Dotation.DSU,
Dotation.DF,
Dotation.DCN
]
}
export enum Trend {
Up,
Down,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment