diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 7a93fba9a..50da0563b 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -363,7 +363,28 @@ def switch_painel(request): def verifica_painel(request): sessao = SessaoPlenaria.objects.get(id=request.GET['pk_sessao']) status = sessao.painel_aberto - resposta = JsonResponse(dict(status=status)) + + CRONOMETRO_STATUS = { + 'I': 'start', + 'R': 'reset', + 'S': 'stop', + 'C': 'increment' + } + + dict_status_cronometros = dict(Cronometro.objects.filter(ativo=True).order_by('ordenacao').values_list('id', 'status')) + + for key, value in dict_status_cronometros.items(): + dict_status_cronometros[key] = CRONOMETRO_STATUS[dict_status_cronometros[key]] + + dict_duracao_cronometros = dict(Cronometro.objects.filter(ativo=True).order_by('ordenacao').values_list('id', 'duracao_cronometro')) + + for key, value in dict_duracao_cronometros.items(): + dict_duracao_cronometros[key] = value.seconds + + resposta = JsonResponse(dict(status=status, + cronometros=dict_status_cronometros, + duracao_cronometros=dict_duracao_cronometros) + ) return resposta diff --git a/sapl/templates/sessao/painel.html b/sapl/templates/sessao/painel.html index 1a4fb2f93..67bd557f5 100644 --- a/sapl/templates/sessao/painel.html +++ b/sapl/templates/sessao/painel.html @@ -131,25 +131,6 @@ $(document).ready(function(){ let botao_abrir = $('#id_abrir_painel'); let botao_fechar = $('#id_fechar_painel'); - $.ajax({ - data: {pk_sessao: pk_sessao}, - type: 'GET', - dataType: 'json', - url: "{% url 'sapl.painel:verifica_painel' %}", - error: function () { - alert("Erro ao verificar o Painel"); - }, - success: function (data) { - if (data['status']) { - botao_abrir.hide(); - botao_fechar.show(); - } else { - botao_abrir.show(); - botao_fechar.hide(); - } - }, - }); - startTime(); let audioAlertFinish = document.getElementById("audio"); @@ -159,7 +140,10 @@ $(document).ready(function(){ duracao_disparo = parseInt(tmp[0])*3600 + parseInt(tmp[1])*60 + parseInt(tmp[2]); let num_vezes_toca_audio = Math.round(duracao_disparo/audioAlertFinish.duration); + var cronometros_previous = []; + {% for cron in cronometros %} + cronometros_previous.push(0); $('#cronometro_' + "{{cron.id}}").prop('disabled', false); {% if cron.status == 'I' %} @@ -257,6 +241,89 @@ $(document).ready(function(){ }); {% endfor %} + (function poll() { + $.ajax({ + data: {pk_sessao: pk_sessao}, + type: 'GET', + dataType: 'json', + url: "{% url 'sapl.painel:verifica_painel' %}", + error: function () { + alert("Erro ao verificar o Painel"); + }, + success: function (data) { + if (data['status']) { + botao_abrir.hide(); + botao_fechar.show(); + } else { + botao_abrir.show(); + botao_fechar.hide(); + } + + // ajustes do painel para caso haja dois controladores + + // obtém todos os ids em uma lista e + // converte os dados do status dos cronômetros de dicionário para uma lista + var ids = []; + var status_cronometros = []; + for (var key in data['cronometros']) { + if (data['cronometros'].hasOwnProperty(key)) { + ids.push(key); + status_cronometros.push(data['cronometros'][key]); + } + } + + // converte os dados de dicionário para uma lista + var duracao_cronometros = []; + for (let id of ids) { + duracao_cronometros.push(data['duracao_cronometros'][id]); + } + + for(let i=0; i