|
|
|
@ -1,7 +1,11 @@ |
|
|
|
{% extends "crud/detail.html" %} |
|
|
|
{% load i18n %} |
|
|
|
{% load common_tags %} |
|
|
|
{% load staticfiles %} |
|
|
|
|
|
|
|
{% load webpack_static from webpack_loader %} |
|
|
|
{% load render_bundle from webpack_loader %} |
|
|
|
|
|
|
|
{% block actions %} {% endblock %} |
|
|
|
|
|
|
|
{% block title %} |
|
|
|
@ -25,67 +29,25 @@ |
|
|
|
<h1>Operação do Painel Eletrônico</h1> |
|
|
|
<h2><span id="relogio"></span></h2> |
|
|
|
<br /> |
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-12 mb-2"><h3>Cronômetro do Discurso</h3></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-2"><input size="2" id="discurso" name="discurso" value="" readyonly="true" class="form-control"></div> |
|
|
|
</div> |
|
|
|
<br /> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-6"><button type="button" id="discursoStart" class="btn btn-success">Iniciar</button></div> |
|
|
|
<div class="col-md-6"><button type="button" id="discursoReset" class="btn btn-success">Reiniciar</button></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<br /><br > |
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-12 mb-2"><h3>Cronômetro do Aparte</h3></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-2"><input size="2" id="aparte" name="aparte" value="" readyonly="true" class="form-control"></div> |
|
|
|
</div> |
|
|
|
<br /> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-6"><button type="button" id="aparteStart" class="btn btn-success">Iniciar</button></div> |
|
|
|
<div class="col-md-6"><button type="button" id="aparteReset" class="btn btn-success" class="btn btn-success">Reiniciar</button></div> |
|
|
|
</div> |
|
|
|
{% for cronometro in cronometros %} |
|
|
|
|
|
|
|
<br /><br > |
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-12 mb-2"><h3>Cronômetro da Questão de Ordem </h3></div> |
|
|
|
<div class="col-md-12 mb-2"><h3>{{cronometro}}</h3></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-2"><input size="2" id="ordem" name="ordem" value="" readyonly="true" class="form-control"></div> |
|
|
|
<div class="col-md-2"><input size="2" id="cronometro_{{cronometro.id}}" name="{{cronometro.tipo}}" value="" readyonly="true" class="form-control"></div> |
|
|
|
</div> |
|
|
|
<br /> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-6"><button type="button" id="ordemStart" class="btn btn-success">Iniciar</button></div> |
|
|
|
<div class="col-md-6"><button type="button" id="ordemReset" class="btn btn-success">Reiniciar</button></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<br/> |
|
|
|
<br/> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-12 mb-2"><h3>Cronômetro de Considerações Finais</h3></div> |
|
|
|
<div class="col-md-6"><button type="button" id="cronometro_{{cronometro.id}}_Start" class="btn btn-success">Iniciar</button></div> |
|
|
|
<div class="col-md-6"><button type="button" id="cronometro_{{cronometro.id}}_Reset" class="btn btn-success">Reiniciar</button></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-4"><input size="2" id="consideracoes" name="consideracoes" value="" readyonly="true" class="form-control"></div> |
|
|
|
</div> |
|
|
|
<br /> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-6"><button type="button" id="consideracoesStart" class="btn btn-success">Iniciar</button></div> |
|
|
|
<div class="col-md-6"><button type="button" id="consideracoesReset" class="btn btn-success">Reiniciar</button></div> |
|
|
|
</div> |
|
|
|
<br /><br > |
|
|
|
<br><br> |
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-6"><button type="button" id="sinalSonoro" class="btn btn-success" onclick="document.getElementById('audio').play();">Sinal Sonoro</button></div> |
|
|
|
@ -95,250 +57,11 @@ |
|
|
|
|
|
|
|
{% block extra_js %} |
|
|
|
<script language="JavaScript"> |
|
|
|
$(function() { |
|
|
|
|
|
|
|
function checkTime(i) { |
|
|
|
if (i<10) {i = "0" + i}; |
|
|
|
return i; |
|
|
|
} |
|
|
|
|
|
|
|
function startTime() { |
|
|
|
var today=new Date(); |
|
|
|
var h=today.getHours(); |
|
|
|
var m=today.getMinutes(); |
|
|
|
var s=today.getSeconds(); |
|
|
|
m = checkTime(m); |
|
|
|
s = checkTime(s); |
|
|
|
$("#relogio").text(h+":"+m+":"+s) |
|
|
|
var t = setTimeout(function(){ |
|
|
|
startTime() |
|
|
|
},500); |
|
|
|
} |
|
|
|
|
|
|
|
startTime(); |
|
|
|
var audioAlertFinish = document.getElementById("audio"); |
|
|
|
$('#discurso').prop('disabled', false); |
|
|
|
$('#aparte').prop('disabled', false); |
|
|
|
$('#ordem').prop('disabled', false); |
|
|
|
$('#consideracoes').prop('disabled', false); |
|
|
|
|
|
|
|
$('#discurso').runner({ |
|
|
|
autostart: false, |
|
|
|
countdown: true, |
|
|
|
startAt: {{cronometro_discurso}} * 1000, |
|
|
|
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(); |
|
|
|
} |
|
|
|
}).on('runnerFinish', function(eventObject, info){ |
|
|
|
$.get('/painel/cronometro', { tipo: 'discurso', action: 'stop' } ); |
|
|
|
audioAlertFinish.play(); |
|
|
|
$('#discursoReset').show(); |
|
|
|
$('#discurso').runner('stop'); |
|
|
|
$('#discursoStart').text('Iniciar'); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
$('#discursoStart').click(function() { |
|
|
|
|
|
|
|
if ($('#discursoStart').text() == 'Iniciar'){ |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'discurso', action: 'start' } ); |
|
|
|
|
|
|
|
$('#discursoReset').hide(); |
|
|
|
$('#discurso').runner('start'); |
|
|
|
$('#discursoStart').text('Parar'); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'discurso', action: 'stop' } ); |
|
|
|
|
|
|
|
$('#discursoReset').show(); |
|
|
|
$('#discurso').runner('stop'); |
|
|
|
$('#discursoStart').text('Iniciar'); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
$('#discursoReset').click(function() { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'discurso', action: 'reset' } ); |
|
|
|
|
|
|
|
$('#discurso').runner('stop'); |
|
|
|
$('#discurso').runner('reset'); |
|
|
|
}); |
|
|
|
|
|
|
|
$('#aparte').runner({ |
|
|
|
autostart: false, |
|
|
|
countdown: true, |
|
|
|
startAt: {{cronometro_aparte}} * 1000, |
|
|
|
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(); |
|
|
|
} |
|
|
|
}).on('runnerFinish', function(eventObject, info){ |
|
|
|
$.get('/painel/cronometro', { tipo: 'aparte', action: 'stop' } ); |
|
|
|
audioAlertFinish.play(); |
|
|
|
$('#aparteReset').show(); |
|
|
|
$('#aparte').runner('stop'); |
|
|
|
$('#aparteStart').text('Iniciar'); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
$('#aparteStart').click(function(){ |
|
|
|
if ($('#aparteStart').text() == 'Iniciar') { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'aparte', action: 'start' } ); |
|
|
|
|
|
|
|
$('#aparteReset').hide(); |
|
|
|
$('#aparte').runner('start'); |
|
|
|
$('#aparteStart').text('Parar'); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'aparte', action: 'stop' } ); |
|
|
|
|
|
|
|
$('#aparteReset').show(); |
|
|
|
$('#aparte').runner('stop'); |
|
|
|
$('#aparteStart').text('Iniciar'); |
|
|
|
|
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
$('#aparteReset').click(function() { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'aparte', action: 'reset' } ); |
|
|
|
|
|
|
|
$('#aparte').runner('stop'); |
|
|
|
$('#aparte').runner('reset'); |
|
|
|
}); |
|
|
|
|
|
|
|
$('#ordem').runner({ |
|
|
|
autostart: false, |
|
|
|
countdown: true, |
|
|
|
startAt: {{cronometro_ordem}} * 1000, |
|
|
|
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(); |
|
|
|
} |
|
|
|
}).on('runnerFinish', function(eventObject, info){ |
|
|
|
$.get('/painel/cronometro', { tipo: 'ordem', action: 'stop' } ); |
|
|
|
audioAlertFinish.play(); |
|
|
|
$('#ordemReset').show(); |
|
|
|
$('#ordem').runner('stop'); |
|
|
|
$('#ordemStart').text('Iniciar'); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
$('#ordemStart').click(function() { |
|
|
|
if ($('#ordemStart').text() == 'Iniciar') { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'ordem', action: 'start' } ); |
|
|
|
|
|
|
|
$('#ordemReset').hide(); |
|
|
|
$('#ordem').runner('start'); |
|
|
|
$('#ordemStart').text('Parar'); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'ordem', action: 'stop' } ); |
|
|
|
|
|
|
|
$('#ordemReset').show(); |
|
|
|
$('#ordem').runner('stop'); |
|
|
|
$('#ordemStart').text('Iniciar'); |
|
|
|
|
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
$('#ordemReset').click(function() { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'ordem', action: 'reset' } ); |
|
|
|
|
|
|
|
$('#ordem').runner('stop'); |
|
|
|
$('#ordem').runner('reset'); |
|
|
|
}); |
|
|
|
|
|
|
|
$('#consideracoes').runner({ |
|
|
|
autostart: false, |
|
|
|
countdown: true, |
|
|
|
startAt: {{cronometro_consideracoes}} * 1000, |
|
|
|
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(); |
|
|
|
} |
|
|
|
}).on('runnerFinish', function(eventObject, info){ |
|
|
|
$.get('/painel/cronometro', { tipo: 'consideracoes', action: 'stop' } ); |
|
|
|
audioAlertFinish.play(); |
|
|
|
$('#consideracoesReset').show(); |
|
|
|
$('#consideracoes').runner('stop'); |
|
|
|
$('#consideracoesStart').text('Iniciar'); |
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
$('#consideracoesStart').click(function(){ |
|
|
|
if ($('#consideracoesStart').text() == 'Iniciar') { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'consideracoes', action: 'start' } ); |
|
|
|
|
|
|
|
$('#consideracoesReset').hide(); |
|
|
|
$('#consideracoes').runner('start'); |
|
|
|
$('#consideracoesStart').text('Parar'); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'consideracoes', action: 'stop' } ); |
|
|
|
|
|
|
|
$('#consideracoesReset').show(); |
|
|
|
$('#consideracoes').runner('stop'); |
|
|
|
$('#consideracoesStart').text('Iniciar'); |
|
|
|
|
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
$('#consideracoesReset').click(function() { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: 'consideracoes', action: 'reset' } ); |
|
|
|
|
|
|
|
$('#consideracoes').runner('stop'); |
|
|
|
$('#consideracoes').runner('reset'); |
|
|
|
}); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
function switch_painel(aberto) { |
|
|
|
var pk_sessao = {{root_pk}}; |
|
|
|
var botao_abrir = $('#id_abrir_painel'); |
|
|
|
var botao_fechar = $('#id_fechar_painel'); |
|
|
|
|
|
|
|
let pk_sessao = {{root_pk}}; |
|
|
|
let botao_abrir = $('#id_abrir_painel'); |
|
|
|
let botao_fechar = $('#id_fechar_painel'); |
|
|
|
|
|
|
|
$.ajax({ |
|
|
|
data: {pk_sessao: pk_sessao, aberto: aberto}, |
|
|
|
@ -356,10 +79,30 @@ function switch_painel(aberto) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function checkTime(i) { |
|
|
|
if (i<10) { |
|
|
|
i = "0" + i |
|
|
|
}; |
|
|
|
return i; |
|
|
|
} |
|
|
|
|
|
|
|
function startTime() { |
|
|
|
let today=new Date(); |
|
|
|
let h=today.getHours(); |
|
|
|
let m=today.getMinutes(); |
|
|
|
let s=today.getSeconds(); |
|
|
|
m = checkTime(m); |
|
|
|
s = checkTime(s); |
|
|
|
$("#relogio").text(h+":"+m+":"+s) |
|
|
|
let t = setTimeout(function(){ |
|
|
|
startTime() |
|
|
|
},500); |
|
|
|
} |
|
|
|
|
|
|
|
$(document).ready(function(){ |
|
|
|
var pk_sessao = {{root_pk}}; |
|
|
|
var botao_abrir = $('#id_abrir_painel'); |
|
|
|
var botao_fechar = $('#id_fechar_painel'); |
|
|
|
let pk_sessao = {{root_pk}}; |
|
|
|
let botao_abrir = $('#id_abrir_painel'); |
|
|
|
let botao_fechar = $('#id_fechar_painel'); |
|
|
|
|
|
|
|
$.ajax({ |
|
|
|
data: {pk_sessao: pk_sessao}, |
|
|
|
@ -380,6 +123,58 @@ $(document).ready(function(){ |
|
|
|
}, |
|
|
|
}); |
|
|
|
|
|
|
|
startTime(); |
|
|
|
let audioAlertFinish = document.getElementById("audio"); |
|
|
|
|
|
|
|
{% for cron in cronometros %} |
|
|
|
cronometro = "cronometro_" + "{{cron.id}}"; |
|
|
|
|
|
|
|
$('#' + cronometro).prop('disabled', false); |
|
|
|
|
|
|
|
cronometroStart = '#' + cronometro + '_Start'; |
|
|
|
cronometroReset = '#' + cronometro + '_Reset'; |
|
|
|
|
|
|
|
duracao = {{cron.duracao_cronometro|duration_to_seconds}}; |
|
|
|
console.log(cronometro, duracao, cronometroStart, cronometroReset); |
|
|
|
|
|
|
|
$('#' + cronometro).runner({ |
|
|
|
autostart: false, |
|
|
|
countdown: true, |
|
|
|
startAt: duracao * 1000, |
|
|
|
stopAt: 0, |
|
|
|
milliseconds: false |
|
|
|
}).on('runnerFinish', function(eventObject, info){ |
|
|
|
$.get('/painel/cronometro', { tipo: cronometro, action: 'stop' } ); |
|
|
|
audioAlertFinish.play(); |
|
|
|
$(cronometroReset).show(); |
|
|
|
$('#' + cronometro).runner('stop'); |
|
|
|
$(cronometroStart).text('Iniciar'); |
|
|
|
}) |
|
|
|
|
|
|
|
$(cronometroStart).click(function() { |
|
|
|
if ($(cronometroStart).text() == 'Iniciar'){ |
|
|
|
$.get('/painel/cronometro', { tipo: cronometro, action: 'start' } ); |
|
|
|
|
|
|
|
$(cronometroReset).hide(); |
|
|
|
$('#' + cronometro).runner('start'); |
|
|
|
$(cronometroStart).text('Parar'); |
|
|
|
} else{ |
|
|
|
$.get('/painel/cronometro', { tipo: cronometro, action: 'stop' } ); |
|
|
|
|
|
|
|
$(cronometroReset).show(); |
|
|
|
$('#' + cronometro).runner('stop'); |
|
|
|
$(cronometroStart).text('Iniciar'); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
$(cronometroReset).click(function() { |
|
|
|
|
|
|
|
$.get('/painel/cronometro', { tipo: cronometro, action: 'reset' } ); |
|
|
|
|
|
|
|
$('#' + cronometro).runner('stop'); |
|
|
|
$('#' + cronometro).runner('reset'); |
|
|
|
}); |
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|