+
+
+
+
+
+
+
+
+
+
+
+
+
+
Cronômetros
+
+
+
+ A-
+
+
+ A+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tema da Sessão Solene
+
+
+
+
+
+
+{% endblock %}
+
+{% block webpack_loader_js %}
+{% render_chunk_vendors 'js' %}
+{% render_bundle 'global' 'js' %}
+{% render_bundle 'painel' 'js' %}
+{% endblock webpack_loader_js %}
+
+{% block webpack_loader_chunks_js %}
+{% endblock webpack_loader_chunks_js %}
+
\ No newline at end of file
diff --git a/sapl/templates/sessao/painel_v2.html b/sapl/templates/sessao/painel_v2.html
new file mode 100644
index 000000000..e5371b50a
--- /dev/null
+++ b/sapl/templates/sessao/painel_v2.html
@@ -0,0 +1,106 @@
+{% extends "crud/detail.html" %}
+{% load i18n %}
+{% load staticfiles %}
+{% load common_tags %}
+{% load render_bundle from webpack_loader %}
+{% load webpack_static from webpack_loader %}
+
+{% block actions %} {% endblock %}
+
+{% block title %}
+{% endblock %}
+
+{% block vue_content %}
+
+
+ [[ message ]]
+
+
+
Abrir Painel
+
Fechar Painel
+
+
+
+
Operação do Painel Eletrônico
+
+
+
+
Cronômetro do Discurso
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Cronômetro da Questão de Ordem
+
+
+
+
+
+
+
+
+
+
+
+
Cronômetro de Considerações Finais
+
+
+
+
+
+
+
+
+
+
+{% endblock vue_content %}
+
+{% block webpack_loader_css %}
+ {{ block.super }}
+ {% render_bundle 'votacao' 'css' %}
+{% endblock %}
+
+{% block webpack_loader_js %}
+ {% render_chunk_vendors 'js' %}
+ {% render_bundle 'global' 'js' %}
+ {% render_bundle 'painel-controle' 'js' %}
+{% endblock %}
diff --git a/sapl/templates/sessao/votacao/votacao_v2.html b/sapl/templates/sessao/votacao/votacao_v2.html
new file mode 100644
index 000000000..f988f1aba
--- /dev/null
+++ b/sapl/templates/sessao/votacao/votacao_v2.html
@@ -0,0 +1,78 @@
+{% extends "crud/detail.html" %}
+{% load i18n %}
+{% load crispy_forms_tags cropping%}
+{% load common_tags %}
+{% load render_bundle from webpack_loader %}
+{% load webpack_static from webpack_loader %}
+
+{% block vue_content %}
+
+
+
+ [[ tipo_votacao_descricao ]]
+ [[ error_message ]]
+
+
+
+ Matéria: [[ materia ]]
+
+ Ementa: [[ ementa ]]
+
+
+
+
+
+ Votos
+
+
[[ p.nome_parlamentar ]]
+
[[ p.filiacao ]]
+
+
+
+ [[ o.text ]]
+
+
+
+
+ [[ votos_parlamentares[p.parlamentar_id].voto ]]
+
+
+
+
+
+ Total de votos:
+
+
[[ voto.tipo ]]: [[ voto.total ]]
+
+
+
+
+ Resultado da Votação:
+
+ [[ t.nome ]]
+
+
+
+
+
+
Não existe nenhum parlamentar presente para que a votação ocorra.
+
+
+
+{% endblock vue_content %}
+
+{% block webpack_loader_css %}
+ {{ block.super }}
+ {% render_bundle 'votacao' 'css' %}
+{% endblock %}
+
+{% block webpack_loader_js %}
+ {% render_chunk_vendors 'js' %}
+ {% render_bundle 'global' 'js' %}
+ {% render_bundle 'votacao' 'js' %}
+{% endblock %}
diff --git a/scripts/websockets.sh b/scripts/websockets.sh
new file mode 100644
index 000000000..0e95dc74b
--- /dev/null
+++ b/scripts/websockets.sh
@@ -0,0 +1,6 @@
+# DEBUG
+daphne -b 127.0.0.1 -p 8000 sapl.asgi:application
+
+# Redis-CLI
+redis-cli -h localhost -p 6379
+
diff --git a/vue.config.js b/vue.config.js
index 89e7e501b..11504aa3f 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -16,6 +16,18 @@ dotenv.config({
module.exports = {
runtimeCompiler: true,
+ configureWebpack: {
+ resolve: {
+ alias: {
+ // This ensures that imports of 'vue' use the build with the template compiler
+ 'vue$': 'vue/dist/vue.esm.js'
+ }
+ }
+ },
+
+ // Optional but recommended if Django serves the final HTML:
+ // disable source maps in production builds to avoid exposing source
+ productionSourceMap: false,
publicPath:
process.env.NODE_ENV === 'production'
? '/static/sapl/frontend'
@@ -125,11 +137,21 @@ module.exports = {
.add('./frontend/src/__apps/parlamentar/main.js')
.end()
+ config
+ .entry('votacao')
+ .add('./frontend/src/__apps/votacao/main.js')
+ .end()
+
config
.entry('painel')
.add('./frontend/src/__apps/painel/main.js')
.end()
+ config
+ .entry('painel-controle')
+ .add('./frontend/src/__apps/painel-controle/main.js')
+ .end()
+
config
.entry('compilacao')
.add('./frontend/src/__apps/compilacao/main.js')
diff --git a/yarn.lock b/yarn.lock
index ef555dfdb..58cdaccff 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3758,7 +3758,7 @@ fs.realpath@^1.0.0:
fsevents@~2.3.2:
version "2.3.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.2:
@@ -6783,7 +6783,7 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
-vue@^2.7.9:
+vue@^2.7.16:
version "2.7.16"
resolved "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz"
integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==
@@ -6791,6 +6791,11 @@ vue@^2.7.9:
"@vue/compiler-sfc" "2.7.16"
csstype "^3.1.0"
+vuex@3:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71"
+ integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==
+
watchpack@^2.4.0, watchpack@^2.4.1:
version "2.4.1"
resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz"