Feat Se añade Id de Agrupaciones en Componentes
This commit is contained in:
		| @@ -123,7 +123,7 @@ export const AgrupacionesManager = () => { | |||||||
|                             <tbody> |                             <tbody> | ||||||
|                                 {agrupaciones.map(agrupacion => ( |                                 {agrupaciones.map(agrupacion => ( | ||||||
|                                     <tr key={agrupacion.id}> |                                     <tr key={agrupacion.id}> | ||||||
|                                         <td>{agrupacion.nombre}</td> |                                         <td>({agrupacion.id}) {agrupacion.nombre}</td> | ||||||
|                                         <td><input type="text" value={editedAgrupaciones[agrupacion.id]?.nombreCorto ?? ''} onChange={(e) => handleInputChange(agrupacion.id, 'nombreCorto', e.target.value)} /></td> |                                         <td><input type="text" value={editedAgrupaciones[agrupacion.id]?.nombreCorto ?? ''} onChange={(e) => handleInputChange(agrupacion.id, 'nombreCorto', e.target.value)} /></td> | ||||||
|                                         <td><input type="color" value={sanitizeColor(editedAgrupaciones[agrupacion.id]?.color)} onChange={(e) => handleInputChange(agrupacion.id, 'color', e.target.value)} /></td> |                                         <td><input type="color" value={sanitizeColor(editedAgrupaciones[agrupacion.id]?.color)} onChange={(e) => handleInputChange(agrupacion.id, 'color', e.target.value)} /></td> | ||||||
|                                         <td> |                                         <td> | ||||||
|   | |||||||
| @@ -89,7 +89,7 @@ export const BancasNacionalesManager = () => { | |||||||
|                       onChange={(e) => handleAgrupacionChange(bancada.id, e.target.value || null)} |                       onChange={(e) => handleAgrupacionChange(bancada.id, e.target.value || null)} | ||||||
|                     > |                     > | ||||||
|                       <option value="">-- Vacante --</option> |                       <option value="">-- Vacante --</option> | ||||||
|                       {agrupaciones.map(a => <option key={a.id} value={a.id}>{a.nombre}</option>)} |                       {agrupaciones.map(a => <option key={a.id} value={a.id}>{`(${a.id}) ${a.nombre}`}</option>)} | ||||||
|                     </select> |                     </select> | ||||||
|                   </td> |                   </td> | ||||||
|                   <td>{bancada.ocupante?.nombreOcupante || 'Sin asignar'}</td> |                   <td>{bancada.ocupante?.nombreOcupante || 'Sin asignar'}</td> | ||||||
|   | |||||||
| @@ -95,7 +95,7 @@ export const BancasPreviasManager = () => { | |||||||
|                             <tbody> |                             <tbody> | ||||||
|                                 {agrupaciones.map(agrupacion => ( |                                 {agrupaciones.map(agrupacion => ( | ||||||
|                                     <tr key={agrupacion.id}> |                                     <tr key={agrupacion.id}> | ||||||
|                                         <td>{agrupacion.nombre}</td> |                                         <td>({agrupacion.id}) {agrupacion.nombre}</td> | ||||||
|                                         <td> |                                         <td> | ||||||
|                                             <input |                                             <input | ||||||
|                                                 type="number" |                                                 type="number" | ||||||
|   | |||||||
| @@ -91,7 +91,7 @@ export const BancasProvincialesManager = () => { | |||||||
|                     onChange={(e) => handleAgrupacionChange(bancada.id, e.target.value || null)} |                     onChange={(e) => handleAgrupacionChange(bancada.id, e.target.value || null)} | ||||||
|                   > |                   > | ||||||
|                     <option value="">-- Vacante --</option> |                     <option value="">-- Vacante --</option> | ||||||
|                     {agrupaciones.map(a => <option key={a.id} value={a.id}>{a.nombre}</option>)} |                     {agrupaciones.map(a => <option key={a.id} value={a.id}>{`(${a.id}) ${a.nombre}`}</option>)} | ||||||
|                   </select> |                   </select> | ||||||
|                 </td> |                 </td> | ||||||
|                 <td>{bancada.ocupante?.nombreOcupante || 'Sin asignar'}</td> |                 <td>{bancada.ocupante?.nombreOcupante || 'Sin asignar'}</td> | ||||||
|   | |||||||
| @@ -83,7 +83,14 @@ export const CandidatoOverridesManager = () => { | |||||||
|             <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '1rem', alignItems: 'flex-end' }}> |             <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '1rem', alignItems: 'flex-end' }}> | ||||||
|                 <Select options={ELECCION_OPTIONS} value={selectedEleccion} onChange={(opt) => { setSelectedEleccion(opt!); setSelectedCategoria(null); }} /> |                 <Select options={ELECCION_OPTIONS} value={selectedEleccion} onChange={(opt) => { setSelectedEleccion(opt!); setSelectedCategoria(null); }} /> | ||||||
|                 <Select options={categoriaOptions} value={selectedCategoria} onChange={setSelectedCategoria} placeholder="Seleccione Categoría..." isDisabled={!selectedEleccion} /> |                 <Select options={categoriaOptions} value={selectedCategoria} onChange={setSelectedCategoria} placeholder="Seleccione Categoría..." isDisabled={!selectedEleccion} /> | ||||||
|                 <Select options={agrupaciones.map(a => ({ value: a.id, label: a.nombre, ...a }))} getOptionValue={opt => opt.id} getOptionLabel={opt => opt.nombre} value={selectedAgrupacion} onChange={setSelectedAgrupacion} placeholder="Seleccione Agrupación..." /> |                 <Select | ||||||
|  |                     options={agrupaciones.map(a => ({ value: a.id, label: a.nombre, ...a }))} | ||||||
|  |                     getOptionValue={opt => opt.id} | ||||||
|  |                     getOptionLabel={opt => `(${opt.id}) ${opt.nombre}`} | ||||||
|  |                     value={selectedAgrupacion} | ||||||
|  |                     onChange={setSelectedAgrupacion} | ||||||
|  |                     placeholder="Seleccione Agrupación..." | ||||||
|  |                 /> | ||||||
|                 <Select options={AMBITO_LEVEL_OPTIONS} value={selectedAmbitoLevel} onChange={(opt) => { setSelectedAmbitoLevel(opt!); setSelectedProvincia(null); setSelectedMunicipio(null); }} /> |                 <Select options={AMBITO_LEVEL_OPTIONS} value={selectedAmbitoLevel} onChange={(opt) => { setSelectedAmbitoLevel(opt!); setSelectedProvincia(null); setSelectedMunicipio(null); }} /> | ||||||
|  |  | ||||||
|                 {selectedAmbitoLevel.value === 'provincia' || selectedAmbitoLevel.value === 'municipio' ? ( |                 {selectedAmbitoLevel.value === 'provincia' || selectedAmbitoLevel.value === 'municipio' ? ( | ||||||
|   | |||||||
| @@ -56,15 +56,6 @@ export const ConfiguracionNacional = () => { | |||||||
|     return ( |     return ( | ||||||
|         <div className="admin-module"> |         <div className="admin-module"> | ||||||
|             <h3>Configuración de Widgets Nacionales</h3> |             <h3>Configuración de Widgets Nacionales</h3> | ||||||
|             {/*<div className="form-group"> |  | ||||||
|                 <label> |  | ||||||
|                     <input type="checkbox" checked={modoOficialActivo} onChange={e => setModoOficialActivo(e.target.checked)} /> |  | ||||||
|                     **Activar Modo "Resultados Oficiales" para Widgets Nacionales** |  | ||||||
|                 </label> |  | ||||||
|                 <p style={{ fontSize: '0.8rem', color: '#666' }}> |  | ||||||
|                     Si está activo, los widgets nacionales usarán la composición manual de bancas. Si no, usarán la proyección en tiempo real. |  | ||||||
|                 </p> |  | ||||||
|             </div>*/} |  | ||||||
|  |  | ||||||
|             <div style={{ display: 'flex', gap: '2rem', marginTop: '1rem' }}> |             <div style={{ display: 'flex', gap: '2rem', marginTop: '1rem' }}> | ||||||
|                 {/* Columna Diputados */} |                 {/* Columna Diputados */} | ||||||
| @@ -77,12 +68,12 @@ export const ConfiguracionNacional = () => { | |||||||
|                     </p> |                     </p> | ||||||
|                     <select id="presidencia-diputados-nacional" value={presidenciaDiputadosId} onChange={e => setPresidenciaDiputadosId(e.target.value)} style={{ width: '100%', padding: '8px', marginBottom: '0.5rem' }}> |                     <select id="presidencia-diputados-nacional" value={presidenciaDiputadosId} onChange={e => setPresidenciaDiputadosId(e.target.value)} style={{ width: '100%', padding: '8px', marginBottom: '0.5rem' }}> | ||||||
|                         <option value="">-- No Asignado --</option> |                         <option value="">-- No Asignado --</option> | ||||||
|                         {agrupaciones.map(a => (<option key={a.id} value={a.id}>{a.nombre}</option>))} |                         {agrupaciones.map(a => (<option key={a.id} value={a.id}>{`(${a.id}) ${a.nombre}`}</option>))} | ||||||
|                     </select> |                     </select> | ||||||
|                     {presidenciaDiputadosId && ( |                     {presidenciaDiputadosId && ( | ||||||
|                         <div> |                         <div> | ||||||
|                             <label><input type="radio" value="ganada" checked={diputadosTipoBanca === 'ganada'} onChange={() => setDiputadosTipoBanca('ganada')} /> Descontar de Banca Ganada</label> |                             <label><input type="radio" value="ganada" checked={diputadosTipoBanca === 'ganada'} onChange={() => setDiputadosTipoBanca('ganada')} /> Descontar de Banca Ganada</label> | ||||||
|                             <label style={{marginLeft: '1rem'}}><input type="radio" value="previa" checked={diputadosTipoBanca === 'previa'} onChange={() => setDiputadosTipoBanca('previa')} /> Descontar de Banca Previa</label> |                             <label style={{ marginLeft: '1rem' }}><input type="radio" value="previa" checked={diputadosTipoBanca === 'previa'} onChange={() => setDiputadosTipoBanca('previa')} /> Descontar de Banca Previa</label> | ||||||
|                         </div> |                         </div> | ||||||
|                     )} |                     )} | ||||||
|                 </div> |                 </div> | ||||||
| @@ -97,7 +88,7 @@ export const ConfiguracionNacional = () => { | |||||||
|                     </p> |                     </p> | ||||||
|                     <select id="presidencia-senado-nacional" value={presidenciaSenadoId} onChange={e => setPresidenciaSenadoId(e.target.value)} style={{ width: '100%', padding: '8px' }}> |                     <select id="presidencia-senado-nacional" value={presidenciaSenadoId} onChange={e => setPresidenciaSenadoId(e.target.value)} style={{ width: '100%', padding: '8px' }}> | ||||||
|                         <option value="">-- No Asignado --</option> |                         <option value="">-- No Asignado --</option> | ||||||
|                         {agrupaciones.map(a => (<option key={a.id} value={a.id}>{a.nombre}</option>))} |                         {agrupaciones.map(a => (<option key={a.id} value={a.id}>{`(${a.id}) ${a.nombre}`}</option>))} | ||||||
|                     </select> |                     </select> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import type { MunicipioSimple, AgrupacionPolitica, LogoAgrupacionCategoria, Prov | |||||||
| import { CATEGORIAS_NACIONALES_OPTIONS, CATEGORIAS_PROVINCIALES_OPTIONS } from '../constants/categorias'; | import { CATEGORIAS_NACIONALES_OPTIONS, CATEGORIAS_PROVINCIALES_OPTIONS } from '../constants/categorias'; | ||||||
|  |  | ||||||
| const ELECCION_OPTIONS = [ | const ELECCION_OPTIONS = [ | ||||||
|     { value: 0, label: 'General (Toda la elección)' }, |     { value: 0, label: 'General (Todas las elecciones)' }, | ||||||
|     { value: 2, label: 'Elecciones Nacionales' }, |     { value: 2, label: 'Elecciones Nacionales' }, | ||||||
|     { value: 1, label: 'Elecciones Provinciales' } |     { value: 1, label: 'Elecciones Provinciales' } | ||||||
| ]; | ]; | ||||||
| @@ -84,7 +84,14 @@ export const LogoOverridesManager = () => { | |||||||
|             <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '1rem', alignItems: 'flex-end' }}> |             <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '1rem', alignItems: 'flex-end' }}> | ||||||
|                 <Select options={ELECCION_OPTIONS} value={selectedEleccion} onChange={(opt) => { setSelectedEleccion(opt!); setSelectedCategoria(null); }} /> |                 <Select options={ELECCION_OPTIONS} value={selectedEleccion} onChange={(opt) => { setSelectedEleccion(opt!); setSelectedCategoria(null); }} /> | ||||||
|                 <Select options={categoriaOptions} value={selectedCategoria} onChange={setSelectedCategoria} placeholder="Seleccione Categoría..." isDisabled={!selectedEleccion} /> |                 <Select options={categoriaOptions} value={selectedCategoria} onChange={setSelectedCategoria} placeholder="Seleccione Categoría..." isDisabled={!selectedEleccion} /> | ||||||
|                 <Select options={agrupaciones.map(a => ({ value: a.id, label: a.nombre, ...a }))} getOptionValue={opt => opt.id} getOptionLabel={opt => opt.nombre} value={selectedAgrupacion} onChange={setSelectedAgrupacion} placeholder="Seleccione Agrupación..." /> |                 <Select | ||||||
|  |                     options={agrupaciones.map(a => ({ value: a.id, label: a.nombre, ...a }))} | ||||||
|  |                     getOptionValue={opt => opt.id} | ||||||
|  |                     getOptionLabel={opt => `(${opt.id}) ${opt.nombre}`} | ||||||
|  |                     value={selectedAgrupacion} | ||||||
|  |                     onChange={setSelectedAgrupacion} | ||||||
|  |                     placeholder="Seleccione Agrupación..." | ||||||
|  |                 /> | ||||||
|                 <Select options={AMBITO_LEVEL_OPTIONS} value={selectedAmbitoLevel} onChange={(opt) => { setSelectedAmbitoLevel(opt!); setSelectedProvincia(null); setSelectedMunicipio(null); }} /> |                 <Select options={AMBITO_LEVEL_OPTIONS} value={selectedAmbitoLevel} onChange={(opt) => { setSelectedAmbitoLevel(opt!); setSelectedProvincia(null); setSelectedMunicipio(null); }} /> | ||||||
|  |  | ||||||
|                 {selectedAmbitoLevel.value === 'provincia' || selectedAmbitoLevel.value === 'municipio' ? ( |                 {selectedAmbitoLevel.value === 'provincia' || selectedAmbitoLevel.value === 'municipio' ? ( | ||||||
|   | |||||||
| @@ -102,7 +102,7 @@ export const OrdenDiputadosManager = () => { | |||||||
|           <ul className="sortable-list-horizontal"> |           <ul className="sortable-list-horizontal"> | ||||||
|             {agrupaciones.map(agrupacion => ( |             {agrupaciones.map(agrupacion => ( | ||||||
|               <SortableItem key={agrupacion.id} id={agrupacion.id}> |               <SortableItem key={agrupacion.id} id={agrupacion.id}> | ||||||
|                       {agrupacion.nombreCorto || agrupacion.nombre} |                 {`(${agrupacion.id}) ${agrupacion.nombreCorto || agrupacion.nombre}`} | ||||||
|               </SortableItem> |               </SortableItem> | ||||||
|             ))} |             ))} | ||||||
|           </ul> |           </ul> | ||||||
|   | |||||||
| @@ -90,7 +90,7 @@ export const OrdenDiputadosNacionalesManager = () => { | |||||||
|           <ul className="sortable-list-horizontal"> |           <ul className="sortable-list-horizontal"> | ||||||
|             {agrupacionesOrdenadas.map(agrupacion => ( |             {agrupacionesOrdenadas.map(agrupacion => ( | ||||||
|               <SortableItem key={agrupacion.id} id={agrupacion.id}> |               <SortableItem key={agrupacion.id} id={agrupacion.id}> | ||||||
|                       {agrupacion.nombreCorto || agrupacion.nombre} |                 {`(${agrupacion.id}) ${agrupacion.nombreCorto || agrupacion.nombre}`} | ||||||
|               </SortableItem> |               </SortableItem> | ||||||
|             ))} |             ))} | ||||||
|           </ul> |           </ul> | ||||||
|   | |||||||
| @@ -102,7 +102,7 @@ export const OrdenSenadoresManager = () => { | |||||||
|           <ul className="sortable-list-horizontal"> |           <ul className="sortable-list-horizontal"> | ||||||
|             {agrupaciones.map(agrupacion => ( |             {agrupaciones.map(agrupacion => ( | ||||||
|               <SortableItem key={agrupacion.id} id={agrupacion.id}> |               <SortableItem key={agrupacion.id} id={agrupacion.id}> | ||||||
|                       {agrupacion.nombreCorto || agrupacion.nombre} |                 {`(${agrupacion.id}) ${agrupacion.nombreCorto || agrupacion.nombre}`} | ||||||
|               </SortableItem> |               </SortableItem> | ||||||
|             ))} |             ))} | ||||||
|           </ul> |           </ul> | ||||||
|   | |||||||
| @@ -82,7 +82,7 @@ export const OrdenSenadoresNacionalesManager = () => { | |||||||
|           <ul className="sortable-list-horizontal"> |           <ul className="sortable-list-horizontal"> | ||||||
|             {agrupacionesOrdenadas.map(agrupacion => ( |             {agrupacionesOrdenadas.map(agrupacion => ( | ||||||
|               <SortableItem key={agrupacion.id} id={agrupacion.id}> |               <SortableItem key={agrupacion.id} id={agrupacion.id}> | ||||||
|                       {agrupacion.nombreCorto || agrupacion.nombre} |                 {`(${agrupacion.id}) ${agrupacion.nombreCorto || agrupacion.nombre}`} | ||||||
|               </SortableItem> |               </SortableItem> | ||||||
|             ))} |             ))} | ||||||
|           </ul> |           </ul> | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ using System.Reflection; | |||||||
| [assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Api")] | [assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Api")] | ||||||
| [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] | [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] | ||||||
| [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] | ||||||
| [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2b7fb927e2f0d9ff06dffa820bc9809d6e138b01")] | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+069446b90326f5acee630bf3b88238e4e054764f")] | ||||||
| [assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Api")] | [assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Api")] | ||||||
| [assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Api")] | [assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Api")] | ||||||
| [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user