Fase 3 (isla): panel de votación (vote_points) en React/TSX

vote_points_view ya devolvía JSON en POST. VotePanel.tsx renderiza los sitios de
votación (nombre, icono, PV) y cada botón abre el sitio en otra pestaña y hace POST
del voto -> acredita PV o muestra el cooldown que devuelve el backend. La vista pasa
vote_sites_data (serializable) por json_script. Se elimina el JS jQuery y el panel
duplicado; la sección informativa se queda en Django.

Verificado: check OK, render de la isla correcto, redirige a login sin sesión.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 21:48:32 +00:00
parent a4da7f068b
commit cefa30dabc
5 changed files with 132 additions and 34 deletions
+14
View File
@@ -0,0 +1,14 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { VotePanel } from '../components/VotePanel'
const el = document.getElementById('vote-points-app')
if (el) {
const dEl = document.getElementById('vote-points-data')
const sites = dEl ? JSON.parse(dEl.textContent || '[]') : []
createRoot(el).render(
<StrictMode>
<VotePanel voteUrl={el.dataset.url || ''} csrfToken={el.dataset.csrf || ''} sites={sites} />
</StrictMode>,
)
}