8888 margin-top : 10px ;
8989 color : # f5f5f5 ;
9090 }
91+
92+ # cargo {
93+ font-size : 1rem ;
94+ margin-top : 5px ;
95+ color : # d4af37 ;
96+ }
97+
98+ # partido {
99+ font-size : 0.9rem ;
100+ margin-top : 5px ;
101+ color : # bbb ;
102+ }
103+
91104 button {
92105 margin-top : 15px ;
93106 padding : 12px 30px ;
@@ -242,13 +255,12 @@ <h1>✔️ Voto Computado com Sucesso</h1>
242255 </ div >
243256
244257 < div id ="nome "> Carregando candidato...</ div >
258+ < div id ="cargo "> </ div >
259+ < div id ="partido "> </ div >
245260
246261 <!-- Status do voto -->
247262 < div id ="statusVoto " class ="status "> Buscando dados do voto...</ div >
248263
249- <!-- DEBUG INFO (remover depois) -->
250- < div id ="debugInfo " style ="display:none; background:#222; padding:10px; border-radius:8px; margin:10px 0; font-size:0.8rem; font-family:monospace; "> </ div >
251-
252264 <!-- Mensagem de bloqueio -->
253265 < div class ="blocked-message ">
254266 ⚠️ < strong > Sessão Finalizada</ strong > - Não é possível voltar ou votar novamente
@@ -311,45 +323,43 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
311323} ) ;
312324
313325// ==============================
314- // CARREGAR DADOS DO VOTO - CORRIGIDO
326+ // CARREGAR DADOS DO VOTO - SIMPLIFICADO
315327// ==============================
316328async function carregarDadosVoto ( ) {
317- console . log ( "🚀 INICIANDO CARREGAMENTO ..." ) ;
329+ console . log ( "🚀 Carregando dados do voto ..." ) ;
318330
319331 const db = new PouchDB ( 'terra_dourada_votos_local' ) ;
320- const dbCandidatos = new PouchDB ( 'terra_dourada_candidatos' ) ;
321332
322333 try {
323- // 1. PRIMEIRO: Tenta pegar do localStorage (mais rápido)
324- const candidatoIdLocal = localStorage . getItem ( "voto_candidato " ) ;
334+ // 1. PRIMEIRO: Tenta pegar do localStorage (mais rápido e simples )
335+ const candidatoSalvo = localStorage . getItem ( "ultimo_candidato_votado " ) ;
325336 const cidPinataLocal = localStorage . getItem ( "voto_cid" ) ;
326337
327- console . log ( "📱 LocalStorage - candidatoId:" , candidatoIdLocal ) ;
328- console . log ( "📱 LocalStorage - cidPinata:" , cidPinataLocal ) ;
329-
330- if ( candidatoIdLocal && candidatoIdLocal !== "branco" ) {
331- console . log ( "✅ Usando dados do LocalStorage" ) ;
332- await carregarCandidatoPorId ( candidatoIdLocal , ! ! cidPinataLocal , cidPinataLocal ) ;
338+ if ( candidatoSalvo ) {
339+ console . log ( "✅ Usando candidato do localStorage" ) ;
340+ const candidato = JSON . parse ( candidatoSalvo ) ;
341+ const usouBackend = ! ! cidPinataLocal ;
342+
343+ mostrarCandidato ( candidato , usouBackend , cidPinataLocal ) ;
333344 return ;
334345 }
335346
336- // 2. SEGUNDO: Se não tem no localStorage, busca no banco
337- console . log ( "🔍 Buscando no banco de dados ..." ) ;
347+ // 2. SEGUNDO: Se não tem no localStorage, busca no banco de votos
348+ console . log ( "🔍 Buscando voto no banco..." ) ;
338349 const cid = localStorage . getItem ( "user_cid" ) ;
339350
340351 if ( ! cid ) {
341352 throw new Error ( "CID do usuário não encontrado" ) ;
342353 }
343354
344355 const allDocs = await db . allDocs ( { include_docs : true } ) ;
345- console . log ( "📊 Total de documentos no DB:" , allDocs . rows . length ) ;
346-
356+
347357 // Filtra votos deste usuário
348358 const votosUsuario = allDocs . rows . filter ( row =>
349- row . doc . eleitor === cid && row . doc . candidato_id
359+ row . doc . eleitor === cid && row . doc . candidato
350360 ) ;
351361
352- console . log ( "🗳️ Votos deste usuário :" , votosUsuario . length ) ;
362+ console . log ( "🗳️ Votos encontrados :" , votosUsuario . length ) ;
353363
354364 if ( votosUsuario . length > 0 ) {
355365 // Pega o voto mais recente
@@ -360,21 +370,19 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
360370 const dadosVoto = ultimoVoto . doc ;
361371 const usouBackend = dadosVoto . cid_pinata && ! dadosVoto . erro ;
362372 const cidPinata = dadosVoto . cid_pinata ;
363- const candidatoId = dadosVoto . candidato_id ;
364373
365- console . log ( "✅ Último voto - candidatoId:" , candidatoId ) ;
366- console . log ( "✅ Último voto - usouBackend:" , usouBackend ) ;
367- console . log ( "✅ Último voto - cidPinata:" , cidPinata ) ;
368-
374+ console . log ( "✅ Voto encontrado:" , dadosVoto . candidato ) ;
375+
376+ // ⭐⭐ SIMPLIFICAÇÃO: Usa o candidato EXATAMENTE como estava na votação
377+ const candidato = dadosVoto . candidato ;
378+
369379 // Salva no localStorage para próxima vez
370- if ( candidatoId && candidatoId !== "branco" ) {
371- localStorage . setItem ( "voto_candidato" , candidatoId ) ;
372- if ( cidPinata ) {
373- localStorage . setItem ( "voto_cid" , cidPinata ) ;
374- }
380+ localStorage . setItem ( "ultimo_candidato_votado" , JSON . stringify ( candidato ) ) ;
381+ if ( cidPinata ) {
382+ localStorage . setItem ( "voto_cid" , cidPinata ) ;
375383 }
376384
377- await carregarCandidatoPorId ( candidatoId , usouBackend , cidPinata , dadosVoto ) ;
385+ mostrarCandidato ( candidato , usouBackend , cidPinata ) ;
378386
379387 } else {
380388 throw new Error ( "Nenhum voto encontrado para este usuário" ) ;
@@ -383,7 +391,7 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
383391 } catch ( error ) {
384392 console . error ( "❌ ERRO:" , error . message ) ;
385393
386- // Fallback completo
394+ // Fallback simples
387395 document . getElementById ( "fotoContainer" ) . innerHTML = '<div class="foto-vazia">✓</div>' ;
388396 document . getElementById ( "nome" ) . textContent = "Voto Registrado" ;
389397 document . getElementById ( "statusVoto" ) . innerHTML = '⚠️ <strong>Voto Computado</strong>' ;
@@ -394,108 +402,51 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
394402}
395403
396404// ==============================
397- // CARREGAR CANDIDATO POR ID - BUSCANDO FOTO DO CADASTRO (CORRIGIDO)
405+ // MOSTRAR CANDIDATO - SIMPLES E DIRETO
398406// ==============================
399- async function carregarCandidatoPorId ( candidatoId , usouBackend , cidPinata , dadosVoto = null ) {
400- console . log ( "👤 Buscando candidato ID :" , candidatoId ) ;
407+ function mostrarCandidato ( candidato , usouBackend , cidPinata ) {
408+ console . log ( "🎯 Mostrando candidato:" , candidato ) ;
401409
402- const dbCandidatos = new PouchDB ( 'terra_dourada_candidatos' ) ;
403-
404- try {
405- // ⭐⭐ CORREÇÃO: Busca o candidato DIRETAMENTE pelo ID
406- let candidato ;
407-
408- try {
409- // Tenta buscar pelo ID exato primeiro (mais eficiente)
410- candidato = await dbCandidatos . get ( candidatoId ) ;
411- console . log ( "✅ Candidato encontrado via get():" , candidato . nome ) ;
412- console . log ( "📸 Foto via get():" , candidato . foto ? "Base64 presente" : "NÃO TEM FOTO" ) ;
413-
414- } catch ( getError ) {
415- console . log ( "⚠️ Não encontrado via get(), buscando em allDocs..." ) ;
416-
417- // Fallback: busca em todos os documentos
418- const todosCandidatos = await dbCandidatos . allDocs ( { include_docs : true } ) ;
419- const candidatoEncontrado = todosCandidatos . rows . find ( row => row . id === candidatoId ) ;
420-
421- if ( candidatoEncontrado ) {
422- candidato = candidatoEncontrado . doc ;
423- console . log ( "✅ Candidato encontrado via allDocs():" , candidato . nome ) ;
424- console . log ( "📸 Foto via allDocs():" , candidato . foto ? "Base64 presente" : "NÃO TEM FOTO" ) ;
425- } else {
426- throw new Error ( "Candidato não encontrado em allDocs" ) ;
427- }
428- }
429-
430- // ⭐⭐ CORREÇÃO: Verifica se a foto é Base64 válida
431- if ( candidato . foto && ! candidato . foto . startsWith ( 'data:image' ) ) {
432- console . warn ( "⚠️ Foto não é Base64 válida:" , candidato . foto . substring ( 0 , 50 ) + "..." ) ;
433- }
434-
435- atualizarInterfaceCandidato ( candidato , usouBackend , cidPinata , dadosVoto ) ;
436-
437- } catch ( error ) {
438- console . error ( "❌ Erro ao buscar candidato:" , error . message ) ;
439-
440- // Fallback: usa dados do voto se disponível
441- const candidatoFallback = {
442- _id : candidatoId ,
443- nome : dadosVoto ?. candidato_nome || "Candidato Escolhido" ,
444- foto : null
445- } ;
446-
447- atualizarInterfaceCandidato ( candidatoFallback , usouBackend , cidPinata , dadosVoto ) ;
448- }
449- }
450-
451- // ==============================
452- // ATUALIZAR INTERFACE - CARREGANDO FOTO DO CANDIDATO (CORRIGIDO)
453- // ==============================
454- function atualizarInterfaceCandidato ( candidato , usouBackend , cidPinata , dadosVoto ) {
455410 const fotoContainer = document . getElementById ( "fotoContainer" ) ;
456411 const nomeElement = document . getElementById ( "nome" ) ;
412+ const cargoElement = document . getElementById ( "cargo" ) ;
413+ const partidoElement = document . getElementById ( "partido" ) ;
457414 const statusElement = document . getElementById ( "statusVoto" ) ;
458415
459- console . log ( "🎨 Atualizando interface:" , candidato . nome ) ;
460- console . log ( "🖼️ Foto disponível:" , ! ! candidato . foto ) ;
461-
462- // Atualiza nome
463- nomeElement . textContent = candidato . nome ;
416+ // Atualiza informações básicas
417+ nomeElement . textContent = candidato . nome || "Candidato" ;
418+ cargoElement . textContent = candidato . cargo || "" ;
419+ partidoElement . textContent = candidato . partido ? `Partido: ${ candidato . partido } ` : "" ;
464420
465- // ⭐⭐ CORREÇÃO : Carrega a foto do candidato se existir
421+ // ⭐⭐ SIMPLIFICAÇÃO : Carrega a foto EXATAMENTE como estava na votação
466422 if ( candidato . foto && candidato . foto . startsWith ( 'data:image' ) ) {
467- console . log ( "📸 Carregando foto Base64 do candidato..." ) ;
468-
469- // Mostra loading enquanto a imagem carrega
470- fotoContainer . innerHTML = '<div class="foto-vazia" style="color: #d4af37;">⏳</div>' ;
423+ console . log ( "📸 Carregando foto do candidato..." ) ;
471424
472425 const img = new Image ( ) ;
473426 img . className = "foto-candidato" ;
474427 img . alt = candidato . nome ;
475-
476- // ⭐⭐ CORREÇÃO: Usa a foto Base64 diretamente
477428 img . src = candidato . foto ;
478429
479430 img . onload = function ( ) {
480- console . log ( "✅ Foto do candidato carregada com sucesso!" ) ;
431+ console . log ( "✅ Foto carregada com sucesso!" ) ;
481432 fotoContainer . innerHTML = '' ;
482433 fotoContainer . appendChild ( img ) ;
483434 } ;
484435
485436 img . onerror = function ( ) {
486- console . log ( "❌ Erro ao carregar foto do candidato, usando ícone" ) ;
487- // Fallback para ícone
488- if ( candidato . _id === "branco" || candidato . nome . toUpperCase ( ) . includes ( "BRANCO" ) ) {
489- fotoContainer . innerHTML = '<div class="foto-vazia">⚪</div>' ;
490- } else {
491- fotoContainer . innerHTML = '<div class="foto-vazia">👤</div>' ;
492- }
437+ console . log ( "❌ Erro ao carregar foto" ) ;
438+ fotoContainer . innerHTML = candidato . _id === "branco" ?
439+ '<div class="foto-vazia">⚪</div>' :
440+ '<div class="foto-vazia">👤</div>' ;
493441 } ;
494442
495- } else {
496- console . log ( "📷 Candidato não tem foto Base64 válida:" , candidato . foto ? "Tem campo mas não é Base64" : "Campo vazio" ) ;
443+ // Coloca a imagem imediatamente
444+ fotoContainer . innerHTML = '' ;
445+ fotoContainer . appendChild ( img ) ;
497446
498- // Candidato sem foto - usa ícone baseado no tipo
447+ } else {
448+ console . log ( "📷 Sem foto, usando ícone" ) ;
449+ // Usa ícone baseado no tipo de voto
499450 if ( candidato . _id === "branco" || ( candidato . nome && candidato . nome . toUpperCase ( ) . includes ( "BRANCO" ) ) ) {
500451 fotoContainer . innerHTML = '<div class="foto-vazia">⚪</div>' ;
501452 } else {
@@ -546,43 +497,15 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
546497// ==============================
547498function sairDoSistema ( ) {
548499 localStorage . removeItem ( "voto_cid" ) ;
549- localStorage . removeItem ( "voto_candidato " ) ;
500+ localStorage . removeItem ( "ultimo_candidato_votado " ) ;
550501 window . location . href = "index.html" ;
551502}
552503
553- // ==============================
554- // DIAGNÓSTICO TEMPORÁRIO (REMOVER DEPOIS)
555- // ==============================
556- async function diagnosticoCompleto ( ) {
557- try {
558- const dbCandidatos = new PouchDB ( 'terra_dourada_candidatos' ) ;
559- const todos = await dbCandidatos . allDocs ( { include_docs : true } ) ;
560-
561- console . log ( "====== DIAGNÓSTICO COMPLETO DOS CANDIDATOS ======" ) ;
562- todos . rows . forEach ( row => {
563- const doc = row . doc ;
564- console . log ( `📋 ${ doc . nome } (${ doc . _id } )` , {
565- temFoto : ! ! doc . foto ,
566- tipoFoto : doc . foto ? ( doc . foto . startsWith ( 'data:image' ) ? 'Base64 Válida' : 'Formato Inválido' ) : 'NULL' ,
567- previewFoto : doc . foto ? doc . foto . substring ( 0 , 30 ) + '...' : 'N/A'
568- } ) ;
569- } ) ;
570- console . log ( "=================================================" ) ;
571- } catch ( error ) {
572- console . error ( "Erro no diagnóstico:" , error ) ;
573- }
574- }
575-
576504// ==============================
577505// INICIALIZAÇÃO
578506// ==============================
579507document . addEventListener ( 'DOMContentLoaded' , function ( ) {
580508 console . log ( "📄 Página carregada - iniciando..." ) ;
581-
582- // Executa diagnóstico temporário
583- diagnosticoCompleto ( ) ;
584-
585- // Carrega dados do voto
586509 carregarDadosVoto ( ) ;
587510
588511 window . onbeforeunload = function ( ) {
0 commit comments