Browse Source

Dados recolhidos pelo Ws sendo exibidos no painel

Websocket_painel
Gustavo274 3 years ago
parent
commit
e410ef004c
  1. 126
      frontend/src/__apps/painel/main.js
  2. 9
      sapl/painel/views.py

126
frontend/src/__apps/painel/main.js

@ -102,80 +102,74 @@ const v = new Vue({ // eslint-disable-line
} }
return texto return texto
}, },
converterUrl (url) {
url = url.slice(-(url.length - url.lastIndexOf('/')))
url = '/painel' + url + '/dados'
return url
},
fetchData () { fetchData () {
// TODO: how to get no hardcoded URL? // TODO: how to get no hardcoded URL?
$.get(this.converterUrl(window.location.pathname), function (response) { const objeto = JSON.parse(this.teste)
this.brasao = response.brasao this.brasao = objeto.brasao
this.painel_aberto = response.status_painel this.painel_aberto = objeto.status_painel
this.sessao_finalizada = response.sessao_finalizada this.sessao_finalizada = objeto.sessao_finalizada
this.sessao_plenaria = response.sessao_plenaria this.sessao_plenaria = objeto.sessao_plenaria
this.sessao_plenaria_data = 'Data Início: ' + response.sessao_plenaria_data this.sessao_plenaria_data = 'Data Início: ' + objeto.sessao_plenaria_data
this.sessao_plenaria_hora_inicio = 'Hora Início: ' + response.sessao_plenaria_hora_inicio this.sessao_plenaria_hora_inicio = 'Hora Início: ' + objeto.sessao_plenaria_hora_inicio
this.sessao_solene = response.sessao_solene this.sessao_solene = objeto.sessao_solene
this.sessao_solene_tema = response.sessao_solene_tema this.sessao_solene_tema = objeto.sessao_solene_tema
this.presentes = response.presentes this.presentes = objeto.presentes
this.presentes.forEach(parlamentar => { this.presentes.forEach(parlamentar => {
this.atribuiColor(parlamentar) this.atribuiColor(parlamentar)
}) })
this.oradores = response.oradores this.oradores = objeto.oradores
this.materia_legislativa_texto = response.materia_legislativa_texto this.materia_legislativa_texto = objeto.materia_legislativa_texto
this.numero_votos_sim = response.numero_votos_sim this.numero_votos_sim = objeto.numero_votos_sim
this.numero_votos_nao = response.numero_votos_nao this.numero_votos_nao = objeto.numero_votos_nao
this.numero_abstencoes = response.numero_abstencoes this.numero_abstencoes = objeto.numero_abstencoes
this.num_presentes = response.num_presentes this.num_presentes = objeto.num_presentes
this.total_votos = response.total_votos this.total_votos = objeto.total_votos
this.materia_legislativa_texto = response.materia_legislativa_texto this.materia_legislativa_texto = objeto.materia_legislativa_texto
this.materia_legislativa_ementa = response.materia_legislativa_ementa this.materia_legislativa_ementa = objeto.materia_legislativa_ementa
this.observacao_materia = this.capObservacao(response.observacao_materia) this.observacao_materia = this.capObservacao(objeto.observacao_materia)
this.tipo_resultado = response.tipo_resultado this.tipo_resultado = objeto.tipo_resultado
this.tipo_votacao = response.tipo_votacao this.tipo_votacao = objeto.tipo_votacao
this.mat_em_votacao = this.msgMateria() this.mat_em_votacao = this.msgMateria()
// Cronometros // Cronometros
cronometroStart[0] = response.cronometro_discurso cronometroStart[0] = objeto.cronometro_discurso
cronometroStart[1] = response.cronometro_aparte cronometroStart[1] = objeto.cronometro_aparte
cronometroStart[2] = response.cronometro_ordem cronometroStart[2] = objeto.cronometro_ordem
cronometroStart[3] = response.cronometro_consideracoes cronometroStart[3] = objeto.cronometro_consideracoes
if (time === null) { if (time === null) {
// Pegar data atual // Pegar data atual
this.cronometro_discurso = new Date() this.cronometro_discurso = new Date()
this.cronometro_aparte = this.cronometro_discurso this.cronometro_aparte = this.cronometro_discurso
this.cronometro_ordem = this.cronometro_discurso this.cronometro_ordem = this.cronometro_discurso
this.cronometro_consideracoes = this.cronometro_discurso this.cronometro_consideracoes = this.cronometro_discurso
// Setar cada Cronometro // Setar cada Cronometro
var temp = new Date() var temp = new Date()
temp.setSeconds(this.cronometro_discurso.getSeconds() + cronometroStart[0]) temp.setSeconds(this.cronometro_discurso.getSeconds() + cronometroStart[0])
var res = new Date(temp - this.cronometro_discurso) var res = new Date(temp - this.cronometro_discurso)
this.cronometro_discurso = this.formatTime(res) this.cronometro_discurso = this.formatTime(res)
temp = new Date() temp = new Date()
temp.setSeconds(this.cronometro_aparte.getSeconds() + cronometroStart[1]) temp.setSeconds(this.cronometro_aparte.getSeconds() + cronometroStart[1])
res = new Date(temp - this.cronometro_aparte) res = new Date(temp - this.cronometro_aparte)
this.cronometro_aparte = this.formatTime(res) this.cronometro_aparte = this.formatTime(res)
temp = new Date() temp = new Date()
temp.setSeconds(this.cronometro_ordem.getSeconds() + cronometroStart[2]) temp.setSeconds(this.cronometro_ordem.getSeconds() + cronometroStart[2])
res = new Date(temp - this.cronometro_ordem) res = new Date(temp - this.cronometro_ordem)
this.cronometro_ordem = this.formatTime(res) this.cronometro_ordem = this.formatTime(res)
temp = new Date() temp = new Date()
temp.setSeconds(this.cronometro_consideracoes.getSeconds() + cronometroStart[3]) temp.setSeconds(this.cronometro_consideracoes.getSeconds() + cronometroStart[3])
res = new Date(temp - this.cronometro_consideracoes) res = new Date(temp - this.cronometro_consideracoes)
this.cronometro_consideracoes = this.formatTime(res) this.cronometro_consideracoes = this.formatTime(res)
} }
}.bind(this))
}, },
formatTime (time) { formatTime (time) {
var tempo = '00:' + time.getMinutes().toLocaleString('en-US', { var tempo = '00:' + time.getMinutes().toLocaleString('en-US', {
@ -253,11 +247,13 @@ const v = new Vue({ // eslint-disable-line
socket.send('Calling Data...') socket.send('Calling Data...')
}, },
pollData () { pollData () {
this.fetchData() /* this.fetchData() */
this.polling = setInterval(() => { this.polling = setInterval(() => {
// console.info('Fetching data from backend') // console.info('Fetching data from backend')
this.call_data() this.call_data()
}, 300) this.fetchData()
/* console.log(this.teste) */
}, 1000)
} }
}, },
beforeDestroy () { beforeDestroy () {
@ -269,8 +265,10 @@ const v = new Vue({ // eslint-disable-line
console.log('Connection established') console.log('Connection established')
} }
const _this = this
socket.onmessage = function (e) { socket.onmessage = function (e) {
this.teste = JSON.parse(e.data) _this.teste = JSON.parse(e.data)
console.log('Data Received...') console.log('Data Received...')
} }

9
sapl/painel/views.py

@ -590,18 +590,17 @@ def get_dados_painel(pk):
'status_painel': sessao.painel_aberto, 'status_painel': sessao.painel_aberto,
'brasao': brasao 'brasao': brasao
} }
return response
ordem_dia = get_materia_aberta(pk) ordem_dia = get_materia_aberta(pk)
expediente = get_materia_expediente_aberta(pk) expediente = get_materia_expediente_aberta(pk)
# Caso tenha alguma matéria com votação aberta, ela é mostrada no painel # Caso tenha alguma matéria com votação aberta, ela é mostrada no painel
# com prioridade para Ordem do Dia. # com prioridade para Ordem do Dia.
if ordem_dia: if ordem_dia:
return JsonResponse(get_votos( return json.dumps(get_votos(
get_presentes(pk, response, ordem_dia), get_presentes(pk, response, ordem_dia),
ordem_dia)) ordem_dia))
elif expediente: elif expediente:
return JsonResponse(get_votos( return json.dumps(get_votos(
get_presentes(pk, response, expediente), get_presentes(pk, response, expediente),
expediente)) expediente))
@ -637,9 +636,9 @@ def get_dados_painel(pk):
ultimo_timestamp = last_expediente_leitura.data_hora ultimo_timestamp = last_expediente_leitura.data_hora
if ordem_expediente: if ordem_expediente:
return JsonResponse(get_votos( return json.dumps(get_votos(
get_presentes(pk, response, ordem_expediente), get_presentes(pk, response, ordem_expediente),
ordem_expediente)) ordem_expediente))
# Retorna que não há nenhuma matéria já votada ou aberta # Retorna que não há nenhuma matéria já votada ou aberta
return response_nenhuma_materia(get_presentes(pk, response, None)) return json.dumps(get_presentes(pk, response, None))
Loading…
Cancel
Save