diff --git a/frontend/src/__apps/painel/main.js b/frontend/src/__apps/painel/main.js
index 6f4bbb40f..1a6a1e10a 100644
--- a/frontend/src/__apps/painel/main.js
+++ b/frontend/src/__apps/painel/main.js
@@ -6,11 +6,17 @@ axios.defaults.xsrfCookieName = 'csrftoken'
axios.defaults.xsrfHeaderName = 'X-CSRFToken'
// Variaveis dos cronometros
-var crono = 0
-var time = null
-var timeEnd = null
+var time_d = null
+var time_o = null
+var time_a = null
+var time_c = null
+var timeEnd_o = null
+var timeEnd_d = null
+var timeEnd_a = null
+var timeEnd_c = null
var audioAlertFinish = document.getElementById('audio')
var cronometroStart = []
+var started = []
const socket = new WebSocket(`ws://${window.location.host}/ws/painel/`)
const v = new Vue({ // eslint-disable-line
@@ -47,8 +53,11 @@ const v = new Vue({ // eslint-disable-line
tipo_resultado: '',
tipo_votacao: '',
teste: null,
- running: 0,
- status_cronometro_discurso: ''
+ running: [],
+ status_cronometro_discurso: '',
+ status_cronometro_aparte: '',
+ status_cronometro_ordem: '',
+ status_cronometro_consideracoes: ''
}
},
methods: {
@@ -114,8 +123,11 @@ const v = new Vue({ // eslint-disable-line
this.sessao_plenaria_hora_inicio = 'Hora InĂcio: ' + objeto.sessao_plenaria_hora_inicio
this.sessao_solene = objeto.sessao_solene
this.sessao_solene_tema = objeto.sessao_solene_tema
- this.status_cronometro_discurso = objeto.status_cronometro
-
+ this.status_cronometro_discurso = objeto.status_cronometro_discurso
+ this.status_cronometro_ordem = objeto.status_cronometro_ordem
+ this.status_cronometro_aparte = objeto.status_cronometro_aparte
+ this.status_cronometro_consideracoes = objeto.status_cronometro_consideracoes
+ console.log(objeto)
this.presentes = objeto.presentes
this.presentes.forEach(parlamentar => {
this.atribuiColor(parlamentar)
@@ -144,16 +156,68 @@ const v = new Vue({ // eslint-disable-line
cronometroStart[2] = objeto.cronometro_ordem
cronometroStart[3] = objeto.cronometro_consideracoes
- this.setTimer()
+ this.running[0] = 0
+ this.running[1] = 0
+ this.running[2] = 0
+ this.running[3] = 0
+
+ // Pausar os cronometros
+ if (this.status_cronometro_discurso === 'S') {
+ this.stop(1)
+ }
+
+ if (this.status_cronometro_aparte === 'S') {
+ this.stop(2)
+ }
+
+ if (this.status_cronometro_ordem === 'S') {
+ this.stop(3)
+ }
+ if (this.status_cronometro_consideracoes === 'S') {
+ this.stop(4)
+ }
+
+ // Iniciar os cronometros
if (this.status_cronometro_discurso === 'I') {
this.start(1)
- } else if (this.status_cronometro_discurso === 'S') {
+ }
+
+ if (this.status_cronometro_aparte === 'I') {
+ this.start(2)
+ }
+
+ if (this.status_cronometro_ordem === 'I') {
+ this.start(3)
+ }
+
+ if (this.status_cronometro_consideracoes === 'I') {
+ this.start(4)
+ }
+
+ // Setar os timers no caso de nulo
+ if (time_d === null || this.status_cronometro_discurso === 'R') {
+ this.setTimer(1)
this.stop(1)
}
+ if (time_a === null || this.status_cronometro_aparte === 'R') {
+ this.setTimer(2)
+ this.stop(2)
+ }
+ if (time_o === null || this.status_cronometro_ordem === 'R') {
+ this.setTimer(3)
+ this.stop(3)
+ }
+ if (time_c === null || this.status_cronometro_consideracoes === 'R') {
+ this.setTimer(4)
+ this.stop(4)
+ }
},
- setTimer () {
- if (time === null) {
+ setTimer (temp_crono) {
+ var temp
+ var res
+ var now
+ if (temp_crono === 5) {
// Pegar data atual
this.cronometro_discurso = new Date()
this.cronometro_aparte = this.cronometro_discurso
@@ -161,9 +225,9 @@ const v = new Vue({ // eslint-disable-line
this.cronometro_consideracoes = this.cronometro_discurso
// Setar cada Cronometro
- var temp = new Date()
+ temp = new Date()
temp.setSeconds(this.cronometro_discurso.getSeconds() + cronometroStart[0])
- var res = new Date(temp - this.cronometro_discurso)
+ res = new Date(temp - this.cronometro_discurso)
res.setHours(temp.getHours() - this.cronometro_discurso.getHours())
this.cronometro_discurso = this.formatTime(res)
@@ -184,6 +248,37 @@ const v = new Vue({ // eslint-disable-line
res = new Date(temp - this.cronometro_consideracoes)
res.setHours(temp.getHours() - this.cronometro_consideracoes.getHours())
this.cronometro_consideracoes = this.formatTime(res)
+ } else {
+ now = new Date()
+ switch (temp_crono) {
+ case 1:
+ temp = new Date()
+ temp.setSeconds(now.getSeconds() + cronometroStart[0])
+ res = new Date(temp - now)
+ res.setHours(temp.getHours() - now.getHours())
+ this.cronometro_discurso = this.formatTime(res)
+ break
+ case 2:
+ temp = new Date()
+ temp.setSeconds(now.getSeconds() + cronometroStart[1])
+ res = new Date(temp - now)
+ res.setHours(temp.getHours() - now.getHours())
+ this.cronometro_aparte = this.formatTime(res)
+ break
+ case 3:
+ temp = new Date()
+ temp.setSeconds(now.getSeconds() + cronometroStart[2])
+ res = new Date(temp - now)
+ res.setHours(temp.getHours() - now.getHours())
+ this.cronometro_ordem = this.formatTime(res)
+ break
+ case 4:
+ temp = new Date()
+ temp.setSeconds(now.getSeconds() + cronometroStart[3])
+ res = new Date(temp - now)
+ res.setHours(temp.getHours() - now.getHours())
+ this.cronometro_consideracoes = this.formatTime(res)
+ }
}
},
formatTime (time) {
@@ -202,64 +297,174 @@ const v = new Vue({ // eslint-disable-line
stop: function stop (crono) {
if (crono === 5) {
audioAlertFinish.play()
+ } else {
+ this.running[crono - 1] = 0
+ clearInterval(started[crono - 1])
}
-
- this.running = 0
- clearInterval(this.started)
- console.log(time)
},
- reset: function reset () {
- this.running = 0
- time = null
- clearInterval(this.started)
- clearInterval(this.stopped)
+ reset: function reset (crono) {
+ console.log('AQUI TAMBEM?')
+ this.running[crono - 1] = 0
+ clearInterval(started[crono - 1])
+
+ switch (crono) {
+ case 1:
+ time_d = null
+ break
+ case 2:
+ time_a = null
+ break
+ case 3:
+ time_o = null
+ break
+ case 4:
+ time_c = null
+ break
+ }
this.setTimer()
},
clockRunning (crono) {
- var now = new Date()
- time = new Date(timeEnd - now)
-
- // Definir propriamento o tempo
- time.setHours(timeEnd.getHours() - now.getHours())
-
- if (timeEnd > now) {
- if (crono === 1) {
- this.cronometro_discurso = this.formatTime(time)
- } else if (crono === 2) {
- this.cronometro_aparte = this.formatTime(time)
- } else if (crono === 3) {
- this.cronometro_ordem = this.formatTime(time)
- } else {
- this.cronometro_consideracoes = this.formatTime(time)
- }
- } else {
- audioAlertFinish.play()
- this.alert = setTimeout(() => {
- this.reset()
- }, 5000)
+ switch (crono) {
+ case 1:
+ var now_d = new Date()
+ time_d = new Date(timeEnd_d - now_d)
+
+ // Definir propriamento o tempo
+ time_d.setHours(timeEnd_d.getHours() - now_d.getHours())
+
+ if (timeEnd_d > now_d) {
+ this.cronometro_discurso = this.formatTime(time_d)
+ } else {
+ audioAlertFinish.play()
+ this.alert = setTimeout(() => {
+ this.reset()
+ }, 5000)
+ }
+ break
+ case 2:
+ var now_a = new Date()
+ time_a = new Date(timeEnd_a - now_a)
+
+ // Definir propriamento o tempo
+ time_a.setHours(timeEnd_a.getHours() - now_a.getHours())
+
+ if (timeEnd_a > now_a) {
+ this.cronometro_aparte = this.formatTime(time_a)
+ } else {
+ audioAlertFinish.play()
+ this.alert = setTimeout(() => {
+ this.reset()
+ }, 5000)
+ }
+ break
+ case 3:
+ var now_o = new Date()
+ time_o = new Date(timeEnd_o - now_o)
+
+ // Definir propriamento o tempo
+ time_o.setHours(timeEnd_o.getHours() - now_o.getHours())
+
+ if (timeEnd_o > now_o) {
+ this.cronometro_ordem = this.formatTime(time_o)
+ } else {
+ audioAlertFinish.play()
+ this.alert = setTimeout(() => {
+ this.reset()
+ }, 5000)
+ }
+ break
+ case 4:
+ var now_c = new Date()
+ time_c = new Date(timeEnd_c - now_c)
+
+ // Definir propriamento o tempo
+ time_c.setHours(timeEnd_c.getHours() - now_c.getHours())
+
+ if (timeEnd_c > now_c) {
+ this.cronometro_consideracoes = this.formatTime(time_c)
+ } else {
+ audioAlertFinish.play()
+ this.alert = setTimeout(() => {
+ this.reset()
+ }, 5000)
+ }
+ break
}
},
start: function startStopWatch (temp_crono) {
- if (this.running === temp_crono) return
-
- crono = temp_crono
- if (time === null) {
- time = cronometroStart[crono - 1]
- timeEnd = new Date()
- timeEnd.setSeconds(timeEnd.getSeconds() + time)
- console.log(timeEnd)
- } else {
- timeEnd = new Date()
- timeEnd.setMinutes(timeEnd.getMinutes() + time.getMinutes())
- timeEnd.setSeconds(timeEnd.getSeconds() + time.getSeconds())
- timeEnd.setMilliseconds(timeEnd.getMilliseconds() + time.getMilliseconds())
- }
- this.running = crono
+ if (this.running[temp_crono - 1] === 1) return
+
+ switch (temp_crono) {
+ case 1:
+ if (time_d === null) {
+ time_d = cronometroStart[0]
+ timeEnd_d = new Date()
+ timeEnd_d.setSeconds(timeEnd_d.getSeconds() + time_d)
+ } else {
+ timeEnd_d = new Date()
+ timeEnd_d.setMinutes(timeEnd_d.getMinutes() + time_d.getMinutes())
+ timeEnd_d.setSeconds(timeEnd_d.getSeconds() + time_d.getSeconds())
+ timeEnd_d.setMilliseconds(timeEnd_d.getMilliseconds() + time_d.getMilliseconds())
+ }
+ this.running[0] = 1
+
+ started[0] = setInterval(() => {
+ this.clockRunning(temp_crono)
+ }, 50)
+ break
+ case 2:
+ if (time_a === null) {
+ time_a = cronometroStart[1]
+ timeEnd_a = new Date()
+ timeEnd_a.setSeconds(timeEnd_a.getSeconds() + time_a)
+ } else {
+ timeEnd_a = new Date()
+ timeEnd_a.setMinutes(timeEnd_a.getMinutes() + time_a.getMinutes())
+ timeEnd_a.setSeconds(timeEnd_a.getSeconds() + time_a.getSeconds())
+ timeEnd_a.setMilliseconds(timeEnd_a.getMilliseconds() + time_a.getMilliseconds())
+ }
+ this.running[1] = 1
- this.started = setInterval(() => {
- this.clockRunning(crono)
- }, 50)
+ started[1] = setInterval(() => {
+ this.clockRunning(temp_crono)
+ }, 50)
+ break
+ case 3:
+ if (time_o === null) {
+ time_o = cronometroStart[2]
+ timeEnd_o = new Date()
+ timeEnd_o.setSeconds(timeEnd_o.getSeconds() + time_o)
+ } else {
+ timeEnd_o = new Date()
+ timeEnd_o.setMinutes(timeEnd_o.getMinutes() + time_o.getMinutes())
+ timeEnd_o.setSeconds(timeEnd_o.getSeconds() + time_o.getSeconds())
+ timeEnd_o.setMilliseconds(timeEnd_o.getMilliseconds() + time_o.getMilliseconds())
+ }
+ this.running[2] = 1
+
+ started[2] = setInterval(() => {
+ this.clockRunning(temp_crono)
+ }, 50)
+ break
+ case 4:
+ if (time_c === null) {
+ time_c = cronometroStart[3]
+ timeEnd_c = new Date()
+ timeEnd_c.setSeconds(timeEnd_c.getSeconds() + time_c)
+ } else {
+ timeEnd_c = new Date()
+ timeEnd_c.setMinutes(timeEnd_c.getMinutes() + time_c.getMinutes())
+ timeEnd_c.setSeconds(timeEnd_c.getSeconds() + time_c.getSeconds())
+ timeEnd_c.setMilliseconds(timeEnd_c.getMilliseconds() + time_c.getMilliseconds())
+ }
+ this.running[3] = 1
+
+ started[3] = setInterval(() => {
+ this.clockRunning(temp_crono)
+ }, 50)
+ break
+ }
}
},
created () {
diff --git a/sapl/painel/views.py b/sapl/painel/views.py
index 42df32f0e..dca958c1b 100644
--- a/sapl/painel/views.py
+++ b/sapl/painel/views.py
@@ -358,16 +358,47 @@ def get_cronometro_status(request):
sessao = SessaoPlenaria.objects.get(id=pk)
ligado = json.loads(request.POST['ligado'])
tipo = json.loads(request.POST['tipo_crono'])
-
- if ligado:
+ if ligado == 1:
if tipo == 1:
sessao.status_cronometro_discurso = 'I'
- sessao.save()
- else:
+
+ elif tipo == 2:
+ sessao.status_cronometro_aparte = 'I'
+
+ elif tipo == 3:
+ sessao.status_cronometro_ordem_do_dia = 'I'
+
+ elif tipo == 4:
+ sessao.status_cronometro_consideracoes_finais = 'I'
+
+ elif ligado == 2:
if tipo == 1:
sessao.status_cronometro_discurso = 'S'
- sessao.save()
+
+ elif tipo == 2:
+ sessao.status_cronometro_aparte = 'S'
+
+ elif tipo == 3:
+ sessao.status_cronometro_ordem_do_dia = 'S'
+
+ elif tipo == 4:
+ sessao.status_cronometro_consideracoes_finais = 'S'
+
+ elif ligado == 3:
+ if tipo == 1:
+ sessao.status_cronometro_discurso = 'R'
+
+ elif tipo == 2:
+ sessao.status_cronometro_aparte = 'R'
+
+ elif tipo == 3:
+ sessao.status_cronometro_ordem_do_dia = 'R'
+
+ elif tipo == 4:
+ sessao.status_cronometro_consideracoes_finais = 'R'
+
+ sessao.save()
tasks.get_dados_painel_final(pk)
return JsonResponse({})
@@ -593,7 +624,10 @@ def get_dados_painel(pk):
'sessao_solene': sessao.tipo.nome == "Solene",
'sessao_finalizada': sessao.finalizada,
'tema_solene': sessao.tema_solene,
- 'status_cronometro': sessao.status_cronometro_discurso,
+ 'status_cronometro_discurso': sessao.status_cronometro_discurso,
+ 'status_cronometro_aparte': sessao.status_cronometro_aparte,
+ 'status_cronometro_ordem': sessao.status_cronometro_ordem_do_dia,
+ 'status_cronometro_consideracoes': sessao.status_cronometro_consideracoes_finais,
'cronometro_aparte': get_cronometro_value('aparte'),
'cronometro_discurso': get_cronometro_value('discurso'),
'cronometro_ordem': get_cronometro_value('ordem'),
diff --git a/sapl/templates/sessao/painel.html b/sapl/templates/sessao/painel.html
index 8718e4099..9e6849485 100644
--- a/sapl/templates/sessao/painel.html
+++ b/sapl/templates/sessao/painel.html
@@ -35,9 +35,9 @@