Checkpoint: Ajout du champ anneeDefaut dans ParametresContext (avec persistance localStorage). Nouvelle section "Année d'ouverture par défaut" dans la page Paramètres avec sélecteur de boutons (2025-2030). AnneeContext mis à jour pour utiliser cette valeur au premier lancement (quand aucune session n'est mémorisée). La page Paramètres reste accessible via l'icône engrenage en bas de la sidebar.
This commit is contained in:
@@ -6,6 +6,21 @@ import { createContext, useContext, useState, ReactNode } from 'react';
|
||||
export const ANNEES_DISPONIBLES = [2025, 2026, 2027, 2028, 2029, 2030];
|
||||
export const ANNEE_DEFAUT = 2027;
|
||||
|
||||
const PARAMETRES_STORAGE_KEY = 'itinova_budget_parametres';
|
||||
|
||||
function getAnneeDefautFromParametres(): number {
|
||||
try {
|
||||
const raw = localStorage.getItem(PARAMETRES_STORAGE_KEY);
|
||||
if (raw) {
|
||||
const parsed = JSON.parse(raw);
|
||||
if (typeof parsed.anneeDefaut === 'number' && ANNEES_DISPONIBLES.includes(parsed.anneeDefaut)) {
|
||||
return parsed.anneeDefaut;
|
||||
}
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
return ANNEE_DEFAUT;
|
||||
}
|
||||
|
||||
interface AnneeContextType {
|
||||
annee: number;
|
||||
setAnnee: (a: number) => void;
|
||||
@@ -20,8 +35,12 @@ export function AnneeProvider({ children }: { children: ReactNode }) {
|
||||
const [annee, setAnneeState] = useState<number>(() => {
|
||||
try {
|
||||
const stored = localStorage.getItem('itinova_annee_selectionnee');
|
||||
const parsed = stored ? parseInt(stored, 10) : ANNEE_DEFAUT;
|
||||
return ANNEES_DISPONIBLES.includes(parsed) ? parsed : ANNEE_DEFAUT;
|
||||
if (stored) {
|
||||
const parsed = parseInt(stored, 10);
|
||||
if (ANNEES_DISPONIBLES.includes(parsed)) return parsed;
|
||||
}
|
||||
// Pas de session mémorisée → utiliser l'année par défaut des paramètres
|
||||
return getAnneeDefautFromParametres();
|
||||
} catch { return ANNEE_DEFAUT; }
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user