Browse Source

Fix #758 refatora painel (#792)

* Merge

* Conserta a logica de painel

* Transfere para o painel o audio de termino do discurso"

* Conserta bug

* Conserta alguns bugs no painel

* Conserta bugs na ordem das materias no paineil

* Bug fix

* Melhorias no front-end do painel

* Remove ipdb

* Conserta bug quando finaliza cronômetro"
pull/797/head
eduardocalil 8 years ago
committed by Edward
parent
commit
69dc68ed51
  1. 159
      sapl/painel/views.py
  2. 12
      sapl/sessao/views.py
  3. 146
      sapl/templates/painel/index.html
  4. 35
      sapl/templates/sessao/painel.html

159
sapl/painel/views.py

@ -84,21 +84,8 @@ def get_cronometro_status(request, name):
def get_materia_aberta(pk): def get_materia_aberta(pk):
try: return OrdemDia.objects.filter(
materia = OrdemDia.objects.filter(
sessao_plenaria_id=pk, votacao_aberta=True).last() sessao_plenaria_id=pk, votacao_aberta=True).last()
return materia
except ObjectDoesNotExist:
return False
def get_last_materia(pk):
try:
materia = OrdemDia.objects.filter(
sessao_plenaria_id=pk).last()
return materia
except ObjectDoesNotExist:
return None
def get_presentes(pk, response, materia): def get_presentes(pk, response, materia):
@ -138,11 +125,14 @@ def get_presentes(pk, response, materia):
num_presentes_ordem_dia = len(presentes_ordem_dia) num_presentes_ordem_dia = len(presentes_ordem_dia)
if materia.tipo_votacao == 1: if materia.tipo_votacao == 1:
tipo_votacao = 'Simbólica' tipo_votacao = str(_('Simbólica'))
response = get_votos(response, materia)
elif materia.tipo_votacao == 2: elif materia.tipo_votacao == 2:
tipo_votacao = 'Nominal' tipo_votacao = 'Nominal'
response = get_votos_nominal(response, materia)
elif materia.tipo_votacao == 3: elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta' tipo_votacao = 'Secreta'
response = get_votos(response, materia)
response.update({ response.update({
'presentes_ordem_dia': presentes_ordem_dia, 'presentes_ordem_dia': presentes_ordem_dia,
@ -151,10 +141,6 @@ def get_presentes(pk, response, materia):
'num_presentes_sessao_plenaria': num_presentes_sessao_plen, 'num_presentes_sessao_plenaria': num_presentes_sessao_plen,
'status_painel': 'ABERTO', 'status_painel': 'ABERTO',
'msg_painel': str(_('Votação aberta!')), 'msg_painel': str(_('Votação aberta!')),
'numero_votos_sim': 0,
'numero_votos_nao': 0,
'numero_abstencoes': 0,
'total_votos': 0,
'tipo_resultado': tipo_votacao, 'tipo_resultado': tipo_votacao,
'observacao_materia': materia.observacao, 'observacao_materia': materia.observacao,
'materia_legislativa_texto': str(materia.materia)}) 'materia_legislativa_texto': str(materia.materia)})
@ -166,21 +152,8 @@ def get_presentes(pk, response, materia):
def get_materia_expediente_aberta(pk): def get_materia_expediente_aberta(pk):
try: return ExpedienteMateria.objects.filter(
materia = ExpedienteMateria.objects.filter(
sessao_plenaria_id=pk, votacao_aberta=True).last() sessao_plenaria_id=pk, votacao_aberta=True).last()
return materia
except ObjectDoesNotExist:
return False
def get_last_materia_expediente(pk):
try:
materia = ExpedienteMateria.objects.filter(
sessao_plenaria_id=pk).last()
return materia
except ObjectDoesNotExist:
return None
def get_presentes_expediente(pk, response, materia): def get_presentes_expediente(pk, response, materia):
@ -221,10 +194,14 @@ def get_presentes_expediente(pk, response, materia):
if materia.tipo_votacao == 1: if materia.tipo_votacao == 1:
tipo_votacao = 'Simbólica' tipo_votacao = 'Simbólica'
response = get_votos(response, materia)
elif materia.tipo_votacao == 2: elif materia.tipo_votacao == 2:
tipo_votacao = 'Nominal' tipo_votacao = 'Nominal'
response = get_votos_nominal(response, materia)
elif materia.tipo_votacao == 3: elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta' tipo_votacao = 'Secreta'
response = get_votos(response, materia)
response.update({ response.update({
'presentes_expediente': presentes_expediente, 'presentes_expediente': presentes_expediente,
'num_presentes_expediente': num_presentes_expediente, 'num_presentes_expediente': num_presentes_expediente,
@ -232,10 +209,6 @@ def get_presentes_expediente(pk, response, materia):
'num_presentes_sessao_plenaria': num_presentes_sessao_plen, 'num_presentes_sessao_plenaria': num_presentes_sessao_plen,
'status_painel': str(_('ABERTO')), 'status_painel': str(_('ABERTO')),
'msg_painel': str(_('Votação aberta!')), 'msg_painel': str(_('Votação aberta!')),
'numero_votos_sim': 0,
'numero_votos_nao': 0,
'numero_abstencoes': 0,
'total_votos': 0,
'tipo_resultado': tipo_votacao, 'tipo_resultado': tipo_votacao,
'observacao_materia': materia.observacao, 'observacao_materia': materia.observacao,
'materia_legislativa_texto': str(materia.materia)}) 'materia_legislativa_texto': str(materia.materia)})
@ -245,16 +218,14 @@ def get_presentes_expediente(pk, response, materia):
# ##########################GENERAL FUNCTIONS############################# # ##########################GENERAL FUNCTIONS#############################
def response_null_materia(response): def response_nenhuma_materia(response):
response.update({ response.update({
'status_painel': 'FECHADO', 'status_painel': 'FECHADO',
'msg_painel': str(_('Nenhuma matéria disponivel para votação.')) 'msg_painel': str(_('Nenhuma matéria disponivel para votação.'))})
})
return JsonResponse(response) return JsonResponse(response)
def get_votos(response, materia): def get_votos(response, materia):
if materia.tipo_votacao == 1: if materia.tipo_votacao == 1:
tipo_votacao = 'Simbólica' tipo_votacao = 'Simbólica'
elif materia.tipo_votacao == 2: elif materia.tipo_votacao == 2:
@ -262,8 +233,14 @@ def get_votos(response, materia):
elif materia.tipo_votacao == 3: elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta' tipo_votacao = 'Secreta'
if type(materia) == OrdemDia:
registro = RegistroVotacao.objects.filter( registro = RegistroVotacao.objects.filter(
ordem=materia, materia=materia.materia).last() ordem=materia, materia=materia.materia).last()
else:
registro = RegistroVotacao.objects.filter(
expediente=materia, materia=materia.materia).last()
if registro:
total = (registro.numero_votos_sim + total = (registro.numero_votos_sim +
registro.numero_votos_nao + registro.numero_votos_nao +
registro.numero_abstencoes) registro.numero_abstencoes)
@ -275,6 +252,15 @@ def get_votos(response, materia):
'tipo_votacao': tipo_votacao, 'tipo_votacao': tipo_votacao,
'tipo_resultado': registro.tipo_resultado_votacao.nome, 'tipo_resultado': registro.tipo_resultado_votacao.nome,
}) })
else:
response.update({
'numero_votos_sim': 0,
'numero_votos_nao': 0,
'numero_abstencoes': 0,
'total_votos': 0,
'tipo_votacao': tipo_votacao,
'tipo_resultado': 'Ainda não foi votada.',
})
return response return response
@ -288,9 +274,25 @@ def get_votos_nominal(response, materia):
elif materia.tipo_votacao == 3: elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta' tipo_votacao = 'Secreta'
registro = RegistroVotacao.objects.get( if type(materia) == OrdemDia:
ordem=materia, materia=materia.materia) registro = RegistroVotacao.objects.filter(
ordem=materia, materia=materia.materia).last()
else:
registro = RegistroVotacao.objects.filter(
expediente=materia, materia=materia.materia).last()
if not registro:
response.update({
'numero_votos_sim': 0,
'numero_votos_nao': 0,
'numero_abstencoes': 0,
'total_votos': 0,
'tipo_votacao': tipo_votacao,
'tipo_resultado': 'Não foi votado ainda',
'votos': None
})
else:
votos_parlamentares = VotoParlamentar.objects.filter( votos_parlamentares = VotoParlamentar.objects.filter(
votacao_id=registro.id) votacao_id=registro.id)
@ -314,7 +316,8 @@ def get_votos_nominal(response, materia):
votos.update({v.parlamentar.id: { votos.update({v.parlamentar.id: {
'parlamentar': v.parlamentar.nome_parlamentar, 'parlamentar': v.parlamentar.nome_parlamentar,
'voto': str(v.voto), 'voto': str(v.voto),
'partido': parlamentar_partido[v.parlamentar.nome_parlamentar] 'partido': parlamentar_partido[
v.parlamentar.nome_parlamentar]
}}) }})
total = (registro.numero_votos_sim + total = (registro.numero_votos_sim +
@ -358,37 +361,57 @@ def get_dados_painel(request, pk):
elif expediente: elif expediente:
return JsonResponse(get_presentes_expediente(pk, response, expediente)) return JsonResponse(get_presentes_expediente(pk, response, expediente))
ultima_ordem = get_last_materia(pk) # Ultimo voto em ordem e ultimo voto em expediente
last_ordem_voto = RegistroVotacao.objects.filter(
if ultima_ordem: ordem__sessao_plenaria=sessao).last()
if ultima_ordem.resultado: last_expediente_voto = RegistroVotacao.objects.filter(
if ultima_ordem.tipo_votacao in [1, 3]: expediente__sessao_plenaria=sessao).last()
# Ultimas materias votadas
if last_ordem_voto:
ultima_ordem_votada = last_ordem_voto.ordem
if last_expediente_voto:
ultimo_expediente_votado = last_expediente_voto.expediente
# Caso não tenha nenhuma votação aberta
if last_ordem_voto or last_expediente_voto:
# Se alguma ordem E algum expediente já tiver sido votado...
if last_ordem_voto and last_expediente_voto:
# Verifica se o último resultado é um uma ordem do dia
if last_ordem_voto.pk >= last_expediente_voto.pk:
if ultima_ordem_votada.tipo_votacao in [1, 3]:
return JsonResponse( return JsonResponse(
get_votos(get_presentes( get_votos(get_presentes(
pk, response, ultima_ordem), ultima_ordem)) pk, response, ultima_ordem_votada),
elif ultima_ordem.tipo_votacao == 2: ultima_ordem_votada))
elif ultima_ordem_votada.tipo_votacao == 2:
return JsonResponse( return JsonResponse(
get_votos_nominal(get_presentes( get_votos_nominal(get_presentes(
pk, response, ultima_ordem), ultima_ordem)) pk, response, ultima_ordem_votada),
ultima_ordem_votada))
# Caso não seja, verifica se é um expediente
else: else:
return JsonResponse(get_presentes(pk, response, ultima_ordem)) if ultimo_expediente_votado.tipo_votacao in [1, 3]:
ultimo_expediente = get_last_materia_expediente(pk)
if ultimo_expediente:
if ultimo_expediente.resultado:
if ultimo_expediente.tipo_votacao in [1, 3]:
return JsonResponse( return JsonResponse(
get_votos(get_presentes( get_votos(get_presentes(
pk, response, ultimo_expediente), pk, response, ultimo_expediente_votado),
ultimo_expediente)) ultimo_expediente_votado))
elif ultimo_expediente.tipo_votacao == 2: elif ultimo_expediente_votado.tipo_votacao == 2:
return JsonResponse( return JsonResponse(
get_votos_nominal(get_presentes( get_votos_nominal(get_presentes(
pk, response, ultimo_expediente), pk, response,
ultimo_expediente)) ultimo_expediente_votado),
else: ultimo_expediente_votado))
# Caso somente um deles tenha resultado, prioriza a Ordem do Dia
if last_ordem_voto:
return JsonResponse(get_presentes(
pk, response, ultima_ordem_votada))
# Caso a Ordem do dia não tenha resultado, mostra o último expediente
if last_expediente_voto:
return JsonResponse(get_presentes(pk, response, return JsonResponse(get_presentes(pk, response,
ultimo_expediente)) ultimo_expediente_votado))
else:
return response_null_materia(response) # Retorna que não há nenhuma matéria já votada ou aberta
return response_nenhuma_materia(response)

12
sapl/sessao/views.py

@ -3,7 +3,7 @@ from re import sub
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import permission_required
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.forms.utils import ErrorList from django.forms.utils import ErrorList
from django.http import JsonResponse from django.http import JsonResponse
@ -1854,9 +1854,14 @@ class VotacaoExpedienteEditView(SessaoPermissionMixin):
'ementa': expediente.observacao} 'ementa': expediente.observacao}
context.update({'materia': materia}) context.update({'materia': materia})
try:
votacao = RegistroVotacao.objects.get( votacao = RegistroVotacao.objects.get(
materia_id=materia_id, materia_id=materia_id,
expediente_id=expediente_id) expediente_id=expediente_id)
except MultipleObjectsReturned:
votacao = RegistroVotacao.objects.filter(
materia_id=materia_id,
expediente_id=expediente_id).last()
votacao_existente = {'observacao': sub( votacao_existente = {'observacao': sub(
' ', ' ', strip_tags(votacao.observacao)), ' ', ' ', strip_tags(votacao.observacao)),
'tipo_resultado': 'tipo_resultado':
@ -1875,9 +1880,14 @@ class VotacaoExpedienteEditView(SessaoPermissionMixin):
expediente_id = kwargs['mid'] expediente_id = kwargs['mid']
if(int(request.POST['anular_votacao']) == 1): if(int(request.POST['anular_votacao']) == 1):
try:
RegistroVotacao.objects.get( RegistroVotacao.objects.get(
materia_id=materia_id, materia_id=materia_id,
expediente_id=expediente_id).delete() expediente_id=expediente_id).delete()
except MultipleObjectsReturned:
RegistroVotacao.objects.filter(
materia_id=materia_id,
expediente_id=expediente_id).last().delete()
expediente = ExpedienteMateria.objects.get( expediente = ExpedienteMateria.objects.get(
sessao_plenaria_id=self.object.id, sessao_plenaria_id=self.object.id,

146
sapl/templates/painel/index.html

@ -1,5 +1,5 @@
{% load i18n %} {% load i18n %}
{% load staticfiles %} {% load staticfiles sass_tags %}
<!DOCTYPE HTML> <!DOCTYPE HTML>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <!--[if gt IE 8]><!-->
@ -8,6 +8,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<!-- TODO: does it need this head_title here? --> <!-- TODO: does it need this head_title here? -->
<link rel="stylesheet" href="{% sass_src 'bootstrap-sass/assets/stylesheets/_bootstrap.scss' %}" type="text/css">
<title>{% block head_title %}{% trans 'SAPL - Sistema de Apoio ao Processo Legislativo' %}{% endblock %}</title> <title>{% block head_title %}{% trans 'SAPL - Sistema de Apoio ao Processo Legislativo' %}{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="{% static 'jquery/dist/jquery.js' %}"></script> <script type="text/javascript" src="{% static 'jquery/dist/jquery.js' %}"></script>
@ -16,12 +17,11 @@
<style type="text/css"> <style type="text/css">
@media screen { @media screen {
body { body {
background: #2B2B2A; background: #1c1b1b;
} }
ul, li { ul, li {
list-style-type: none; list-style-type: none;
} }
#sessao_plenaria, #sessao_plenaria_data, #sessao_plenaria_hora_inicio, #message, #cronometro_discurso, #cronometro_aparte, #cronometro_ordem, #relogio, #parlamentares, #votacao, #materia_legislativa_texto, #observacao_materia, #resultado_votacao{ #sessao_plenaria, #sessao_plenaria_data, #sessao_plenaria_hora_inicio, #message, #cronometro_discurso, #cronometro_aparte, #cronometro_ordem, #relogio, #parlamentares, #votacao, #materia_legislativa_texto, #observacao_materia, #resultado_votacao{
font-family: Verdana; font-family: Verdana;
} }
@ -29,66 +29,77 @@
</style> </style>
</head> </head>
<body> <body>
<audio type="hidden" id="audio" src="{% static 'audio/ring.mp3' %}"> </audio>
<h1 id="title"></h1> <h1 id="title"></h1>
<input id="json_url" type="hidden" value="{% url 'sapl.painel:dados_painel' sessao_id %}"> <input id="json_url" type="hidden" value="{% url 'sapl.painel:dados_painel' sessao_id %}">
<h3><font color="#4FA64D"><p align="center"><span id="sessao_plenaria"></span></p></font></h3> <h1><b><font color="#4FA64D"><p align="center"><span id="sessao_plenaria"></span></p></font></b></h1>
<table style="width:100%"> <table style="width:100%">
<tr> <tr>
<th style="text-align:center"><font color="white" size="2"><span id="sessao_plenaria_data"></span></font></th> <th style="text-align:center"><font color="white" size="4"><span id="sessao_plenaria_data"></span></font></th>
<th style="text-align:center"><font color="white" size="2"><span id="sessao_plenaria_hora_inicio"></span></font></th> <th style="text-align:center"><font color="white" size="4"><span id="sessao_plenaria_hora_inicio"></span></font></th>
</tr> </tr>
</table> </table>
<h2><font color="red"><p align="center"><span id="message"></span></p></font></h2> <h2><font color="red"><p align="center"><span id="message"></span></p></font></h2>
<h3><font color="white"><p align="center">________________________________________________</p></font></h3> <h1><font color="white"><p align="center"><span id="relogio"></span></p></font></h1>
<h3><font color="white"><p align="center"><span id="relogio"></span></p></font></h3>
<h3><font color="white"><p align="center">________________________________________________</p></font></h3>
<h3><font color="#459170"><p style="font-family:Verdana" align="center">Cronômetros</p></font></h3> <div class="row container-detail clearfix">
<table style="width:100%"> <div class="row-fluid">
<div class="col-md-4">
<h2><font color="#459170"><p align="center" style="font-family:Verdana">Parlamentares</p></b></font></h2>
<table align="center">
<tr>
<th><h4><font color="white"><span id="parlamentares"></span></h4></font></th>
</tr>
</table>
</div>
<div class="col-md-4" >
<h2><font color="#459170"><p align="center" style="font-family:Verdana">Cronômetros</p></font></h2>
<table align="center">
<tr> <tr>
<th style="text-align:center; font-family:Verdana"><font color="white">Discurso: <span id="cronometro_discurso"></span></font></th> <th style="font-family:Verdana; text-align:center;"><font size="5" color="white">Discurso: <span id="cronometro_discurso"></span></font></th>
</tr> </tr>
<tr> <tr>
<th style="text-align:center; font-family:Verdana"><font color="white">Aparte: <span id="cronometro_aparte"></span></font></th> <th style="font-family:Verdana; text-align:center;"><font size="5" color="white">Aparte: <span id="cronometro_aparte"></span></font></th>
</tr> </tr>
<tr> <tr>
<th style="text-align:center; font-family:Verdana"><font color="white">Questão de Ordem: <span id="cronometro_ordem"></span></font></th> <th style="font-family:Verdana; text-align:center;"><font size="5" color="white">Questão de Ordem: <span id="cronometro_ordem"></span></font></th>
</tr> </tr>
</table> </table>
</div>
<h3><font color="white"><p align="center">________________________________________________</p></font></h3> <div class="col-md-4">
<h2><font color="#459170"><p align="center" style="font-family:Verdana">Resultado</p></font></h2>
<h3><font color="#459170"><p style="font-family:Verdana" align="center">Parlamentares e Votos</p></font></h3> <table align="center">
<table style="width:60%" align="center">
<tr> <tr>
<th style="text-align:left"><font color="white" align="left"><span id="parlamentares"></span></font></th> <th><h4><font color="white"><span id="votacao"></span></h4></font></th>
<th style="text-align:left"><font color="white"><span id="votacao"></span></font></th>
</tr> </tr>
</table> </table>
</div>
</div>
</div>
<h3><font color="white"><p align="center">________________________________________________</p></font></h3> </br>
<h2><font color="#459170"><p align="center" style="font-family:Verdana">Matéria em Votação</p></font></h2>
<h3><font color="#459170"><p align="center" style="font-family:Verdana">Matéria em Votação</p></font></h3>
<table style="width:100%; border:1px;"> <table style="width:100%; border:1px;">
<tr><th style="text-align:center"><font color="white"><span id="materia_legislativa_texto"></span></font></th></tr> <tr><th style="text-align:center"><h4><font color="white"><span id="materia_legislativa_texto"></span></font></th></tr>
<tr><th style="text-align:center"><font color="white"><span id="observacao_materia"></span></font></th></tr> <tr><th style="text-align:center"><h4><font color="white"><span id="observacao_materia"></span></font></th></tr>
<tr><th style="text-align:center"><font color="#45919D"><span id="resultado_votacao"></span></font></th></tr> <tr><th style="text-align:center"><font color="#45919D"><span id="resultado_votacao"></span></font></th></tr>
</table> </table>
</body> </body>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
//TODO: replace by a fancy jQuery clock //TODO: replace by a fancy jQuery clock
function checkTime(i) { function checkTime(i) {
if (i<10) {i = "0" + i}; // add zero in front of numbers < 10 if (i<10) {i = "0" + i}; // add zero in front of numbers < 10
return i; return i;
} }
function startTime() { function startTime() {
var today=new Date(); var today=new Date();
var h=today.getHours(); var h=today.getHours();
@ -101,15 +112,18 @@
startTime() startTime()
}, 500); }, 500);
} }
startTime(); startTime();
var audioAlertFinish = document.getElementById("audio");
$('#cronometro_discurso').runner({ $('#cronometro_discurso').runner({
autostart: false, autostart: false,
countdown: true, countdown: true,
startAt: 5 * 60 * 1000, // 5 minutes startAt: 5 * 60 * 1000, // 5 minutes
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){
audioAlertFinish.play();
}); });
$('#cronometro_aparte').runner({ $('#cronometro_aparte').runner({
@ -118,6 +132,8 @@
startAt: 3 * 60 * 1000, // 3 minutes startAt: 3 * 60 * 1000, // 3 minutes
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){
audioAlertFinish.play();
}); });
$('#cronometro_ordem').runner({ $('#cronometro_ordem').runner({
@ -126,11 +142,13 @@
startAt: 2 * 60 * 1000, // 2 minutes startAt: 2 * 60 * 1000, // 2 minutes
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){
audioAlertFinish.play();
}); });
var discurso_previous = ''; var discurso_previous;
var aparte_previous = ''; var ordem_previous;
var ordem_previous = ''; var aparte_previous;
var counter = 1; var counter = 1;
(function poll() { (function poll() {
@ -138,45 +156,50 @@
url: $("#json_url").val(), url: $("#json_url").val(),
type: "GET", type: "GET",
success: function(data) { success: function(data) {
$("#sessao_plenaria").text(data["sessao_plenaria"]) $("#sessao_plenaria").text(data["sessao_plenaria"])
$("#sessao_plenaria_data").text("Data Início: " + data["sessao_plenaria_data"]) $("#sessao_plenaria_data").text("Data Início: " + data["sessao_plenaria_data"])
$("#sessao_plenaria_hora_inicio").text("Hora Início: " + data["sessao_plenaria_hora_inicio"]) $("#sessao_plenaria_hora_inicio").text("Hora Início: " + data["sessao_plenaria_hora_inicio"])
if (data["status_painel"] == "FECHADO") {
if (data["status_painel"] === "FECHADO") {
$("#message").text("PAINEL ENCONTRA-SE FECHADO"); $("#message").text("PAINEL ENCONTRA-SE FECHADO");
return;
} }
else{
$("#message").text("");
}
var presentes = $("#parlamentares"); var presentes = $("#parlamentares");
var votacao = $("#votacao");
$("#votacao").text('');
presentes.children().remove(); presentes.children().remove();
votacao.children().remove()
if (data['materia_legislativa_texto']){
if (data["presentes_ordem_dia"] != null) { if (data["presentes_ordem_dia"] != null) {
presentes_ordem_dia = data["presentes_ordem_dia"]; presentes_ordem_dia = data["presentes_ordem_dia"];
} }
else if (data["presentes_expediente"] != null){ else if (data["presentes_expediente"] != null){
presentes_ordem_dia = data["presentes_expediente"] presentes_ordem_dia = data["presentes_expediente"]
} }
if( (data["tipo_resultado"] == "Aprovado por unanimidade") || (data["tipo_resultado"] == "Aprovado por maioria") || (data["tipo_resultado"] == "Rejeitado")){ if( (data["tipo_resultado"] == "Aprovado por unanimidade") || (data["tipo_resultado"] == "Aprovado por maioria") || (data["tipo_resultado"] == "Rejeitado")){
if(data["tipo_votacao"] == "Nominal") { if(data["tipo_votacao"] == "Nominal") {
jQuery.each(data["votos"], function(index, parlamentar) { jQuery.each(data["votos"], function(index, parlamentar) {
$('<li />', {text: parlamentar.parlamentar + ' - ' + parlamentar.partido + ' - Voto: ' + parlamentar.voto}).appendTo(presentes); $('<li />', {text: parlamentar.parlamentar + ' - ' + parlamentar.partido + ' - Voto: ' + parlamentar.voto}).appendTo(presentes);
}); });
} }
}else{ else{
jQuery.each(presentes_ordem_dia, function(index, parlamentar) { jQuery.each(presentes_ordem_dia, function(index, parlamentar) {
$('<li />', {text: parlamentar.nome + ' - ' + parlamentar.partido}).appendTo(presentes); $('<li />', {text: parlamentar.nome + ' - ' + parlamentar.partido}).appendTo(presentes);
}); });
} }
}
//console.debug(presentes_ordem_dia) else{
jQuery.each(presentes_ordem_dia, function(index, parlamentar) {
$('<li />', {text: parlamentar.nome + ' - ' + parlamentar.partido}).appendTo(presentes);
});
}
//console.debug(presentes_ordem_dia)
var votacao = $("#votacao") var votacao = $("#votacao")
if (data["num_presentes_ordem_dia"] != null) { if (data["num_presentes_ordem_dia"] != null) {
num_presentes_ordem_dia = data["num_presentes_ordem_dia"]; num_presentes_ordem_dia = data["num_presentes_ordem_dia"];
} }
@ -184,36 +207,67 @@
num_presentes_ordem_dia = data["num_presentes_expediente"] num_presentes_ordem_dia = data["num_presentes_expediente"]
} }
votacao.children().remove()
votacao.append("<li>Sim: " + data["numero_votos_sim"] + "</li>") votacao.append("<li>Sim: " + data["numero_votos_sim"] + "</li>")
votacao.append("<li>Não: " + data["numero_votos_nao"] + "</li>") votacao.append("<li>Não: " + data["numero_votos_nao"] + "</li>")
votacao.append("<li>Abstenções: " + data["numero_abstencoes"] + "</li>") votacao.append("<li>Abstenções: " + data["numero_abstencoes"] + "</li>")
votacao.append("<li>Presentes: " + num_presentes_ordem_dia + "</li>") votacao.append("<li>Presentes: " + num_presentes_ordem_dia + "</li>")
votacao.append("<li>Total votos: " + data["total_votos"] + "</li>") votacao.append("<li>Total votos: " + data["total_votos"] + "</li>")
}
else{
$("#votacao").text('Não há votação, pois não há nenhuma matéria aberta ou já votada.');
}
var discurso_current = data["cronometro_discurso"]; var discurso_current = data["cronometro_discurso"];
if (!discurso_previous){
discurso_previous = ''
}
if (discurso_current != discurso_previous) { if (discurso_current != discurso_previous) {
$('#cronometro_discurso').runner(discurso_current); $('#cronometro_discurso').runner(discurso_current);
discurso_previous = discurso_current; discurso_previous = discurso_current;
} }
var aparte_current = data["cronometro_aparte"]; var aparte_current = data["cronometro_aparte"];
if (!aparte_previous){
aparte_previous = ''
}
if (aparte_current != aparte_previous) { if (aparte_current != aparte_previous) {
$('#cronometro_aparte').runner(aparte_current); $('#cronometro_aparte').runner(aparte_current);
aparte_previous = aparte_current; aparte_previous = aparte_current;
} }
var ordem_current = data["cronometro_ordem"]; var ordem_current = data["cronometro_ordem"];
if (!ordem_previous){
ordem_previous = ''
}
if (ordem_current != ordem_previous) { if (ordem_current != ordem_previous) {
$('#cronometro_ordem').runner(ordem_current); $('#cronometro_ordem').runner(ordem_current);
ordem_previous = ordem_current; ordem_previous = ordem_current;
} }
$("#materia_legislativa_texto").text(data["materia_legislativa_texto"]) if (data['materia_legislativa_texto']){
$("#observacao_materia").text(data["observacao_materia"]) $("#materia_legislativa_texto").text(data["materia_legislativa_texto"]);
$("#resultado_votacao").text(data["tipo_resultado"]) }
else{
$("#materia_legislativa_texto").text('Não há nehuma matéria votada ou para votação');
}
if (data['observacao_materia']){
$("#observacao_materia").text(data["observacao_materia"]);
}
else{
$("#observacao_materia").text('');
}
if (data['resultado_votacao']){
$("#resultado_votacao").text(data["tipo_resultado"]);
}
else{
$("#resultado_votacao").text('');
}
}, },
error: function(err) { error: function(err) {
console.error(err); console.error(err);

35
sapl/templates/sessao/painel.html

@ -11,7 +11,6 @@
{% block detail_content %} {% block detail_content %}
<audio type="hidden" id="audio" src="{% static 'audio/ring.mp3' %}"> </audio>
<div class="row"> <div class="row">
<!--<div class="col-md-6"><a href="{% url 'sapl.painel:painel_principal' pk %}" class="btn btn-primary btn-sm active">Iniciar painel presidente</a></div> --> <!--<div class="col-md-6"><a href="{% url 'sapl.painel:painel_principal' pk %}" class="btn btn-primary btn-sm active">Iniciar painel presidente</a></div> -->
@ -95,8 +94,6 @@ $(function() {
startTime(); startTime();
var audioAlertFinish = document.getElementById("audio");
$('#discurso').prop('disabled', true); $('#discurso').prop('disabled', true);
$('#aparte').prop('disabled', true); $('#aparte').prop('disabled', true);
$('#ordem').prop('disabled', true); $('#ordem').prop('disabled', true);
@ -108,7 +105,16 @@ $(function() {
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){
audioAlertFinish.play(); $.get('/painel/cronometro', { tipo: 'discurso', action: 'stop' } );
$('#discursoReset').show();
$('#discurso').runner('stop');
$('#discursoStart').text('Iniciar');
$('#aparteStart').prop('disabled', false);
$('#aparteReset').prop('disabled', false);
$('#ordemStart').prop('disabled', false);
$('#ordemReset').prop('disabled', false);
}); });
$('#discursoStart').click(function() { $('#discursoStart').click(function() {
@ -154,7 +160,16 @@ $(function() {
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){
audioAlertFinish.play(); $.get('/painel/cronometro', { tipo: 'aparte', action: 'stop' } );
$('#aparteReset').show();
$('#aparte').runner('stop');
$('#aparteStart').text('Iniciar');
$('#discursoStart').prop('disabled', false);
$('#discursoReset').prop('disabled', false);
$('#ordemStart').prop('disabled', false);
$('#ordemReset').prop('disabled', false);
}); });
$('#aparteStart').click(function(){ $('#aparteStart').click(function(){
@ -199,7 +214,15 @@ $(function() {
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){
audioAlertFinish.play(); $.get('/painel/cronometro', { tipo: 'ordem', action: 'stop' } );
$('#ordemReset').show();
$('#ordem').runner('stop');
$('#ordemStart').text('Iniciar');
$('#discursoStart').prop('disabled', false);
$('#discursoReset').prop('disabled', false);
$('#aparteStart').prop('disabled', false);
$('#aparteReset').prop('disabled', false);
}); });
$('#ordemStart').click(function() { $('#ordemStart').click(function() {

Loading…
Cancel
Save