Fix Conversión Categoria en Carousel
- Se realiza conversión del id de la categoria para que funcione la condición del selector de provincias.
This commit is contained in:
@@ -18,7 +18,7 @@ import styles from './HomeCarouselWidget.module.css';
|
||||
|
||||
interface Props {
|
||||
eleccionId: number;
|
||||
categoriaId: number;
|
||||
categoriaId: number | string;
|
||||
titulo: string;
|
||||
}
|
||||
|
||||
@@ -27,11 +27,8 @@ interface OptionType {
|
||||
label: string;
|
||||
}
|
||||
|
||||
// --- LÓGICA DE FILTRADO ---
|
||||
// 1. Definimos los IDs de distrito de las provincias que renuevan senadores.
|
||||
const PROVINCIAS_QUE_RENUEVAN_SENADORES = new Set(['01', '06', '08', '15', '16', '17', '22', '24']);
|
||||
const CATEGORIA_SENADORES = 2;
|
||||
// --- FIN LÓGICA DE FILTRADO ---
|
||||
|
||||
const formatPercent = (num: number | null | undefined) => `${(num || 0).toFixed(2).replace('.', ',')}%`;
|
||||
const formatNumber = (num: number) => num.toLocaleString('es-AR');
|
||||
@@ -51,7 +48,6 @@ const formatDateTime = (dateString: string | undefined | null) => {
|
||||
};
|
||||
|
||||
export const HomeCarouselProvincialWidget = ({ eleccionId, categoriaId, titulo }: Props) => {
|
||||
// 2. Estado inicial nulo para que el useEffect lo establezca dinámicamente.
|
||||
const [selectedProvince, setSelectedProvince] = useState<OptionType | null>(null);
|
||||
|
||||
const { data: provincias = [], isLoading: isLoadingProvincias } = useQuery<CatalogoItem[]>({
|
||||
@@ -59,24 +55,21 @@ export const HomeCarouselProvincialWidget = ({ eleccionId, categoriaId, titulo }
|
||||
queryFn: getProvincias,
|
||||
});
|
||||
|
||||
// 3. Usamos useMemo para filtrar las opciones solo cuando sea necesario.
|
||||
const provinceOptions: OptionType[] = useMemo(() => {
|
||||
const allOptions = provincias.map(p => ({ value: p.id, label: p.nombre }));
|
||||
if (categoriaId === CATEGORIA_SENADORES) {
|
||||
|
||||
if (Number(categoriaId) === CATEGORIA_SENADORES) {
|
||||
return allOptions.filter(opt => PROVINCIAS_QUE_RENUEVAN_SENADORES.has(opt.value));
|
||||
}
|
||||
return allOptions;
|
||||
}, [provincias, categoriaId]);
|
||||
|
||||
// 4. useEffect para establecer y validar la provincia por defecto.
|
||||
useEffect(() => {
|
||||
if (provinceOptions.length > 0) {
|
||||
// Si no hay nada seleccionado, establece el default.
|
||||
if (!selectedProvince) {
|
||||
const defaultOption = provinceOptions.find(opt => opt.value === '01'); // CABA
|
||||
setSelectedProvince(defaultOption || provinceOptions[0]); // Si CABA no está, usa la primera opción.
|
||||
const defaultOption = provinceOptions.find(opt => opt.value === '01');
|
||||
setSelectedProvince(defaultOption || provinceOptions[0]);
|
||||
} else {
|
||||
// Si ya hay algo seleccionado, verifica que siga siendo válido. Si no, lo resetea.
|
||||
const isSelectedStillValid = provinceOptions.some(opt => opt.value === selectedProvince.value);
|
||||
if (!isSelectedStillValid) {
|
||||
setSelectedProvince(provinceOptions[0]);
|
||||
@@ -87,8 +80,8 @@ export const HomeCarouselProvincialWidget = ({ eleccionId, categoriaId, titulo }
|
||||
|
||||
const { data, isLoading, error } = useQuery({
|
||||
queryKey: ['homeResumen', eleccionId, selectedProvince?.value, categoriaId],
|
||||
queryFn: () => getHomeResumen(eleccionId, selectedProvince!.value, categoriaId),
|
||||
enabled: !!selectedProvince, // La consulta solo se ejecuta si hay una provincia seleccionada
|
||||
queryFn: () => getHomeResumen(eleccionId, selectedProvince!.value, Number(categoriaId)),
|
||||
enabled: !!selectedProvince,
|
||||
refetchInterval: 30000,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user