Dashboard Executivo
Visão gerencial e institucional — só consulta. Para operar a sessão, use o painel operacional.
{{-- ============ Filtros ============ wire:model (sem .live) — só aplica ao clicar em "Filtrar", pra não disparar uma requisição a cada tecla digitada num campo de data. Nenhum filtro é obrigatório: todos começam vazios (mesmo default que os relatórios administrativos já usam hoje quando nenhum parâmetro é informado). --}}
O filtro de vereador só afeta as tabelas por vereador abaixo — os cards e gráficos institucionais (sessões, matérias, frequência média) mostram sempre a Câmara inteira. O filtro de ano/exercício usa o ano de protocolo da matéria (produção legislativa); período usa a data da sessão.
{{-- ============ Cards principais — 100% renderizados no servidor, nunca dependem de JavaScript pra aparecer. ============ --}}
Sessões realizadas
{{ $this->resumo['sessoes_realizadas'] }}
Matérias apreciadas
{{ $this->resumo['materias']['total'] }}
{{ $this->resumo['materias']['aprovadas'] }} aprovadas · {{ $this->resumo['materias']['rejeitadas'] }} rejeitadas
Taxa de aprovação
{{ $this->resumo['materias']['taxa_aprovacao'] !== null ? $this->resumo['materias']['taxa_aprovacao'] . '%' : '—' }}
@if($this->resumo['materias']['taxa_aprovacao'] === null)
Sem matéria com resultado no período
@endif
Frequência média
{{ $this->resumo['frequencia_media'] !== null ? $this->resumo['frequencia_media'] . '%' : '—' }}
Produção legislativa
{{ $this->resumo['producao']['total'] }}
matérias protocoladas
Duração média da sessão
@php($dur = $this->resumo['duracao'])
@if($dur['media_segundos'] !== null) {{ sprintf('%dh%02dmin', intdiv($dur['media_segundos'], 3600), intdiv($dur['media_segundos'] % 3600, 60)) }} @else — @endif
@if($dur['sessoes_total'] > 0) Calculado com base em {{ $dur['sessoes_com_dados'] }} de {{ $dur['sessoes_total'] }} sessões @else Nenhuma sessão no período @endif
{{-- ============ Gráficos — Chart.js via CDN. Progressivo: se o CDN não carregar, os cards acima (e as tabelas abaixo) já mostram os números reais sem depender de nenhum JS. ============ --}}
Sessões realizadas por mês
@if(empty($this->resumo['evolucao_sessoes']))
Nenhuma sessão no período selecionado.
@endif
Matérias apreciadas por mês
@if(empty($this->resumo['evolucao_materias']))
Nenhuma matéria apreciada no período selecionado.
@endif
Frequência média por mês
@if(empty($this->resumo['evolucao_frequencia']))
Sem dados de presença no período selecionado.
@endif
Distribuição de matérias por tipo
@if(empty($this->resumo['distribuicao_por_tipo']))
Nenhuma matéria apreciada no período selecionado.
@endif
{{-- ============ Tabelas gerenciais — cada indicador é independente, sem pontuação geral nem ranking de "melhor vereador". Só é possível ordenar cada tabela pelo seu próprio indicador. ============ --}}
Frequência por vereador
@forelse($this->resumo['frequencia_por_vereador'] as $l) @empty @endforelse
VereadorPartido Sessões no períodoPresençasFrequência
{{ $l['nome'] }} {{ $l['partido'] }} {{ $l['total'] }} {{ $l['presencas'] }} {{ $l['percentual'] }}%
Nenhum vereador no filtro atual.
Produção legislativa por vereador
@forelse($this->resumo['producao']['linhas'] as $l) @empty @endforelse
AutorTotalAprovadasRejeitadasPendentes
{{ $l['nome'] }} {{ $l['total'] }} {{ $l['aprovadas'] }} {{ $l['rejeitadas'] }} {{ $l['pendentes'] }}
Nenhuma matéria no filtro atual.
Requerimentos apresentados por vereador
@forelse($this->resumo['requerimentos_por_vereador'] as $l) @empty @endforelse
VereadorPartidoRequerimentos apresentados
{{ $l['nome'] }} {{ $l['partido'] }} {{ $l['total'] }}
Nenhum vereador no filtro atual.
{{-- Chart.js via CDN — versão fixa, sem npm/Vite/dependência Composer nova. --}}