Repository: interlegis/sapl

Issue:
Painel eletrônico modular
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Que o painel possa ter suas partes separadas. Exemplo, que uma aba fique com os cronômetros, outra com os parlamentares e votos, etc.

## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Atualmente, só é possível exibir o painel com todas as informações em uma única tela.

## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->
Que o atual link "Abrir painel" se torne "Abrir painel completo" e que, além deste link, tenha outros, como "Abrir Cronômetros do Painel", "Abrir Lista de Parlamentares do Painel", etc.

## Contexto
<!--- Como esse problema o afeta? O que você está tentando realizar? -->
<!--- Fornecer o contexto nos ajuda a encontrar uma solução que seja mais útil no mundo real -->
Ideia de usuário. A argumentação é que eles desejavam utilizar várias telas na câmara para que o painel ficasse maior e melhor visualizado. Porém, o painel atual do SAPL só permite que seja tudo exibido na mesma tela.


Discussion:

Resolving patch:
diff --git a/sapl/painel/urls.py b/sapl/painel/urls.py
--- a/sapl/painel/urls.py
+++ b/sapl/painel/urls.py
@@ -4,7 +4,7 @@
 from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view,
                     painel_parlamentar_view, painel_view, painel_votacao_view,
                     switch_painel, verifica_painel, votante_view, CronometroPainelCrud,
-                    PainelConfigCrud)
+                    PainelConfigCrud, painel_parcial_view)
 
 app_name = AppConfig.name
 
@@ -27,4 +27,7 @@
 
     url(r'^voto-individual/$', votante_view,
         name='voto_individual'),
+
+    url(r'^painel-parcial/(?P<pk>\d+)/(?P<opcoes>\d+)/$', painel_parcial_view,
+        name="painel_parcial"),
 ]
diff --git a/sapl/painel/views.py b/sapl/painel/views.py
--- a/sapl/painel/views.py
+++ b/sapl/painel/views.py
@@ -336,11 +336,41 @@ def votante_view(request):
 
 @user_passes_test(check_permission)
 def painel_view(request, pk):
+    exibicao = {
+        'parlamentares': True,
+        'oradores': True,
+        'cronometros': True,
+        'resultado': True,
+        'materia': True
+    }
+    context = {'head_title': str(_('Painel Plenário')), 
+               'sessao_id': pk, 
+               'cronometros': Cronometro.objects.filter(ativo=True).order_by('ordenacao'),
+               'painel_config': PainelConfig.objects.first(),
+               'casa': CasaLegislativa.objects.last(),
+               'exibicao': exibicao
+               }
+    return render(request, 'painel/index.html', context)
+
+def bit_is_set(number, bit):
+    return (number & (1 << bit)) != 0
+
+@user_passes_test(check_permission)
+def painel_parcial_view(request, pk, opcoes):
+    opcoes = int(opcoes)
+    exibicao = {
+        'parlamentares': bit_is_set(opcoes,0),
+        'oradores': bit_is_set(opcoes,1),
+        'cronometros': bit_is_set(opcoes, 2),
+        'resultado': bit_is_set(opcoes, 3),
+        'materia': bit_is_set(opcoes, 4)
+    }
     context = {'head_title': str(_('Painel Plenário')), 
                'sessao_id': pk, 
                'cronometros': Cronometro.objects.filter(ativo=True).order_by('ordenacao'),
                'painel_config': PainelConfig.objects.first(),
-               'casa': CasaLegislativa.objects.last()
+               'casa': CasaLegislativa.objects.last(),
+               'exibicao': exibicao
                }
     return render(request, 'painel/index.html', context)
 


Test patch: