Files
Elecciones-2025/Elecciones-Web/frontend/src/components/common/DiputadosNacionalesLayout.tsx

339 lines
22 KiB
TypeScript
Raw Normal View History

// src/components/common/DiputadosNacionalesLayout.tsx
import React from 'react';
import type { PartidoComposicionNacional } from '../../apiService';
// --- Interfaces Actualizadas ---
interface DiputadosNacionalesLayoutProps {
partyData: PartidoComposicionNacional[];
size?: number;
presidenteBancada?: { color: string | null } | null; // <-- Nueva Prop
}
const PRESIDENTE_SEAT_INDEX = 0; // El escaño 'seat-0' es el del presidente
export const DiputadosNacionalesLayout: React.FC<DiputadosNacionalesLayoutProps> = ({
partyData,
size = 800,
presidenteBancada, // <-- Recibimos la nueva prop
}) => {
// --- ARRAY DE 257 ELEMENTOS <circle> ORDENADOS POR ID DE "seat-X" ---
const seatElements = [
<circle key="seat-0" id="seat-0" r="15.7" cy="639.5" cx="595.3" />,
<circle key="seat-1" id="seat-1" r="15.7" cy="673.1" cx="109.3" />,
<circle key="seat-2" id="seat-2" r="15.7" cy="673.1" cx="161.7" />,
<circle key="seat-3" id="seat-3" r="15.7" cy="673.5" cx="214.3" />,
<circle key="seat-4" id="seat-4" r="15.7" cy="673.2" cx="266.5" />,
<circle key="seat-5" id="seat-5" r="15.7" cy="669.5" cx="319.4" />,
<circle key="seat-6" id="seat-6" r="15.7" cy="660" cx="370.8" />,
<circle key="seat-7" id="seat-7" transform="rotate(-88.1)" r="15.7" cy="77.69" cx="-634.1" />,
<circle key="seat-8" id="seat-8" r="15.7" cy="639" cx="109.3" />,
<circle key="seat-9" id="seat-9" r="15.7" cy="639" cx="161.7" />,
<circle key="seat-10" id="seat-10" r="15.7" cy="639.2" cx="214.3" />,
<circle key="seat-11" id="seat-11" r="15.7" cy="638.8" cx="266.7" />,
<circle key="seat-12" id="seat-12" r="15.7" cy="635.1" cx="319.4" />,
<circle key="seat-13" id="seat-13" r="15.7" cy="625.7" cx="371.7" />,
<circle key="seat-14" id="seat-14" r="15.7" cy="639" cx="424.2" />,
<circle key="seat-15" id="seat-15" transform="rotate(-88.1)" r="15.7" cy="77" cx="-600.18" />,
<circle key="seat-16" id="seat-16" r="15.7" cy="600.9" cx="109.5" />,
<circle key="seat-17" id="seat-17" r="15.7" cy="603.7" cx="162.1" />,
<circle key="seat-18" id="seat-18" r="15.7" cy="598.6" cx="215" />,
<circle key="seat-19" id="seat-19" r="15.7" cy="602.6" cx="267.1" />,
<circle key="seat-20" id="seat-20" transform="rotate(-88.1)" r="15.7" cy="76.57" cx="-562.57" />,
<circle key="seat-21" id="seat-21" r="15.7" cy="566.7" cx="112.2" />,
<circle key="seat-22" id="seat-22" r="15.7" cy="570" cx="164.7" />,
<circle key="seat-23" id="seat-23" r="15.7" cy="564.5" cx="218.2" />,
<circle key="seat-24" id="seat-24" r="15.7" cy="568.6" cx="270.9" />,
<circle key="seat-25" id="seat-25" r="15.7" cy="588" cx="321.1" />,
<circle key="seat-26" id="seat-26" transform="rotate(-88.1)" r="15.7" cy="79.88" cx="-524.51" />,
<circle key="seat-27" id="seat-27" transform="rotate(-5.7)" r="15.7" cy="539.19" cx="65.05" />,
<circle key="seat-28" id="seat-28" r="15.7" cy="535.9" cx="170" />,
<circle key="seat-29" id="seat-29" transform="rotate(-88.1)" r="15.7" cy="86.87" cx="-488.2" />,
<circle key="seat-30" id="seat-30" r="15.7" cy="497.2" cx="125.2" />,
<circle key="seat-31" id="seat-31" r="15.7" cy="502.8" cx="178.2" />,
<circle key="seat-32" id="seat-32" r="15.7" cy="525.1" cx="226.3" />,
<circle key="seat-33" id="seat-33" r="15.7" cy="533.1" cx="278.4" />,
<circle key="seat-34" id="seat-34" r="15.7" cy="554.6" cx="327.1" />,
<circle key="seat-35" id="seat-35" r="15.7" cy="567.9" cx="377.9" />,
<circle key="seat-36" id="seat-36" r="15.7" cy="596.7" cx="426" />,
<circle key="seat-37" id="seat-37" r="15.7" cy="453.8" cx="79.7" />,
<circle key="seat-38" id="seat-38" r="15.7" cy="462" cx="135.7" />,
<circle key="seat-39" id="seat-39" r="15.7" cy="469.3" cx="188.9" />,
<circle key="seat-40" id="seat-40" r="15.7" cy="492.6" cx="236.4" />,
<circle key="seat-41" id="seat-41" r="15.7" cy="500.6" cx="289.8" />,
<circle key="seat-42" id="seat-42" r="15.7" cy="511.6" cx="341.5" />,
<circle key="seat-43" id="seat-43" r="15.7" cy="535" cx="388.9" />,
<circle key="seat-44" id="seat-44" r="15.7" cy="555" cx="437.3" />,
<circle key="seat-45" id="seat-45" r="15.7" cy="419.3" cx="92.8" />,
<circle key="seat-46" id="seat-46" r="15.7" cy="429.8" cx="148.1" />,
<circle key="seat-47" id="seat-47" r="15.7" cy="387.4" cx="106.8" />,
<circle key="seat-48" id="seat-48" transform="rotate(-5.7)" r="15.7" cy="364.72" cx="89.86" />,
<circle key="seat-49" id="seat-49" r="15.7" cy="395.5" cx="164.4" />,
<circle key="seat-50" id="seat-50" r="15.7" cy="437.3" cx="202.4" />,
<circle key="seat-51" id="seat-51" r="15.7" cy="455.4" cx="252.1" />,
<circle key="seat-52" id="seat-52" r="15.7" cy="325.1" cx="144.9" />,
<circle key="seat-53" id="seat-53" r="15.7" cy="365.7" cx="181.3" />,
<circle key="seat-54" id="seat-54" r="15.7" cy="405.1" cx="218.8" />,
<circle key="seat-55" id="seat-55" r="15.7" cy="425.6" cx="267.7" />,
<circle key="seat-56" id="seat-56" r="15.7" cy="464.9" cx="306.5" />,
<circle key="seat-57" id="seat-57" r="15.7" cy="292.1" cx="168.7" />,
<circle key="seat-58" id="seat-58" r="15.7" cy="334.6" cx="202.3" />,
<circle key="seat-59" id="seat-59" r="15.7" cy="376.9" cx="236.7" />,
<circle key="seat-60" id="seat-60" r="15.7" cy="265.1" cx="190.8" />,
<circle key="seat-61" id="seat-61" r="15.7" cy="307.2" cx="224" />,
<circle key="seat-62" id="seat-62" r="15.7" cy="346.9" cx="259.3" />,
<circle key="seat-63" id="seat-63" r="15.7" cy="393" cx="289.6" />,
<circle key="seat-64" id="seat-64" r="15.7" cy="435.9" cx="323.7" />,
<circle key="seat-65" id="seat-65" r="15.7" cy="480.8" cx="357.3" />,
<circle key="seat-66" id="seat-66" r="15.7" cy="236.2" cx="218.1" />,
<circle key="seat-67" id="seat-67" r="15.7" cy="278.6" cx="250" />,
<circle key="seat-68" id="seat-68" r="15.7" cy="320.2" cx="283" />,
<circle key="seat-69" id="seat-69" r="15.7" cy="362" cx="315.5" />,
<circle key="seat-70" id="seat-70" r="15.7" cy="403.8" cx="348.7" />,
<circle key="seat-71" id="seat-71" r="15.7" cy="445.9" cx="381.6" />,
<circle key="seat-72" id="seat-72" r="15.7" cy="489" cx="415.1" />,
<circle key="seat-73" id="seat-73" r="15.7" cy="515.6" cx="460.7" />,
<circle key="seat-74" id="seat-74" r="15.7" cy="485.2" cx="491" />,
<circle key="seat-75" id="seat-75" r="15.7" cy="213.6" cx="243.2" />,
<circle key="seat-76" id="seat-76" r="15.7" cy="254.9" cx="275.3" />,
<circle key="seat-77" id="seat-77" r="15.7" cy="296.4" cx="307.8" />,
<circle key="seat-78" id="seat-78" r="15.7" cy="337.6" cx="339.9" />,
<circle key="seat-79" id="seat-79" r="15.7" cy="379" cx="372.5" />,
<circle key="seat-80" id="seat-80" r="15.7" cy="420.8" cx="405.1" />,
<circle key="seat-81" id="seat-81" r="15.7" cy="462.7" cx="437.2" />,
<circle key="seat-82" id="seat-82" r="15.5" cy="181.8" cx="283.1" />,
<circle key="seat-83" id="seat-83" r="15.5" cy="223.6" cx="315.4" />,
<circle key="seat-84" id="seat-84" r="15.7" cy="262.6" cx="351" />,
<circle key="seat-85" id="seat-85" r="15.5" cy="304.5" cx="382.7" />,
<circle key="seat-86" id="seat-86" r="15.7" cy="339.1" cx="425.3" />,
<circle key="seat-87" id="seat-87" r="15.7" cy="379" cx="461" />,
<circle key="seat-88" id="seat-88" r="15.7" cy="420.4" cx="495.9" />,
<circle key="seat-89" id="seat-89" r="15.7" cy="463.5" cx="528.1" />,
<circle key="seat-90" id="seat-90" r="15.5" cy="160.4" cx="315.7" />,
<circle key="seat-91" id="seat-91" r="15.5" cy="206.2" cx="342.9" />,
<circle key="seat-92" id="seat-92" r="15.7" cy="245.1" cx="379" />,
<circle key="seat-93" id="seat-93" r="15.5" cy="287.4" cx="410.5" />,
<circle key="seat-94" id="seat-94" r="15.7" cy="323.4" cx="455.9" />,
<circle key="seat-95" id="seat-95" transform="rotate(-80.8)" r="15.7" cy="555.93" cx="-274.27" />,
<circle key="seat-96" id="seat-96" r="15.7" cy="407.6" cx="527.7" />,
<circle key="seat-97" id="seat-97" r="15.5" cy="142.7" cx="345.9" />,
<circle key="seat-98" id="seat-98" r="15.5" cy="186.8" cx="375.8" />,
<circle key="seat-99" id="seat-99" r="15.5" cy="125.9" cx="377.8" />,
<circle key="seat-100" id="seat-100" r="15.5" cy="173.7" cx="405.1" />,
<circle key="seat-101" id="seat-101" r="15.7" cy="223" cx="422.9" />,
<circle key="seat-102" id="seat-102" r="15.5" cy="270.9" cx="444.3" />,
<circle key="seat-103" id="seat-103" r="15.5" cy="112" cx="409.4" />,
<circle key="seat-104" id="seat-104" r="15.5" cy="157.7" cx="438.1" />,
<circle key="seat-105" id="seat-105" r="15.7" cy="209" cx="453.9" />,
<circle key="seat-106" id="seat-106" r="15.5" cy="259.6" cx="474.2" />,
<circle key="seat-107" id="seat-107" r="15.7" cy="306.3" cx="499.3" />,
<circle key="seat-108" id="seat-108" r="15.5" cy="100.1" cx="443.4" />,
<circle key="seat-109" id="seat-109" r="15.5" cy="146.7" cx="472.7" />,
<circle key="seat-110" id="seat-110" r="15.7" cy="197.9" cx="497" />,
<circle key="seat-111" id="seat-111" r="15.5" cy="249" cx="508.8" />,
<circle key="seat-112" id="seat-112" r="15.7" cy="298.4" cx="532.7" />,
<circle key="seat-113" id="seat-113" r="15.7" cy="350.8" cx="538.1" />,
<circle key="seat-114" id="seat-114" r="15.5" cy="92.2" cx="477" />,
<circle key="seat-115" id="seat-115" r="15.5" cy="84.4" cx="510" />,
<circle key="seat-116" id="seat-116" transform="rotate(-80.8)" r="15.5" cy="523.04" cx="-55.62" />,
<circle key="seat-117" id="seat-117" r="15.7" cy="190.1" cx="531.6" />,
<circle key="seat-118" id="seat-118" r="15.5" cy="243.4" cx="542.3" />,
<circle key="seat-119" id="seat-119" r="15.5" cy="80.7" cx="544.3" />,
<circle key="seat-120" id="seat-120" r="15.5" cy="136.1" cx="541.9" />,
<circle key="seat-121" id="seat-121" r="15.5" cy="78.5" cx="579" />,
<circle key="seat-122" id="seat-122" r="15.5" cy="135" cx="578.2" />,
<circle key="seat-123" id="seat-123" r="15.7" cy="187.6" cx="577.9" />,
<circle key="seat-124" id="seat-124" r="15.5" cy="240" cx="579" />,
<circle key="seat-125" id="seat-125" r="15.7" cy="292.6" cx="578" />,
<circle key="seat-126" id="seat-126" r="15.7" cy="345.3" cx="578" />,
<circle key="seat-127" id="seat-127" r="15.7" cy="398" cx="577.8" />,
<circle key="seat-128" id="seat-128" r="15.7" cy="451.2" cx="572.2" />,
<circle key="seat-129" id="seat-129" r="15.5" cy="78.5" cx="613.5" />,
<circle key="seat-130" id="seat-130" r="15.5" cy="135" cx="612.3" />,
<circle key="seat-131" id="seat-131" r="15.7" cy="187.6" cx="612.6" />,
<circle key="seat-132" id="seat-132" r="15.5" cy="240" cx="611.5" />,
<circle key="seat-133" id="seat-133" r="15.7" cy="292.6" cx="612.5" />,
<circle key="seat-134" id="seat-134" r="15.7" cy="345.3" cx="612.5" />,
<circle key="seat-135" id="seat-135" r="15.7" cy="398" cx="612.7" />,
<circle key="seat-136" id="seat-136" r="15.7" cy="451.2" cx="618.3" />,
<circle key="seat-137" id="seat-137" r="15.5" cy="82.6" cx="646.3" />,
<circle key="seat-138" id="seat-138" r="15.5" cy="86.4" cx="680.5" />,
<circle key="seat-139" id="seat-139" r="15.5" cy="138.4" cx="650.6" />,
<circle key="seat-140" id="seat-140" r="15.5" cy="94.2" cx="715.6" />,
<circle key="seat-141" id="seat-141" r="15.5" cy="142.6" cx="685.4" />,
<circle key="seat-142" id="seat-142" r="15.7" cy="190.1" cx="657" />,
<circle key="seat-143" id="seat-143" r="15.5" cy="243.4" cx="648.3" />,
<circle key="seat-144" id="seat-144" r="15.5" cy="104.1" cx="747.1" />,
<circle key="seat-145" id="seat-145" r="15.5" cy="150.7" cx="719.9" />,
<circle key="seat-146" id="seat-146" r="15.7" cy="197.9" cx="691.5" />,
<circle key="seat-147" id="seat-147" r="15.5" cy="248.5" cx="679.8" />,
<circle key="seat-148" id="seat-148" r="15.7" cy="298.4" cx="657.8" />,
<circle key="seat-149" id="seat-149" r="15.7" cy="350.8" cx="652.4" />,
<circle key="seat-150" id="seat-150" r="15.5" cy="116" cx="783.1" />,
<circle key="seat-151" id="seat-151" r="15.5" cy="159.7" cx="750.4" />,
<circle key="seat-152" id="seat-152" r="15.7" cy="211" cx="736.6" />,
<circle key="seat-153" id="seat-153" r="15.5" cy="259.6" cx="716.4" />,
<circle key="seat-154" id="seat-154" r="15.7" cy="306.3" cx="691.2" />,
<circle key="seat-155" id="seat-155" r="15.5" cy="127.9" cx="812.8" />,
<circle key="seat-156" id="seat-156" r="15.5" cy="173.7" cx="785.5" />,
<circle key="seat-157" id="seat-157" r="15.7" cy="223" cx="767.7" />,
<circle key="seat-158" id="seat-158" r="15.5" cy="270.9" cx="746.3" />,
<circle key="seat-159" id="seat-159" r="15.5" cy="144.7" cx="846.6" />,
<circle key="seat-160" id="seat-160" r="15.5" cy="186.8" cx="814.8" />,
<circle key="seat-161" id="seat-161" r="15.5" cy="160.4" cx="874.8" />,
<circle key="seat-162" id="seat-162" r="15.5" cy="206.2" cx="847.6" />,
<circle key="seat-163" id="seat-163" r="15.7" cy="245.1" cx="811.5" />,
<circle key="seat-164" id="seat-164" r="15.5" cy="287.4" cx="780.1" />,
<circle key="seat-165" id="seat-165" r="15.7" cy="323.4" cx="734.6" />,
<circle key="seat-166" id="seat-166" r="15.7" cy="357.8" cx="687.4" />,
<circle key="seat-167" id="seat-167" r="15.7" cy="407.6" cx="662.8" />,
<circle key="seat-168" id="seat-168" r="15.5" cy="181.8" cx="907.5" />,
<circle key="seat-169" id="seat-169" r="15.5" cy="223.6" cx="875.2" />,
<circle key="seat-170" id="seat-170" r="15.7" cy="262.6" cx="839.5" />,
<circle key="seat-171" id="seat-171" r="15.5" cy="304.3" cx="807.8" />,
<circle key="seat-172" id="seat-172" r="15.7" cy="339.1" cx="765.3" />,
<circle key="seat-173" id="seat-173" r="15.7" cy="379" cx="729.6" />,
<circle key="seat-174" id="seat-174" r="15.7" cy="420.4" cx="694.6" />,
<circle key="seat-175" id="seat-175" r="15.7" cy="463.5" cx="662.5" />,
<circle key="seat-176" id="seat-176" r="15.7" cy="485.4" cx="699.5" />,
<circle key="seat-177" id="seat-177" r="15.7" cy="213.6" cx="947.4" />,
<circle key="seat-178" id="seat-178" r="15.7" cy="254.9" cx="915.2" />,
<circle key="seat-179" id="seat-179" r="15.7" cy="296.4" cx="882.7" />,
<circle key="seat-180" id="seat-180" r="15.7" cy="337.6" cx="850.7" />,
<circle key="seat-181" id="seat-181" r="15.7" cy="379" cx="818.1" />,
<circle key="seat-182" id="seat-182" r="15.7" cy="420.8" cx="785.4" />,
<circle key="seat-183" id="seat-183" r="15.7" cy="462.7" cx="753.4" />,
<circle key="seat-184" id="seat-184" r="15.7" cy="515.4" cx="730.1" />,
<circle key="seat-185" id="seat-185" r="15.7" cy="236.2" cx="972.4" />,
<circle key="seat-186" id="seat-186" r="15.7" cy="278.6" cx="940.5" />,
<circle key="seat-187" id="seat-187" r="15.7" cy="320.2" cx="907.5" />,
<circle key="seat-188" id="seat-188" r="15.7" cy="362" cx="875.1" />,
<circle key="seat-189" id="seat-189" r="15.7" cy="403.8" cx="841.8" />,
<circle key="seat-190" id="seat-190" r="15.7" cy="445.9" cx="808.9" />,
<circle key="seat-191" id="seat-191" r="15.7" cy="489" cx="775.5" />,
<circle key="seat-192" id="seat-192" r="15.7" cy="265.1" cx="999.7" />,
<circle key="seat-193" id="seat-193" r="15.7" cy="307.2" cx="966.6" />,
<circle key="seat-194" id="seat-194" r="15.7" cy="346.9" cx="931.2" />,
<circle key="seat-195" id="seat-195" r="15.7" cy="393" cx="901" />,
<circle key="seat-196" id="seat-196" r="15.7" cy="435.9" cx="866.9" />,
<circle key="seat-197" id="seat-197" r="15.7" cy="480.8" cx="833.2" />,
<circle key="seat-198" id="seat-198" transform="rotate(-80.8)" r="15.7" cy="1055.16" cx="-124.85" />,
<circle key="seat-199" id="seat-199" r="15.7" cy="334.6" cx="988.2" />,
<circle key="seat-200" id="seat-200" r="15.7" cy="376.9" cx="953.8" />,
<circle key="seat-201" id="seat-201" r="15.7" cy="425.6" cx="922.8" />,
<circle key="seat-202" id="seat-202" r="15.7" cy="464.9" cx="884" />,
<circle key="seat-203" id="seat-203" r="15.7" cy="325.1" cx="1045.7" />,
<circle key="seat-204" id="seat-204" r="15.7" cy="365.7" cx="1009.2" />,
<circle key="seat-205" id="seat-205" r="15.7" cy="405.1" cx="971.7" />,
<circle key="seat-206" id="seat-206" r="15.7" cy="354.1" cx="1063.2" />,
<circle key="seat-207" id="seat-207" transform="rotate(-80.8)" r="15.7" cy="1075.78" cx="-226.25" />,
<circle key="seat-208" id="seat-208" r="15.7" cy="387.4" cx="1081.8" />,
<circle key="seat-209" id="seat-209" r="15.7" cy="421.3" cx="1095.7" />,
<circle key="seat-210" id="seat-210" r="15.7" cy="429.8" cx="1042.5" />,
<circle key="seat-211" id="seat-211" r="15.7" cy="437.3" cx="988.2" />,
<circle key="seat-212" id="seat-212" r="15.7" cy="455.4" cx="938.5" />,
<circle key="seat-213" id="seat-213" r="15.7" cy="455.8" cx="1108.8" />,
<circle key="seat-214" id="seat-214" r="15.7" cy="462" cx="1054.9" />,
<circle key="seat-215" id="seat-215" r="15.7" cy="469.3" cx="1001.6" />,
<circle key="seat-216" id="seat-216" r="15.7" cy="492.6" cx="954.1" />,
<circle key="seat-217" id="seat-217" r="15.7" cy="500.6" cx="900.8" />,
<circle key="seat-218" id="seat-218" r="15.7" cy="511.6" cx="849" />,
<circle key="seat-219" id="seat-219" r="15.7" cy="535" cx="801.6" />,
<circle key="seat-220" id="seat-220" r="15.7" cy="554.8" cx="753.3" />,
<circle key="seat-221" id="seat-221" r="15.7" cy="490.9" cx="1118" />,
<circle key="seat-222" id="seat-222" r="15.7" cy="497.2" cx="1065.3" />,
<circle key="seat-223" id="seat-223" r="15.7" cy="502.8" cx="1012.3" />,
<circle key="seat-224" id="seat-224" r="15.7" cy="525.1" cx="964.2" />,
<circle key="seat-225" id="seat-225" r="15.7" cy="533.1" cx="912.2" />,
<circle key="seat-226" id="seat-226" r="15.7" cy="554.6" cx="863.4" />,
<circle key="seat-227" id="seat-227" r="15.7" cy="567.9" cx="812.7" />,
<circle key="seat-228" id="seat-228" r="15.7" cy="596.7" cx="764.8" />,
<circle key="seat-229" id="seat-229" r="15.7" cy="528.9" cx="1126.1" />,
<circle key="seat-230" id="seat-230" r="15.7" cy="530.2" cx="1072.7" />,
<circle key="seat-231" id="seat-231" transform="rotate(-80.8)" r="15.7" cy="1092.81" cx="-365.69" />,
<circle key="seat-232" id="seat-232" r="15.7" cy="562.9" cx="1130.6" />,
<circle key="seat-233" id="seat-233" r="15.7" cy="566.7" cx="1078.3" />,
<circle key="seat-234" id="seat-234" transform="rotate(-80.8)" r="15.7" cy="1103.39" cx="-398.54" />,
<circle key="seat-235" id="seat-235" r="15.7" cy="564.5" cx="972.4" />,
<circle key="seat-236" id="seat-236" r="15.7" cy="568.6" cx="919.7" />,
<circle key="seat-237" id="seat-237" r="15.7" cy="588" cx="869.4" />,
<circle key="seat-238" id="seat-238" r="15.7" cy="602.5" cx="1133.5" />,
<circle key="seat-239" id="seat-239" r="15.7" cy="600.9" cx="1081" />,
<circle key="seat-240" id="seat-240" transform="rotate(-80.8)" r="15.7" cy="1111.41" cx="-431.3" />,
<circle key="seat-241" id="seat-241" r="15.7" cy="598.6" cx="975.6" />,
<circle key="seat-242" id="seat-242" r="15.7" cy="602.6" cx="923.4" />,
<circle key="seat-243" id="seat-243" r="15.7" cy="636.4" cx="1133.9" />,
<circle key="seat-244" id="seat-244" r="15.7" cy="639" cx="1081.3" />,
<circle key="seat-245" id="seat-245" transform="rotate(-80.8)" r="15.7" cy="1117.48" cx="-466.13" />,
<circle key="seat-246" id="seat-246" r="15.7" cy="639.2" cx="976.3" />,
<circle key="seat-247" id="seat-247" r="15.7" cy="638.8" cx="923.9" />,
<circle key="seat-248" id="seat-248" r="15.7" cy="635.1" cx="871.2" />,
<circle key="seat-249" id="seat-249" r="15.7" cy="625.7" cx="818.8" />,
<circle key="seat-250" id="seat-250" r="15.7" cy="639" cx="766.3" />,
<circle key="seat-251" id="seat-251" r="15.7" cy="673.1" cx="1081.3" />,
<circle key="seat-252" id="seat-252" transform="rotate(-80.8)" r="15.7" cy="1122.99" cx="-499.74" />,
<circle key="seat-253" id="seat-253" r="15.7" cy="673.5" cx="976.3" />,
<circle key="seat-254" id="seat-254" r="15.7" cy="673.2" cx="924" />,
<circle key="seat-255" id="seat-255" r="15.7" cy="669.5" cx="871.2" />,
<circle key="seat-256" id="seat-256" r="15.7" cy="660" cx="819.7" />,
];
let seatIndex = 1; // Empezamos a contar desde 1, ya que el 0 es presidencial
return (
<svg viewBox="0 0 1190.6 772.2" width={size} height={size * (772.2 / 1190.6)} style={{ display: 'block', margin: 'auto' }}>
<g>
{/* Renderizamos el escaño presidencial primero y por separado */}
{presidenteBancada && React.cloneElement(seatElements[PRESIDENTE_SEAT_INDEX], {
fill: presidenteBancada.color || '#A9A9A9',
strokeWidth: 0.5,
})}
{partyData.map(partido => {
// Por cada partido, creamos un array combinado de sus escaños
const partySeats = [
...Array(partido.bancasFijos).fill({ isNew: false }),
...Array(partido.bancasGanadas).fill({ isNew: true })
];
return (
// Envolvemos todos los escaños de un partido en un <g>
<g
key={partido.id}
className="party-block"
data-tooltip-id="party-tooltip"
data-tooltip-content={`${partido.nombreCorto || partido.nombre}: ${partido.bancasTotales} bancas`}
>
{partySeats.map((seatInfo, i) => {
// Si ya no hay más plantillas de escaños, no renderizamos nada
if (seatIndex >= seatElements.length) return null;
const template = seatElements[seatIndex];
seatIndex++; // Incrementamos el contador para el siguiente escaño
// Clonamos la plantilla con el estilo apropiado
return React.cloneElement(template, {
key: `${partido.id}-${i}`,
className: 'seat-circle',
fill: partido.color || '#808080',
fillOpacity: seatInfo.isNew ? 1 : 0.3, // Opacidad para bancas previas
stroke: partido.color || '#808080',
strokeWidth: 0.5,
});
})}
</g>
);
})}
{/* Renderizamos los escaños vacíos sobrantes */}
{seatIndex < seatElements.length &&
seatElements.slice(seatIndex).map((template, i) =>
React.cloneElement(template, {
key: `empty-${i}`,
fill: '#E0E0E0',
stroke: '#ffffff',
strokeWidth: 0.5
})
)
}
</g>
</svg>
);
};