diff --git a/sapl/painel/views.py b/sapl/painel/views.py
index bbd71e4cb..6f5da1703 100644
--- a/sapl/painel/views.py
+++ b/sapl/painel/views.py
@@ -600,12 +600,18 @@ def get_dados_painel(request, pk):
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
response = {
'sessao_plenaria': str(sessao),
'sessao_plenaria_data': sessao.data_inicio.strftime('%d/%m/%Y'),
'sessao_plenaria_hora_inicio': sessao.hora_inicio,
'cronometros': dict_status_cronometros,
+ 'duracao_cronometros': dict_duracao_cronometros,
'sessao_solene': sessao.tipo.nome == "Solene",
'sessao_finalizada': sessao.finalizada,
'tema_solene': sessao.tema_solene,
diff --git a/sapl/templates/painel/index.html b/sapl/templates/painel/index.html
index 8cb7d7555..0eea79734 100644
--- a/sapl/templates/painel/index.html
+++ b/sapl/templates/painel/index.html
@@ -170,6 +170,16 @@
audio.play();
}
+ function convertValueToDuration(value){
+ let h = Math.floor((value/1000) / 3600);
+ h = checkTime(h);
+ let m = Math.floor((value/1000) % 3600 / 60);
+ m = checkTime(m);
+ let s = Math.floor((value/1000) % 3600 % 60);
+ s = checkTime(s);
+ return h.toString() + ":" + m.toString() + ":" + s.toString();
+ }
+
$(document).ready(function() {
//TODO: replace by a fancy jQuery clock
startTime();
@@ -186,23 +196,26 @@
{% for cron in cronometros %}
cronometros_previous.push(0);
$('#cronometro_' + "{{cron.id}}").runner({
- autostart: false,
+ autostart: {% if cron.status == "I"%} true {% else %} false {% endif %},
countdown: true,
- startAt: parseInt("{{cron.duracao_cronometro|duration_to_seconds}}") * 1000,
+ startAt:
+ {% if cron.status == "R"%}
+ parseInt("{{cron.duracao_cronometro|duration_to_seconds}}") * 1000
+ {% elif cron.status == "S"%}
+ {% if cron.last_stop_duration %}
+ parseInt("{{cron.last_stop_duration|duration_to_seconds}}") * 1000
+ {% else %}
+ parseInt("{{cron.duracao_cronometro|duration_to_seconds}}") * 1000
+ {% endif %}
+ {% elif cron.status == "I" %}
+ parseInt("{{cron.duracao_cronometro|duration_difference:cron.ultima_alteracao_status}}") * 1000
+ {% endif %},
stopAt: 0,
milliseconds: false,
- format: function(value) {
- let h = Math.floor((value/1000) / 3600);
- h = checkTime(h);
- let m = Math.floor((value/1000) % 3600 / 60);
- m = checkTime(m);
- let s = Math.floor((value/1000) % 3600 % 60);
- s = checkTime(s);
- return h.toString() + ":" + m.toString() + ":" + s.toString();
- }
+ format: convertValueToDuration
}).on('runnerFinish', function(eventObject, info){
playAudioNumVezes(audioAlertFinish, num_vezes_toca_audio);
- })
+ });
{% endfor %}
var tempo_disparo_antecedencia = "{{ painel_config.tempo_disparo_antecedencia }}"
@@ -329,6 +342,8 @@
$("#votacao").append('
Não há votação, pois não há nenhuma matéria aberta ou já votada.');
};
+ // 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']) {
@@ -338,26 +353,44 @@
}
}
- //var ult_alteracao_cronometros = [];
- //for (let id of ids) {
- // ult_alteracao_cronometros.push(data['ult_alteracao_cronometros'][id]);
- //}
-
- //console.log(data['ult_alteracao_cronometros']);
- //console.log(ult_alteracao_cronometros);
+ // 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 convertValueToDuration(duracao_cronometro)){
- return 0;
- }
- return difference/1000;
-}
-
$(document).ready(function(){
let pk_sessao = parseInt("{{root_pk}}");
@@ -174,14 +162,10 @@ $(document).ready(function(){
{% for cron in cronometros %}
$('#cronometro_' + "{{cron.id}}").prop('disabled', false);
- console.log("{{cron.status}}", "{{cron.last_stop_duration}}")
-
{% if cron.status == 'I' %}
$('#cronometro_' + "{{cron.id}}" + '_Reset').hide();
$('#cronometro_' + "{{cron.id}}").runner('start');
$('#cronometro_' + "{{cron.id}}" + '_Start').text('Parar');
- //var resposta = getDifferenceToNow({{ cron.ultima_alteracao_status|date:"U" }} * 1000, "{{cron.duracao_cronometro|duration_to_seconds}}");
- //console.log(resposta);
{% else %}
$('#cronometro_' + "{{cron.id}}" + '_Reset').show();
$('#cronometro_' + "{{cron.id}}").runner('stop');
@@ -212,7 +196,7 @@ $(document).ready(function(){
$('#cronometro_' + "{{cron.id}}" + '_Reset').show();
$('#cronometro_' + "{{cron.id}}").runner('stop');
$('#cronometro_' + "{{cron.id}}" + '_Start').text('Iniciar');
- })
+ });
$('#cronometro_' + "{{cron.id}}" + '_Start').click(function() {
// Como o botão de start e stop está sendo reaproveitado (é o mesmo botão, que fica mudando de texto),
@@ -255,10 +239,21 @@ $(document).ready(function(){
// Ação de reset é igual para todos os cronômetros
$('#cronometro_' + "{{cron.id}}" + '_Reset').click(function() {
$.get('/painel/cronometro', { tipo: 'cronometro_' + "{{cron.id}}", action: 'reset', last_time: '0' } );
- //$('#cronometro_' + "{{cron.id}}").runner('stop');
- //$('#cronometro_' + "{{cron.id}}").runner('reset');
- // faz o reset manualmente para que o cronometro retorne para o valor correto
- $('#cronometro_' + "{{cron.id}}").val(convertValueToDuration(parseInt("{{cron.duracao_cronometro|duration_to_seconds}}") * 1000));
+ // é necessário recriar o cronômetro com o valor da duração original devido a limitações da API
+ $('#cronometro_' + "{{cron.id}}").runner({
+ autostart: false,
+ countdown: true,
+ startAt: parseInt("{{cron.duracao_cronometro|duration_to_seconds}}") * 1000,
+ stopAt: 0,
+ milliseconds: false,
+ format: convertValueToDuration
+ }).on('runnerFinish', function(eventObject, info){
+ $.get('/painel/cronometro', { tipo: 'cronometro_' + "{{cron.id}}", action: 'stop', last_time: $('#cronometro_' + "{{c.id}}").val() } );
+ playAudioNumVezes(audioAlertFinish, num_vezes_toca_audio);
+ $('#cronometro_' + "{{cron.id}}" + '_Reset').show();
+ $('#cronometro_' + "{{cron.id}}").runner('stop');
+ $('#cronometro_' + "{{cron.id}}" + '_Start').text('Iniciar');
+ });
});
{% endfor %}