// src/components/ConfiguracionGeneral.tsx import { useState, useEffect } from 'react'; import { getAgrupaciones, getConfiguracion, updateConfiguracion } from '../services/apiService'; import type { AgrupacionPolitica } from '../types'; import './AgrupacionesManager.css'; // Reutilizamos los estilos para mantener la consistencia export const ConfiguracionGeneral = () => { const [agrupaciones, setAgrupaciones] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); // Estado específico para la configuración de la presidencia del Senado const [presidenciaSenadoId, setPresidenciaSenadoId] = useState(''); const [usarDatosOficiales, setUsarDatosOficiales] = useState(false); useEffect(() => { const loadInitialData = async () => { try { setLoading(true); setError(null); // Hacemos ambas llamadas a la API en paralelo para más eficiencia const [agrupacionesData, configData] = await Promise.all([ getAgrupaciones(), getConfiguracion() ]); setAgrupaciones(agrupacionesData); // Asignamos el valor guardado, si existe if (configData && configData.PresidenciaSenadores) { setPresidenciaSenadoId(configData.PresidenciaSenadores); } setUsarDatosOficiales(configData.UsarDatosDeBancadasOficiales === 'true'); } catch (err) { console.error("Error al cargar datos de configuración:", err); setError("No se pudieron cargar los datos necesarios para la configuración."); } finally { setLoading(false); } }; loadInitialData(); }, []); const handleSave = async () => { try { await updateConfiguracion({ "PresidenciaSenadores": presidenciaSenadoId, "UsarDatosDeBancadasOficiales": usarDatosOficiales.toString() }); alert('Configuración guardada con éxito.'); } catch (err) { console.error("Error al guardar la configuración:", err); alert('Error al guardar la configuración.'); } }; if (loading) return

Cargando configuración...

; if (error) return

{error}

; return (

Configuración General de Cámaras

Si está activo, el widget del Congreso mostrará la composición gestionada manualmente en esta página. Si está inactivo, mostrará la proyección en tiempo real de las elecciones.

Seleccione el partido político al que pertenece el Vicegobernador. El asiento presidencial del Senado se pintará con el color de este partido.

Presidencia Cámara de Diputados

Esta banca se asigna y colorea automáticamente según la agrupación política con la mayoría de bancas totales en la cámara.

); };