mirror of https://github.com/interlegis/sigi.git
Sesostris Vieira
3 years ago
53 changed files with 3138 additions and 1825 deletions
@ -1,35 +1,64 @@ |
|||
{% load i18n %} |
|||
{% load static i18n %} |
|||
|
|||
<div class="panel panel-primary flex-col table-responsive"> |
|||
<div class="panel-heading"> |
|||
<h3 class="panel-title"> |
|||
{% if seletor == 'sim' %} |
|||
{% trans "Resumo da carteira de" %} |
|||
<mark class="dropdown"> |
|||
<a data-toggle="dropdown" href="">{{ gerente.nome_completo|default:_("todo o Interlegis") }}</a> |
|||
<ul class="dropdown-menu"> |
|||
<li><a href="{% url "casas-carteira" %}?servidor=_all&snippet={{ snippet }}&s={{ seletor }}" data-target="resumo">{% trans "Todo o Interlegis" %}</a></li> |
|||
{% if seletor == 'sim' %} |
|||
<ul class="collapsible gerente_selector" style="width: 100%;"> |
|||
<li> |
|||
<div class="collapsible-header"> |
|||
{% if gerente %} |
|||
{% if gerente.foto %} |
|||
<img src="{{ gerente.foto.url }}" class="circle user_thumb" alt="{% trans "Foto do servidor" %}"> |
|||
{% else %} |
|||
<i class="material-icons circle">account_circle</i> |
|||
{% endif %} |
|||
{{ gerente.nome_completo }} |
|||
{% else %} |
|||
<img src="{% static "img/interlegis_60x60.png" %}" class="circle user_thumb" alt="{% trans "Logo Interlegis" %}"> |
|||
{% trans "Todo o Interlegis" %} |
|||
{% endif %} |
|||
</div> |
|||
<div class="collapsible-body"> |
|||
<ul> |
|||
<li> |
|||
<a href="{% url "casas-carteira" %}?servidor=_all&snippet={{ snippet }}&s={{ seletor }}" data-target="card-carteira"> |
|||
{% trans "Todo o Interlegis" %} |
|||
</a> |
|||
</li> |
|||
{% for g in gerentes %} |
|||
<li><a href="{% url "casas-carteira" %}?servidor={{ g.pk }}&snippet={{ snippet }}&s={{ seletor }}" data-target="resumo">{{g.nome_completo }}</a></li> |
|||
<li> |
|||
<a href="{% url "casas-carteira" %}?servidor={{ g.pk|safe }}&snippet={{ snippet }}&s={{ seletor }}" data-target="card-carteira"> |
|||
{{g.nome_completo }} |
|||
</a> |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</mark> |
|||
{% else %} |
|||
{% trans "Resumo da carteira" %} |
|||
{% endif %} |
|||
</h3> |
|||
</div> |
|||
<table class="table table-hover resumo"> |
|||
</div> |
|||
</li> |
|||
</ul> |
|||
{% endif %} |
|||
|
|||
<table class="numeros resumo-carteira"> |
|||
{% for row in resumo %} |
|||
{% if forloop.first %} |
|||
<tr> |
|||
{% for col in row %} |
|||
<th>{{ col }}</th> |
|||
{% endfor %} |
|||
</tr> |
|||
{% else %} |
|||
<tr> |
|||
{% if row.subtitle %} |
|||
<th colspan="7">{{ row.subtitle }}</th> |
|||
{% else %} |
|||
{% for col in row %} |
|||
<td{% if forloop.counter > 2 %} class="hidden-xs"{% endif %}>{{ col }}</td> |
|||
{% if forloop.first %} |
|||
<th>{{ col }}</th> |
|||
{% else %} |
|||
<td>{{ col }}</td> |
|||
{% endif %} |
|||
{% endfor %} |
|||
{% endif %} |
|||
</tr> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</table> |
|||
</div> |
|||
|
@ -1,147 +1,37 @@ |
|||
{% load static from staticfiles %} |
|||
{% load i18n %} |
|||
<html> |
|||
<head> |
|||
<title>Relatório por Região</title> |
|||
<style> |
|||
@page { |
|||
size: a4; |
|||
margin-top: 6.5cm; |
|||
margin-left: 1.5cm; |
|||
margin-right: 1cm; |
|||
margin-bottom: 3.5cm; |
|||
@frame top{ |
|||
-pdf-frame-content: cabecalho; |
|||
top: 2cm; |
|||
margin-left: 1cm; |
|||
margin-right: 1cm; |
|||
/*height: 1cm; */ |
|||
} |
|||
/* @frame midle{ |
|||
-pdf-frame-content: midle; |
|||
top: 6cm; |
|||
height: 1cm; |
|||
margin: 2cm; |
|||
}*/ |
|||
@frame footer { |
|||
-pdf-frame-content: footerContent; |
|||
bottom: 2cm; |
|||
margin-left: 1cm; |
|||
margin-right: 1cm; |
|||
height: 1cm; |
|||
} |
|||
} |
|||
body{ |
|||
font-family: 'Helvetica'; |
|||
font-size: 9pt; |
|||
} |
|||
#corpo h1{ |
|||
text-align: center; |
|||
} |
|||
#cabecalho { |
|||
text-align: center; |
|||
font-weight: bold; |
|||
font-size: 14pt; |
|||
} |
|||
#cabecalho .item2{ |
|||
font-size: 13pt; |
|||
} |
|||
#cabecalho .titulo{ |
|||
font-size: 14pt; |
|||
} |
|||
#footerContent { |
|||
border-top: black outset; |
|||
padding-top: 0.15cm; |
|||
} |
|||
#footerContent #esquerda{ |
|||
text-align: left; |
|||
} |
|||
#footerContent #direita{ |
|||
text-align: right; |
|||
background-image: url("{% static 'img/logo-senado.png' %}"); |
|||
} |
|||
.tabela { |
|||
padding-top: 0.1cm; |
|||
padding-left: 0.1cm; |
|||
border: black solid; |
|||
width: 2cm; |
|||
background-color: #B5B5B5; |
|||
} |
|||
.tabela caption{ |
|||
text-align: center; |
|||
font-weight: bold; |
|||
font-size: 11pt; |
|||
} |
|||
.tabela th{ |
|||
background-color: #CFCFCF; |
|||
text-align: left; |
|||
} |
|||
.tabela .conteudo { |
|||
background-color: white;/*#E8E8E8;*/ |
|||
} |
|||
.tabela .sumario{ |
|||
font-weight: bold; |
|||
background-color: #CFCFCF; |
|||
} |
|||
.tabela .cabecalho_esquerda{ |
|||
background-color: #E8E8E8; |
|||
font-weight: bold; |
|||
} |
|||
{% extends 'pdf/base_report.html' %} |
|||
{% load static i18n %} |
|||
|
|||
{% block page_size %}A4 portrait{% endblock %} |
|||
{% block report_name %}{% blocktranslate %}Relatório da Região {{ regiao }}{% endblocktranslate %}{% endblock %} |
|||
|
|||
</style> |
|||
|
|||
</head> |
|||
<body> |
|||
<div id="cabecalho"> |
|||
<table> |
|||
<tr> |
|||
<td id="imagem1"><img src="{% static 'img/logo-senado.png' %}" width="80" height="80" alt="Logo Senado"/></td> |
|||
<td id="centro" colspan="3">{% trans 'SENADO FEDERAL' %}<br/><span class="item2">{% trans 'SINTER - Secretaria Especial do Interlegis' %}</span></td> |
|||
<td id="imagem2"><img src="{% static 'img/logo-interlegis.jpg' %}" width="90" height="65" alt="Logo Interlegis"/></td> |
|||
</tr> |
|||
</table> |
|||
<h1 class="titulo">{{regiao}}</h1> |
|||
</div> |
|||
<div id="midle"> |
|||
{% for tabela in tabelas %} |
|||
<table class="tabela" repeat="1"> |
|||
<caption>{{tabela.projeto}} - {{regiao}}</caption> |
|||
<thead> |
|||
<tr> |
|||
{%for item in tabela.cabecalho%} |
|||
<th>{{item}}</th> |
|||
{%endfor%} |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for linha in tabela.linhas %} |
|||
<tr class="conteudo"> |
|||
<th class="cabecalho_esquerda">{{linha.estado}}</th> |
|||
{% for item in linha.lista %} |
|||
<td>{{item}}</td> |
|||
{% endfor %} |
|||
</tr> |
|||
{% endfor %} |
|||
<tr> |
|||
<th>Total</th> |
|||
{% for item in tabela.sumario %} |
|||
<th>{{item}}</th> |
|||
{% endfor %} |
|||
</tr> |
|||
</tbody> |
|||
</table> |
|||
<br /> |
|||
{% block main_content %} |
|||
{% for tabela in tabelas %} |
|||
<table class="tabela" repeat="1"> |
|||
<caption>{{ tabela.projeto }} - {{ regiao }}</caption> |
|||
<thead> |
|||
<tr> |
|||
{% for item in tabela.cabecalho %} |
|||
<th>{{ item }}</th> |
|||
{% endfor %} |
|||
</div> |
|||
<div id="footerContent"> |
|||
<table> |
|||
<tr> |
|||
<td id="esquerda">{{data}} às {{hora}}</td> |
|||
<td id="direita">{% trans 'Página' %} <pdf:pagenumber /> </td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
|
|||
</body> |
|||
</html> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for linha in tabela.linhas %} |
|||
<tr> |
|||
<th>{{ linha.estado }}</th> |
|||
{% for item in linha.lista %} |
|||
<td class="right-align">{{ item }}</td> |
|||
{% endfor %} |
|||
</tr> |
|||
{% endfor %} |
|||
<tr> |
|||
<th>Total</th> |
|||
{% for item in tabela.sumario %} |
|||
<th class="right-align">{{item}}</th> |
|||
{% endfor %} |
|||
</tr> |
|||
</tbody> |
|||
</table> |
|||
<br /> |
|||
{% endfor %} |
|||
{% endblock main_content %} |
@ -1,14 +1,17 @@ |
|||
from django.conf.urls import patterns, url |
|||
from django.urls import path |
|||
from sigi.apps.convenios import views |
|||
|
|||
urlpatterns = [ |
|||
path('reportsRegiao/<str:regiao>/', views.report_regiao, name='convenios-report_regiao_pdf'), |
|||
] |
|||
|
|||
urlpatterns = patterns( |
|||
'sigi.apps.convenios.views', |
|||
# urlpatterns = patterns( |
|||
# 'sigi.apps.convenios.views', |
|||
|
|||
url(r'^convenio/reports/$', 'report', name='convenios-report'), |
|||
url(r'^convenio/carrinho/$', 'visualizar_carrinho', name='visualizar-carrinho'), |
|||
url(r'^convenio/carrinho/excluir_carrinho/$', 'excluir_carrinho', name='excluir-carrinho'), # tagerror |
|||
url(r'^convenio/carrinho/deleta_itens_carrinho$', 'deleta_itens_carrinho', name='deleta-itens-carrinho'), # tagerror |
|||
url(r'^convenio/csv/$', 'export_csv', name='convenios-csv'), |
|||
url(r'^reportsRegiao/(?P<regiao>\w+)/$', 'report_regiao', name='convenios-report_regiao_pdf'), |
|||
url(r'^importar/$', 'importar_gescon', name='importar-gescon'), |
|||
) |
|||
# url(r'^convenio/reports/$', 'report', name='convenios-report'), |
|||
# url(r'^convenio/carrinho/$', 'visualizar_carrinho', name='visualizar-carrinho'), |
|||
# url(r'^convenio/carrinho/excluir_carrinho/$', 'excluir_carrinho', name='excluir-carrinho'), # tagerror |
|||
# url(r'^convenio/carrinho/deleta_itens_carrinho$', 'deleta_itens_carrinho', name='deleta-itens-carrinho'), # tagerror |
|||
# url(r'^convenio/csv/$', 'export_csv', name='convenios-csv'), |
|||
# url(r'^importar/$', 'importar_gescon', name='importar-gescon'), |
|||
# ) |
|||
|
@ -1,22 +1,28 @@ |
|||
# coding: utf-8 |
|||
from django.conf.urls import patterns, url |
|||
from django.urls import path, include |
|||
from sigi.apps.eventos import views |
|||
|
|||
urlpatterns = [ |
|||
path('calendario/', views.calendario, name='eventos-calendario'), |
|||
] |
|||
|
|||
urlpatterns = patterns( |
|||
'sigi.apps.eventos.views', |
|||
# Painel de ocorrencias |
|||
url(r'^calendario/$', 'calendario', name='eventos-calendario'), |
|||
url(r'^alocacaoequipe/$', 'alocacao_equipe', name='eventos-alocacaoequipe'), |
|||
# Carrinho |
|||
url(r'^evento/carrinho/$', 'visualizar_carrinho', |
|||
name='visualizar-carrinho-evento'), |
|||
url(r'^evento/carrinho/excluir_carrinho/$', 'excluir_carrinho', |
|||
name='excluir-carrinho-evento'), # Error |
|||
url(r'^evento/carrinho/deleta_itens_carrinho$', 'deleta_itens_carrinho', |
|||
name='deleta-itens-carrinho-evento'), # Error |
|||
url(r'^evento/csv/$', 'export_csv', name='evento-export-csv'), # Error |
|||
url(r'^evento/(?P<id>\w+)/declaracao/$', 'declaracao', |
|||
name='evento-declaracao'), |
|||
# from django.conf.urls import patterns, url |
|||
|
|||
|
|||
) |
|||
# urlpatterns = patterns( |
|||
# 'sigi.apps.eventos.views', |
|||
# # Painel de ocorrencias |
|||
# url(r'^calendario/$', 'calendario', name='eventos-calendario'), |
|||
# url(r'^alocacaoequipe/$', 'alocacao_equipe', name='eventos-alocacaoequipe'), |
|||
# # Carrinho |
|||
# url(r'^evento/carrinho/$', 'visualizar_carrinho', |
|||
# name='visualizar-carrinho-evento'), |
|||
# url(r'^evento/carrinho/excluir_carrinho/$', 'excluir_carrinho', |
|||
# name='excluir-carrinho-evento'), # Error |
|||
# url(r'^evento/carrinho/deleta_itens_carrinho$', 'deleta_itens_carrinho', |
|||
# name='deleta-itens-carrinho-evento'), # Error |
|||
# url(r'^evento/csv/$', 'export_csv', name='evento-export-csv'), # Error |
|||
# url(r'^evento/(?P<id>\w+)/declaracao/$', 'declaracao', |
|||
# name='evento-declaracao'), |
|||
|
|||
|
|||
# ) |
|||
|
@ -0,0 +1,44 @@ |
|||
body, html, .mapbox, #map { |
|||
height: 100%; |
|||
width: 100%; |
|||
} |
|||
#content { |
|||
height: 91%; |
|||
} |
|||
.filterwrap { |
|||
background-color: rgba(255,255,255,0.5); |
|||
position: absolute; |
|||
top: 0; |
|||
left: 0; |
|||
z-index: 314159; |
|||
height: 100%; |
|||
max-height: 100%; |
|||
overflow-y: auto; |
|||
} |
|||
.region-ufs { |
|||
margin-left: 15px; |
|||
} |
|||
.autocomplete-content { |
|||
max-width: 300px; |
|||
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05); |
|||
box-shadow: 0 1px 2px rgba(0,0,0,.05); |
|||
border-color: #ddd; |
|||
margin-bottom: 20px; |
|||
background-color: #fff; |
|||
border: 1px solid transparent; |
|||
border-radius: 4px; |
|||
padding: 15px; |
|||
z-index: 99999 !important; |
|||
} |
|||
.dropdown-content li>span { |
|||
font-size: 13px; |
|||
line-height: 13px; |
|||
padding: 3px 3px; |
|||
} |
|||
|
|||
.dropdown-content li { |
|||
font-size: 13px; |
|||
line-height: 13px; |
|||
height: auto; |
|||
min-height: unset; |
|||
} |
@ -0,0 +1,35 @@ |
|||
{% load static i18n %} |
|||
|
|||
<ul class="collapsible gerente_selector"> |
|||
<li> |
|||
<div class="collapsible-header"> |
|||
{% if gerente %} |
|||
{% if gerente.foto %} |
|||
<img src="{{ gerente.foto.url }}" class="circle user_thumb" alt="{% trans "Foto do servidor" %}"> |
|||
{% else %} |
|||
<i class="material-icons circle">account_circle</i> |
|||
{% endif %} |
|||
{{ gerente.nome_completo }} |
|||
{% else %} |
|||
<img src="{% static "img/interlegis_60x60.png" %}" class="circle user_thumb" alt="{% trans "Logo Interlegis" %}"> |
|||
{% trans "Todo o Interlegis" %} |
|||
{% endif %} |
|||
</div> |
|||
<div class="collapsible-body"> |
|||
<ul> |
|||
<li> |
|||
<a href="{% url "home_chartperformance" %}?servidor=_all" data-target="performance-chart"> |
|||
{% trans "Todo o Interlegis" %} |
|||
</a> |
|||
</li> |
|||
{% for g in gerentes %} |
|||
<li> |
|||
<a href="{% url "home_chartperformance" %}?servidor={{ g.pk|safe }}" data-target="performance-chart"> |
|||
{{g.nome_completo }} |
|||
</a> |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</div> |
|||
</li> |
|||
</ul> |
@ -0,0 +1,57 @@ |
|||
{% load i18n %} |
|||
|
|||
<a class="waves-effect waves-light btn-small btn-flat" href="{% url 'convenios-report_regiao_pdf' 'CO' %}">Centro Oeste</a> |
|||
<a class="waves-effect waves-light btn-small btn-flat" href="{% url 'convenios-report_regiao_pdf' 'NE' %}">Nordeste</a> |
|||
<a class="waves-effect waves-light btn-small btn-flat" href="{% url 'convenios-report_regiao_pdf' 'NO' %}">Norte</a> |
|||
<a class="waves-effect waves-light btn-small btn-flat" href="{% url 'convenios-report_regiao_pdf' 'SD' %}">Sudeste</a> |
|||
<a class="waves-effect waves-light btn-small btn-flat" href="{% url 'convenios-report_regiao_pdf' 'SL' %}">Sul</a> |
|||
|
|||
<table class="numeros"> |
|||
<tr> |
|||
{% for item in tabela_resumo_camara.cabecalho_topo %} |
|||
<th>{{item}}</th> |
|||
{% endfor %} |
|||
</tr> |
|||
{% for cabecalho,lista in tabela_resumo_camara.lista_zip %} |
|||
<tr> |
|||
<th>{{cabecalho}}</th> |
|||
{% for item in lista %} |
|||
<td>{{item}}</td> |
|||
{% endfor %} |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
|
|||
<table class="numeros"> |
|||
<tr> |
|||
<th>{% trans 'Total de câmaras' %}</th> |
|||
<td>{{ tabela_resumo_camara.total_camaras }}</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>{% trans 'Câmaras sem processo' %}</th> |
|||
<td>{{ tabela_resumo_camara.camaras_sem_processo }}</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>{% trans 'Casas sem convenio que utilizam algum serviço de hospedagem' %} |
|||
<a href="{% url "home_reportsemconvenio" %}?modo=H" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><i class="material-icons tiny">list</i></a> |
|||
<a href="{% url "home_reportsemconvenio" %}?modo=H&f=csv" aria-label="{% trans "Download csv" %}" title="{% trans "Download csv" %}"><i class="material-icons tiny">file_download</i></a> |
|||
</th> |
|||
<td>{{ tabela_resumo_camara.sem_convenio.hospedagem|length }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th>{% trans 'Casas sem convenio que utilizam somente serviço de registro' %} |
|||
<a href="{% url "home_reportsemconvenio" %}?modo=R" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><i class="material-icons tiny">list</i></a> |
|||
<a href="{% url "home_reportsemconvenio" %}?modo=R&f=csv" aria-label="{% trans "Download csv" %}" title="{% trans "Download csv" %}"><i class="material-icons tiny">file_download</i></a> |
|||
</th> |
|||
<td>{{ tabela_resumo_camara.sem_convenio.registro|length }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th>{% trans 'Casas sem convenio que utilizam algum serviço de registro e/ou hospedagem' %} |
|||
<a href="{% url "home_reportsemconvenio" %}" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><i class="material-icons tiny">list</i></a> |
|||
<a href="{% url "home_reportsemconvenio" %}?f=csv" aria-label="{% trans "Download csv" %}" title="{% trans "Download csv" %}"><i class="material-icons tiny">file_download</i></a> |
|||
</th> |
|||
<td>{{ tabela_resumo_camara.sem_convenio.total|length }}</td> |
|||
</tr> |
|||
</table> |
@ -0,0 +1,41 @@ |
|||
{% load static i18n %} |
|||
|
|||
<div class="card-links"> |
|||
<a class="waves-effect waves-light btn-small btn-flat btn-floating left" href="{% url "home_resumoseit" %}?ano={{ tabela_resumo_seit.mes_anterior.year|safe }}&mes={{ tabela_resumo_seit.mes_anterior.month|safe }}" aria-label="{% trans "Retroceder um mês" %}" data-target="card-resumoseit"> |
|||
<i class="material-icons left">chevron_left</i> |
|||
</a> |
|||
<a class="waves-effect waves-light btn-small btn-flat btn-floating right" href="{% url "home_resumoseit" %}?ano={{ tabela_resumo_seit.proximo_mes.year|safe }}&mes={{ tabela_resumo_seit.proximo_mes.month|safe }}" aria-label="{% trans "Avançar um mês" %}" data-target="card-resumoseit"> |
|||
<i class="material-icons right">chevron_right</i> |
|||
</a> |
|||
</div> |
|||
|
|||
<table class="numeros servicos"> |
|||
<tr> |
|||
{% for s in tabela_resumo_seit.titulos %} |
|||
<th>{{ s }}</th> |
|||
{% endfor %} |
|||
</tr> |
|||
{% for servico in tabela_resumo_seit.servicos %} |
|||
<tr> |
|||
<th> |
|||
<a class="waves-effect waves-light modal-trigger" href="#modal-{{ servico.nome|slugify }}">{{ servico.nome }}</a> |
|||
<div id="modal-{{ servico.nome|slugify }}" class="modal"> |
|||
<div class="modal-content"> |
|||
<h6>{{ servico.nome }}</h6> |
|||
<table class="numeros servicos"> |
|||
{% for mes in servico.novos_por_mes %} |
|||
<tr><th>{{ mes.mes }}</th><td>{{ mes.total }}</td></tr> |
|||
{% endfor %} |
|||
</table> |
|||
</div> |
|||
<div class="modal-footer"> |
|||
<a href="#!" class="modal-close waves-effect waves-green btn-flat">{% translate "Close" %}</a> |
|||
</div> |
|||
</div> |
|||
</th> |
|||
<td>{{ servico.total }}</td> |
|||
<td>{{ servico.novos_mes_anterior }}</td> |
|||
<td>{{ servico.novos_mes_atual }}</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
@ -0,0 +1,60 @@ |
|||
{% extends "pdf/base_report.html" %} |
|||
{% load i18n %} |
|||
|
|||
{% block page_size %}A4 landscape{% endblock page_size %} |
|||
{% block title %}{% trans 'Lista de Casas atendidas' %}{% endblock title %} |
|||
{% block report_name %}{% trans 'Lista de Casas atendidas'|upper %}{% endblock report_name %} |
|||
|
|||
{% block main_content %} |
|||
<table> |
|||
<caption>{% trans "Filtros aplicados" %}</caption> |
|||
{% if tipos_orgao %} |
|||
<tr><th>{% trans 'Tipos de órgão' %}</th><td>{% for t in tipos_orgao %}{{ t.nome }}{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr> |
|||
{% endif %} |
|||
{% if tipos_servico %} |
|||
<tr><th>{% trans 'Tipos de serviço' %}</th><td>{% for s in tipos_servico %}{{ s.nome }}{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr> |
|||
{% endif %} |
|||
{% if tipos_convenio %} |
|||
<tr><th>{% trans 'Tipos de convênio' %}</th><td>{% for c in tipos_convenio %}{{ c.nome }}{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr> |
|||
{% endif %} |
|||
{% if gerentes %} |
|||
<tr><th>{% trans 'Gerentes Interlegis' %}</th><td>{% for g in gerentes %}{{ g.nome_completo }}{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr> |
|||
{% endif %} |
|||
{% if ufs %} |
|||
<tr><th>{% trans 'Estados' %}</th><td>{% for uf in ufs %}{{ uf.nome }}{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr> |
|||
{% endif %} |
|||
</table> |
|||
<br/> |
|||
<table class="data" repeat="1"> |
|||
<thead> |
|||
<tr> |
|||
<th>{% trans 'Casa Legislativa' %}</th> |
|||
<th>{% trans 'Estado' %}</th> |
|||
<th>{% trans 'Região' %}</th> |
|||
<th>{% trans 'Serviços' %}</th> |
|||
<th>{% trans 'Convênios' %}</th> |
|||
<th>{% trans 'Gerente(s)' %}</th> |
|||
</tr> |
|||
</thead> |
|||
{% for casa in casas %} |
|||
<tr> |
|||
<td>{{ casa.nome }} </td> |
|||
<td>{{ casa.municipio.uf.nome }}</td> |
|||
<td>{{ casa.municipio.uf.get_regiao_display }}</td> |
|||
<td><ul>{% for s in casa.servico_set.all %} |
|||
{% if s.data_desativacao == None %} |
|||
<li>{{ s }}</li> |
|||
{% endif %} |
|||
{% endfor %}</ul></td> |
|||
<td><ul>{% for c in casa.convenio_set.all %} |
|||
<li>{{ c }}</li> |
|||
{% endfor %} |
|||
</ul></td> |
|||
<td><ul>{% for g in casa.gerentes_interlegis.all %} |
|||
<li>{{ g }}</li> |
|||
{% endfor %}</ul> |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
{% endblock %} |
@ -0,0 +1,173 @@ |
|||
{% load i18n material %} |
|||
|
|||
<div class="scroll-pane"> |
|||
{% if not mobile %} |
|||
<i class="material-icons minimize nav-bar" aria-hidden="true" title="{% trans 'Minimize' %}">close</i> |
|||
{% endif %} |
|||
<form id="filterForm" action="" method="get" > |
|||
{{ csrftoken }} |
|||
</form> |
|||
<ul class="collapsible"> |
|||
<li> |
|||
<div class="card"> |
|||
<div class="card-image"> |
|||
{% if 'profile/user_picture.html'|template_exists %} |
|||
{% include 'profile/user_picture.html' %} |
|||
{% else %} |
|||
{% include 'material/admin/user_picture.html' %} |
|||
{% endif %} |
|||
</div> |
|||
</div> |
|||
</li> |
|||
<li> |
|||
<div class="card" id="filterbox"> |
|||
<div class="card-content"> |
|||
<form id="searchform" class="form-inline ui-front"> |
|||
<div class="input-field"> |
|||
<i class="material-icons prefix">search</i> |
|||
<input type="text" id="search-text" class="autocomplete" placeholder="Procurar" aria-label="Procurar"> |
|||
</form> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<small><strong>Total de Órgãos selecionados: </strong><span id="totalOrgao">-</span></small> |
|||
</li> |
|||
<li> |
|||
<div class="collapsible-header">{% trans "Por Tipo de órgão" %}</div> |
|||
<div class="collapsible-body"> |
|||
{% for o in tipos_orgao %} |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="tipo_orgao_{{ o.sigla }}" name="tipo_orgao" value="{{ o.sigla }}" checked/> |
|||
<span>{{ o.nome }}</span> |
|||
</label> |
|||
</p> |
|||
{% endfor %} |
|||
</div> |
|||
</li> |
|||
<li> |
|||
<div class="collapsible-header">{% trans "Por Tipo de serviço" %}</div> |
|||
<div class="collapsible-body"> |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="tipo_servico_ignore" name="ignore_tipo_servico" value="ignore" data-controls="tipo_servico" /> |
|||
<span>{% trans "Ignorar" %} |
|||
</label> |
|||
</p> |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="tipo_servico_none" name="tipo_servico" value="none"/> |
|||
<span>{% trans "Nenhum serviço" %}</span> |
|||
</label> |
|||
</p> |
|||
{% for s in tipos_servico %} |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="tipo_servico_{{ s.sigla }}" name="tipo_servico" value="{{ s.sigla }}" checked/> |
|||
<span>{{ s.nome }}</span> |
|||
</label> |
|||
</p> |
|||
{% endfor %} |
|||
</div> |
|||
</li> |
|||
|
|||
<li> |
|||
<div class="collapsible-header">{% trans "Por convênio" %}</div> |
|||
<div class="collapsible-body"> |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="tipo_convenio_ignore" name="ignore_tipo_convenio" value="ignore" data-controls="tipo_convenio" /> |
|||
<span>{% trans "Ignorar" %}</span> |
|||
</label> |
|||
</p> |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="tipo_convenio_none" name="tipo_convenio" value="none"/> |
|||
<span>{% trans "Sem convênio" %}</span> |
|||
</label> |
|||
</p> |
|||
{% for c in tipos_convenio %} |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="tipo_convenio_{{ c.sigla }}" name="tipo_convenio" value="{{ c.sigla }}" checked/> |
|||
<span>{{ c.nome }}</span> |
|||
</label> |
|||
</p> |
|||
{% endfor %} |
|||
</div> |
|||
</li> |
|||
<li> |
|||
<div class="collapsible-header">{% trans "Por região/estado" %}</div> |
|||
<div class="collapsible-body"> |
|||
{% for s, n, ufs in regioes %} |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="regiao_{{ s }}" name="regiao" value="{{ s }}"/> |
|||
<span>{{ n }}</span> |
|||
</label> |
|||
</p> |
|||
<div class="region-ufs"> |
|||
{% for uf in ufs %} |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="uf_{{ uf.sigla }}" name="uf" value="{{ uf.sigla }}" data-regiao="{{ s }}" /> |
|||
<span>{{ uf.nome }}</span> |
|||
</label> |
|||
</p> |
|||
{% endfor %} |
|||
</div> |
|||
{% endfor %} |
|||
</div> |
|||
</li> |
|||
|
|||
<li> |
|||
<div class="collapsible-header">{% trans "Por gerente Interlegis" %}</div> |
|||
<div class="collapsible-body"> |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="gerente_ignore" name="gerente_ignore" value="ignore" data-controls="gerente" /> |
|||
<span>{% trans "Ignorar" %}</span> |
|||
</label> |
|||
</p> |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="gerente_none" name="gerente" value="none"/> |
|||
<span>{% trans "Sem gerente" %}</span> |
|||
</label> |
|||
</p> |
|||
{% for g in gerentes %} |
|||
<p> |
|||
<label> |
|||
<input type="checkbox" form="filterForm" id="gerente_{{ g.id|stringformat:"s" }}" name="gerente" value="{{ g.id|stringformat:"s" }}" checked/> |
|||
<span>{{ g.nome_completo }}</span> |
|||
</label> |
|||
</p> |
|||
{% endfor %} |
|||
</div> |
|||
</li> |
|||
<li> |
|||
<div class="collapsible-header">{% trans "Exportação de dados" %}</div> |
|||
<div class="collapsible-body"> |
|||
<button class="waves-effect waves-light btn-small btn-flat" name="reptype" value="lista" type="submit" form="filterForm"> |
|||
<i class="material-icons">picture_as_pdf</i> |
|||
Listagem |
|||
</button> |
|||
<button class="waves-effect waves-light btn-small btn-flat" name="reptype" value="exporta" type="submit" form="filterForm"> |
|||
Exportação completa |
|||
</button> |
|||
<button class="waves-effect waves-light btn-small btn-flat" name="reptype" value="exporta_servico" type="submit" form="filterForm"> |
|||
Exportar serviços |
|||
</button> |
|||
<button class="waves-effect waves-light btn-small btn-flat" name="reptype" value="exporta_convenio" type="submit" form="filterForm"> |
|||
Exportar convênios |
|||
</button> |
|||
<button class="waves-effect waves-light btn-small btn-flat" name="reptype" value="exporta_contato" type="submit" form="filterForm"> |
|||
Exportar contatos |
|||
</button> |
|||
</div> |
|||
</li> |
|||
|
|||
|
|||
|
|||
</ul> |
|||
</div> |
@ -0,0 +1,375 @@ |
|||
{% extends "admin/index.html" %} |
|||
{% load static %} |
|||
{% load i18n %} |
|||
|
|||
{% block extrastyle %} |
|||
{{ block.super }} |
|||
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.0/themes/smoothness/jquery-ui.css" /> |
|||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin=""/> |
|||
<link rel="stylesheet" href="{% static 'home/css/openmap.css' %}" /> |
|||
<link rel="stylesheet" href="{% static "admin/css/changelists.css" %}" type="text/css"/> |
|||
{% endblock %} |
|||
|
|||
{% block extrahead %} |
|||
{{ block.super }} |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> |
|||
<meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> |
|||
<meta name="robots" content="NONE,NOARCHIVE" /> |
|||
<script type="text/javascript"> |
|||
//<![CDATA[ |
|||
window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}"; |
|||
//]]> |
|||
</script> |
|||
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> |
|||
<!-- script src="https://code.jquery.com/ui/1.13.1/jquery-ui.min.js" integrity="sha256-eTyxS0rkjpLEo16uXTS0uVCS4815lc40K2iVpWDvdSY=" crossorigin="anonymous"></script --> |
|||
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script> |
|||
<script type="text/javascript" src="{% static "admin/js/core.js" %}"></script> |
|||
{% endblock %} |
|||
|
|||
{% block usertools %} |
|||
<div id="user-tools"> |
|||
<a href="{% url 'admin:index' %}">{% trans "Entrar" %}</a> |
|||
</div> |
|||
{% endblock %} |
|||
|
|||
{% block side_nav %} |
|||
{% if not nav_bar_minimized %} |
|||
<div id="side-bar" class="hide-on-med-and-down"> |
|||
{% include 'home/mapfilter.html' %} |
|||
</div> |
|||
{% endif %} |
|||
<div id="mobile-demo" class="sidenav"> |
|||
{% include 'home/mapfilter.html' with mobile=True %} |
|||
</div> |
|||
{% endblock %} |
|||
|
|||
{% block content %} |
|||
<div id="map"> |
|||
<!-- open street map --> |
|||
</div> |
|||
{% endblock %} |
|||
|
|||
{% block sidebar %}{% endblock %} |
|||
|
|||
{% block footer %} |
|||
{{ block.super }} |
|||
<script> |
|||
$(document).ready(function(){ |
|||
var options = {color: 'blue', fillColor: 'red', fillOpacity: 0.4, radius: 500}; |
|||
var unfiltred_options = {color: 'red', fillColor: 'red', fillOpacity: 0, radius: 1000}; |
|||
|
|||
$("#search-text").each(function() { |
|||
var search = M.Autocomplete.init(this, { |
|||
minLength: 3, |
|||
onAutocomplete: function(label) { |
|||
var data = search.options.ajaxdata; |
|||
for (k in data) { |
|||
if (data[k].label == label) { |
|||
mymap.flyTo([data[k].lat, data[k].lng], 8.5); |
|||
var encontrado = false; |
|||
mymap.eachLayer(function(layer) { |
|||
if (layer instanceof L.Circle) { |
|||
if (layer.orgao_id == data[k].id) { |
|||
layer.openPopup(); |
|||
encontrado = true; |
|||
} |
|||
} |
|||
}) |
|||
if (!encontrado) { |
|||
var mark = L.circle([data[k].lat, data[k].lng], unfiltred_options).bindTooltip(data[k].label).bindPopup("").addTo(mymap); |
|||
mark.orgao_id = data[k].id |
|||
mark.openPopup(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
}); |
|||
$(this).on("input change", function() { |
|||
if (this.value.length < search.options.minLength) { |
|||
return; |
|||
}; |
|||
$.ajax({ |
|||
url: "{% url "openmapsearch" %}", |
|||
data: {"q": this.value }, |
|||
dataType: "json", |
|||
appendTo: "#searchform", |
|||
success: function(data) { |
|||
console.log(data); |
|||
var result = {}; |
|||
for (k in data) { |
|||
result[data[k].label] = null; |
|||
} |
|||
search.updateData(result); |
|||
search.options['ajaxdata'] = data; |
|||
}, |
|||
}); |
|||
}); |
|||
}) |
|||
|
|||
$("input[type=checkbox]").change(filtra); |
|||
|
|||
var mymap = L.map('map', {zoomSnap: 0.01}).setView([-14.235004, -51.92528], 4.5); |
|||
|
|||
mymap.zoomControl.options.zoomInTitle = "{% trans 'Aproximar' %}"; |
|||
mymap.zoomControl.options.zoomOutTitle = "{% trans 'Afastar' %}"; |
|||
mymap.zoomControl.setPosition("bottomright"); |
|||
|
|||
L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', { |
|||
maxZoom: 18, |
|||
attribution: 'Map data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, ' + |
|||
'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>', |
|||
id: 'mapbox/streets-v11', |
|||
tileSize: 512, |
|||
zoomOffset: -1 |
|||
}).addTo(mymap); |
|||
|
|||
mymap.on("popupopen", function(e) { |
|||
var popup = e.popup; |
|||
mark = popup._source; |
|||
$.ajax({ |
|||
type: "GET", |
|||
url: "{% url "openmapdetail" "orgao_id" %}".replace("orgao_id", mark.orgao_id), |
|||
encode: true |
|||
}).done(function(content) { |
|||
popup.setContent(content); |
|||
}) |
|||
}) |
|||
|
|||
filtra(); |
|||
|
|||
function filtra() { |
|||
var name = $(this).attr("name"), |
|||
value = $(this).attr("value"), |
|||
checked = $(this).prop("checked"); |
|||
|
|||
if (name) { |
|||
$(`input[type=checkbox][name=${name}][value=${value}]`).prop("checked", checked); |
|||
} |
|||
|
|||
if (value == "ignore") { |
|||
controls = $(this).attr("data-controls"); |
|||
$("input[type=checkbox][name='"+controls+"']").prop("disabled", checked); |
|||
} |
|||
|
|||
if (value=="none") { |
|||
$("input[type=checkbox][name='" + name +"'][value!='none']").prop("checked", !checked); |
|||
} else { |
|||
if (checked) { |
|||
$("input[type=checkbox][name='" + name +"'][value='none']").prop("checked", false); |
|||
} |
|||
} |
|||
|
|||
if (name=='regiao') { |
|||
$("input[type=checkbox][name='uf'][data-regiao='"+value+"']").prop('checked', checked); |
|||
} |
|||
|
|||
if (name=='uf') { |
|||
var sigla_regiao = $(this).attr('data-regiao'), |
|||
regiao = $("input[type=checkbox][value='"+sigla_regiao+"']"); |
|||
if ($("input[type=checkbox][name='uf'][data-regiao='"+sigla_regiao+"']:checked").length == 0) { |
|||
$(regiao).prop('checked', false).prop("indeterminate", false); |
|||
} else if ($("input[type=checkbox][name='uf'][data-regiao='"+sigla_regiao+"']:not(:checked)").length == 0) { |
|||
$(regiao).prop('checked', true).prop("indeterminate", false); |
|||
} else { |
|||
$(regiao).prop("indeterminate", true) |
|||
} |
|||
} |
|||
|
|||
var formData = $("#filterForm").serializeArray(); |
|||
|
|||
mymap.eachLayer(function(layer) { |
|||
if (layer instanceof L.Circle) { |
|||
mymap.removeLayer(layer); |
|||
} |
|||
}) |
|||
|
|||
$.ajax({ |
|||
type: "GET", |
|||
url: "{% url "openmapdata" %}", |
|||
data: formData, |
|||
dataType: "json", |
|||
encode: true, |
|||
}).done(function(returnedData) { |
|||
$("#totalOrgao").text(returnedData.length); |
|||
returnedData.forEach(function(casa) { |
|||
if (casa[2] === null || casa[3] === null) { |
|||
alert(casa[1]+" está sem coordenadas geográficas e não será plotada"); |
|||
} else { |
|||
var mark = L.circle([casa[2], casa[3]], options).bindTooltip(casa[1]).bindPopup('<div class="preloader-wrapper small active"><div class="spinner-layer spinner-green-only"><div class="circle-clipper left"><div class="circle"></div></div><div class="gap-patch"><div class="circle"></div></div><div class="circle-clipper right"><div class="circle"></div></div></div></div>').addTo(mymap); |
|||
mark.orgao_id = casa[0] |
|||
} |
|||
}) |
|||
}) |
|||
} |
|||
}) |
|||
</script> |
|||
{% endblock %} |
|||
|
|||
{% comment %} |
|||
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
|||
<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}> |
|||
<head> |
|||
<title>{% trans 'SIGI' %}</title> |
|||
|
|||
</head> |
|||
<body> |
|||
<div class="mapbox"> |
|||
<div class="sigi-logo"> |
|||
<div> |
|||
<img src="{% static 'img/interlegis_60x60.png' %}" class='img-circle'/> |
|||
</div> |
|||
<div> |
|||
<h3>Interlegis</h3> |
|||
<a href="{% url 'admin:index' %}">Voltar ao SIGI</a> |
|||
</div> |
|||
</div> |
|||
<div id="map"> |
|||
<!-- open street map --> |
|||
</div> |
|||
|
|||
</div> |
|||
<script> |
|||
$(document).ready(function(){ |
|||
var options = {color: 'blue', fillColor: 'red', fillOpacity: 0.4, radius: 500}; |
|||
var unfiltred_options = {color: 'red', fillColor: 'red', fillOpacity: 0, radius: 1000}; |
|||
|
|||
$("#search-text").autocomplete({ |
|||
minLength: 3, |
|||
source: function(request, response) { |
|||
$.ajax({ |
|||
url: "{% url "openmapsearch" %}", |
|||
data: {q: request.term }, |
|||
dataType: "json", |
|||
appendTo: "#searchform", |
|||
success: function(data) { |
|||
console.log(data); |
|||
response(data); |
|||
}, |
|||
}) |
|||
}, |
|||
select: function( event, ui ) { |
|||
mymap.flyTo([ui.item.lat, ui.item.lng], 8.5); |
|||
var encontrado = false; |
|||
mymap.eachLayer(function(layer) { |
|||
if (layer instanceof L.Circle) { |
|||
if (layer.orgao_id == ui.item.id) { |
|||
layer.openPopup(); |
|||
encontrado = true; |
|||
} |
|||
} |
|||
}) |
|||
if (!encontrado) { |
|||
var mark = L.circle([ui.item.lat, ui.item.lng], unfiltred_options).bindTooltip(ui.item.label).bindPopup("").addTo(mymap); |
|||
mark.orgao_id = ui.item.id |
|||
mark.openPopup(); |
|||
} |
|||
|
|||
console.log(ui); |
|||
} |
|||
}); |
|||
$("#filterbox").on("shown.bs.collapse", function() { |
|||
$("#options-toggler span").removeClass("glyphicon-chevron-right").addClass("glyphicon-chevron-left") |
|||
}) |
|||
$("#filterbox").on("hidden.bs.collapse", function() { |
|||
$("#options-toggler span").removeClass("glyphicon-chevron-left").addClass("glyphicon-chevron-right") |
|||
}) |
|||
|
|||
$("input[type=checkbox]").change(filtra); |
|||
|
|||
var mymap = L.map('map', {zoomSnap: 0.01}).setView([-14.235004, -51.92528], 4.5); |
|||
|
|||
mymap.zoomControl.options.zoomInTitle = "{% trans 'Aproximar' %}"; |
|||
mymap.zoomControl.options.zoomOutTitle = "{% trans 'Afastar' %}"; |
|||
mymap.zoomControl.setPosition("bottomright"); |
|||
|
|||
L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', { |
|||
maxZoom: 18, |
|||
attribution: 'Map data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, ' + |
|||
'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>', |
|||
id: 'mapbox/streets-v11', |
|||
tileSize: 512, |
|||
zoomOffset: -1 |
|||
}).addTo(mymap); |
|||
|
|||
mymap.on("popupopen", function(e) { |
|||
var popup = e.popup; |
|||
mark = popup._source; |
|||
$.ajax({ |
|||
type: "GET", |
|||
url: "{% url "openmapdetail" 'orgao_id' %}".replace("orgao_id", mark.orgao_id), |
|||
encode: true |
|||
}).done(function(content) { |
|||
popup.setContent(content); |
|||
}) |
|||
}) |
|||
|
|||
filtra(); |
|||
|
|||
function filtra() { |
|||
var name = $(this).attr("name"), |
|||
value = $(this).attr("value"), |
|||
checked = $(this).prop("checked"); |
|||
|
|||
if (value == "ignore") { |
|||
controls = $(this).attr("data-controls"); |
|||
$("input[type=checkbox][name='"+controls+"']").prop("disabled", checked); |
|||
} |
|||
|
|||
if (value=="none") { |
|||
$("input[type=checkbox][name='" + name +"'][value!='none']").prop("checked", !checked); |
|||
} else { |
|||
if (checked) { |
|||
$("input[type=checkbox][name='" + name +"'][value='none']").prop("checked", false); |
|||
} |
|||
} |
|||
|
|||
if (name='regiao') { |
|||
$("input[type=checkbox][name='uf'][data-regiao='"+value+"']").prop('checked', checked); |
|||
} |
|||
|
|||
if (name='uf') { |
|||
var sigla_regiao = $(this).attr('data-regiao'), |
|||
regiao = $("input[type=checkbox][value='"+sigla_regiao+"']"); |
|||
if ($("input[type=checkbox][name='uf'][data-regiao='"+sigla_regiao+"']:checked").length == 0) { |
|||
$(regiao).prop('checked', false).prop("indeterminate", false); |
|||
} else if ($("input[type=checkbox][name='uf'][data-regiao='"+sigla_regiao+"']:not(:checked)").length == 0) { |
|||
$(regiao).prop('checked', true).prop("indeterminate", false); |
|||
} else { |
|||
$(regiao).prop("indeterminate", true) |
|||
} |
|||
} |
|||
|
|||
var formData = $("#filterForm").serializeArray(); |
|||
|
|||
mymap.eachLayer(function(layer) { |
|||
if (layer instanceof L.Circle) { |
|||
mymap.removeLayer(layer); |
|||
} |
|||
}) |
|||
|
|||
$.ajax({ |
|||
type: "GET", |
|||
url: "{% url "openmapdata" %}", |
|||
data: formData, |
|||
dataType: "json", |
|||
encode: true, |
|||
}).done(function(returnedData) { |
|||
$("#totalOrgao").text(returnedData.length); |
|||
returnedData.forEach(function(casa) { |
|||
if (casa[2] === null || casa[3] === null) { |
|||
alert(casa[1]+" está sem coordenadas geográficas e não será plotada"); |
|||
} else { |
|||
var mark = L.circle([casa[2], casa[3]], options).bindTooltip(casa[1]).bindPopup("").addTo(mymap); |
|||
mark.orgao_id = casa[0] |
|||
} |
|||
}) |
|||
}) |
|||
} |
|||
}) |
|||
</script> |
|||
</body> |
|||
</html> |
|||
|
|||
{% endcomment %} |
|||
|
@ -0,0 +1,23 @@ |
|||
<div class="card"> |
|||
<div class="card-header"> |
|||
<strong>{{ orgao.nome }}</strong> <a href="{% url "admin:casas_orgao_change" orgao.id %}" title="Editar" target="_blank"><span class="glyphicon glyphicon-edit"></span></a> |
|||
</div> |
|||
<div class="card-body"> |
|||
<table class="table-condensed"> |
|||
<tr><th>CNPJ</th><td>{{ orgao.cnpj }}</td></tr> |
|||
{% if orgao.data_instalacao %}<tr><th>Data de instalação</th><td>{{ orgao.data_instalacao }}</td></tr>{% endif %} |
|||
<tr><th>Endereço</th><td><address>{{ orgao.logradouro }}, {{ orgao.bairro }}, {{ orgao.municipio.nome }}, {{ orgao.municipio.uf.sigla }}, CEP: {{ orgao.cep }}</address></td></tr> |
|||
{% if orgao.telefones.all %}<tr><th>Telefones</th><td>{% for telefone in orgao.telefones.all %}<a href="tel:{{ telefone.numero }}">{{ telefone.numero }}</a>{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr>{% endif %} |
|||
{% if orgao.email %}<tr><th>E-mail</th><td><a href="mailto:{{ orgao.email }}">{{ orgao.email }}</a></td></tr>{% endif %} |
|||
{% if orgao.convenio_set.all %} |
|||
<tr><th>Convênios</th><td>{% for c in orgao.convenio_set.all %}<a href="{% url 'admin:convenios_convenio_change' c.id %}" target="_blank">{{ c }}</a>{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr> |
|||
{% endif %} |
|||
{% if orgao.servico_set.all %} |
|||
<tr><th>Serviços</th><td>{% for s in orgao.servico_set.all %}{% if s.url %}<a href="{{ s.url }}" target="_blank">{{ s }}</a>{% else %}{{ s }}{% endif %}{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr> |
|||
{% endif %} |
|||
{% if orgao.gerentes_interlegis.all %} |
|||
<tr><th>Gerentes</th><td>{% for g in orgao.gerentes_interlegis.all %}{{ g.nome_completo }}{% if not forloop.last %}, {% endif %} {% endfor %}</td></tr> |
|||
{% endif %} |
|||
</table> |
|||
</div> |
|||
</div> |
@ -1,15 +1,28 @@ |
|||
# coding: utf-8 |
|||
from django.conf.urls import patterns, url |
|||
from django.urls import path |
|||
from sigi.apps.home import views |
|||
|
|||
urlpatterns = [ |
|||
path('',views.openmap, name='openmap'), |
|||
path('openmapdata/', views.openmapdata, name='openmapdata'), |
|||
path('openmapdetail/<orgao_id>/', views.openmapdetail, name='openmapdetail'), |
|||
path('openmapsearch/', views.openmapsearch, name='openmapsearch'), |
|||
path('home/resumoseit/', views.resumo_seit, name="home_resumoseit"), |
|||
path('home/chartseit/', views.chart_seit, name="home_chartseit"), |
|||
path('home/chartperformance/', views.chart_performance, name="home_chartperformance"), |
|||
path('home/chartcarteira/', views.chart_carteira, name="home_chartcarteira"), |
|||
path('home/resumoconvenios/', views.resumo_convenios, name="home_resumoconvenios"), |
|||
path('home/report/semconvenio/', views.report_sem_convenio, name="home_reportsemconvenio"), |
|||
] |
|||
|
|||
urlpatterns = patterns('sigi.apps.home.views', |
|||
url(r'^$', 'index', name='sigi_index'), |
|||
url(r'^home/resumoconvenios/$', 'resumo_convenios', name="home_resumoconvenios"), |
|||
url(r'^home/resumoseit/$', 'resumo_seit', name="home_resumoseit"), |
|||
url(r'^home/chartseit/$', 'chart_seit', name="home_chartseit"), |
|||
url(r'^home/chartconvenios/$', 'chart_convenios', name="home_chartconvenios"), |
|||
url(r'^home/chartcarteira/$', 'chart_carteira', name="home_chartcarteira"), |
|||
url(r'^home/chartperformance/$', 'chart_performance', name="home_chartperformance"), |
|||
url(r'^home/report/semconvenio/$', 'report_sem_convenio', name="home_reportsemconvenio"), |
|||
# from django.conf.urls import patterns, url |
|||
|
|||
) |
|||
|
|||
# urlpatterns = patterns('sigi.apps.home.views', |
|||
# url(r'^$', 'index', name='sigi_index'), |
|||
# url(r'^home/chartseit/$', 'chart_seit', name="home_chartseit"), |
|||
# url(r'^home/chartconvenios/$', 'chart_convenios', name="home_chartconvenios"), |
|||
# url(r'^home/chartcarteira/$', 'chart_carteira', name="home_chartcarteira"), |
|||
# url(r'^home/chartperformance/$', 'chart_performance', name="home_chartperformance"), |
|||
# url(r'^home/report/semconvenio/$', 'report_sem_convenio', name="home_reportsemconvenio"), |
|||
|
|||
# ) |
|||
|
@ -0,0 +1,21 @@ |
|||
# Generated by Django 4.0.1 on 2022-02-13 13:17 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('ocorrencias', '0006_alter_anexo_arquivo_alter_anexo_descricao_and_more'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RemoveField( |
|||
model_name='comentario', |
|||
name='encaminhar_setor', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ocorrencia', |
|||
name='setor_responsavel', |
|||
), |
|||
] |
@ -0,0 +1,17 @@ |
|||
# Generated by Django 4.0.1 on 2022-02-13 13:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('ocorrencias', '0007_remove_comentario_encaminhar_setor_and_more'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RemoveField( |
|||
model_name='categoria', |
|||
name='setor_responsavel', |
|||
), |
|||
] |
@ -0,0 +1,198 @@ |
|||
{% extends "admin/base_site.html" %} |
|||
{% load i18n admin_static %} |
|||
{% load static from staticfiles %} |
|||
{% load thumbnail %} |
|||
|
|||
{% block extrastyle %} |
|||
{{ block.super }} |
|||
<link rel="stylesheet" type="text/css" href="{% static 'ocorrencias/css/jquery-ui.min.css' %}"/> |
|||
{% endblock %} |
|||
|
|||
{% block extrahead %} |
|||
{{ block.super }} |
|||
<script type="text/javascript" src="{% static 'admin/js/core.js' %}" ></script> |
|||
<script type="text/javascript" src="{% static 'admin/js/jquery.min.js' %}" ></script> |
|||
<script type="text/javascript" src="{% static 'admin/js/jquery.init.js' %}" ></script> |
|||
<script type="text/javascript" src="{% static 'ocorrencias/js/jquery-ui.min.js' %}" ></script> |
|||
{% endblock %} |
|||
|
|||
{% block coltype %}colMS{% endblock %} |
|||
|
|||
{% block content_title %}<h1>{{ panel_title }}</h1>{% endblock %} |
|||
|
|||
{% block content %} |
|||
{% url 'painel-ocorrencias' as url_painel %} |
|||
<div id="content-main" class="container-fluid"> |
|||
<div class="form-group"> |
|||
<div class="input-group"> |
|||
<input type="text" class="form-control" id="q" placeholder="{% trans 'Visitar o painel de' %}"> |
|||
<span class="input-group-btn"> |
|||
<button class="btn btn-default" type="button" onclick="window.location.href='{{ url_painel }}'">{% trans 'Meu painel' %}</button> |
|||
</span> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="nav nav-pills"> |
|||
<span class="glyphicon glyphicon-plus"></span> |
|||
<a role="button" data-toggle="collapse" href="#form_ocorrencia_panel" aria-expanded="false" aria-controls="form_ocorrencia_panel"> |
|||
{% trans "Registrar nova ocorrência" %} |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="collapse panel panel-default" id='form_ocorrencia_panel'> |
|||
{% include 'ocorrencias/ocorrencia_form.html' %} |
|||
</div> |
|||
|
|||
{% if paineis %} |
|||
<ul class="nav nav-pills"> |
|||
{% for k, v in paineis.iteritems %} |
|||
<li role="presentation" class="{% if k == painel %}active{% endif %}"> |
|||
<a href="{{ url_painel }}?type=servidor&id={{ servidor.id }}&painel={{ k }}"> |
|||
{{ v }}</a></li> |
|||
{% endfor %} |
|||
</ul> |
|||
{% endif %} |
|||
|
|||
<div class="row"> |
|||
<div id="ocorrencias_display" class="col-md-12"> |
|||
{% for ocorrencia in ocorrencias %} |
|||
{% include 'ocorrencias/ocorrencia_snippet.html' %} |
|||
{% empty %} |
|||
<div class="panel panel-default"> |
|||
<div class="panel-body"> |
|||
<p>{% trans 'Nenhuma ocorrência encontrada.' %}</p> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<script type="text/javascript"> |
|||
$( document ).ready(function() { |
|||
$.ajaxSetup({ |
|||
beforeSend: function(xhr, settings) { |
|||
if (!(/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type)) && !this.crossDomain) { |
|||
var cookieValue = null, name = 'csrftoken'; |
|||
if (document.cookie && document.cookie != '') { |
|||
var cookies = document.cookie.split(';'); |
|||
for (var i = 0; i < cookies.length; i++) { |
|||
var cookie = jQuery.trim(cookies[i]); |
|||
if (cookie.substring(0, name.length + 1) == (name + '=')) { |
|||
cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
xhr.setRequestHeader("X-CSRFToken", cookieValue); |
|||
} |
|||
} |
|||
}); |
|||
|
|||
$("#q").autocomplete({ |
|||
source: "{% url 'painel-buscanominal' %}", |
|||
select: function(event, ui) { |
|||
window.location.replace("{{ url_painel }}?type="+ui.item.origin+"&id="+ui.item.value); |
|||
ui.item.value = ui.item.label |
|||
} |
|||
}) |
|||
|
|||
$('input[name^=ocorrencia-]').on('change', function() { |
|||
var $this = $(this), |
|||
data = {'id_ocorrencia': $this.attr('name').split('-')[1], |
|||
'prioridade': $this.attr('value')}; |
|||
|
|||
$.post('{% url "ocorrencia-mudaprioridade" %}', data, function(result) { |
|||
if (result.result == 'error') { |
|||
alert(result.message); |
|||
$this.reset(); |
|||
} |
|||
}); |
|||
}) |
|||
|
|||
function inclui_comentario( event ) { |
|||
event.preventDefault() |
|||
|
|||
var $this = $(this); |
|||
|
|||
$.post($this.attr('action'), $this.serialize(), function( result ) { |
|||
$('div[id=ticket_'+result.ocorrencia_id+']').html(result.ocorrencia_panel); |
|||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
|||
}); |
|||
} |
|||
|
|||
function inclui_ocorrencia( event ) { |
|||
event.preventDefault() |
|||
|
|||
var $this = $(this); |
|||
|
|||
$.post($this.attr('action'), $this.serialize(), function( result ) { |
|||
$("#form_ocorrencia_panel").html(result.ocorrencia_form); |
|||
if (result.result == 'success') { |
|||
$("#form_ocorrencia_panel").collapse('hide'); |
|||
$("#ocorrencias_display").prepend(result.ocorrencia_panel); |
|||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
|||
} |
|||
$('#form_ocorrencia').on('submit', inclui_ocorrencia); |
|||
}); |
|||
} |
|||
|
|||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
|||
$('#form_ocorrencia').on('submit', inclui_ocorrencia); |
|||
}); |
|||
|
|||
function remove_anexo(link) { |
|||
var $this = $(link), |
|||
url = $this.attr('href'), |
|||
div = $("div#anexos_"+$this.attr('data-ocorrencia-id')), |
|||
link = $("a#link_anexos_"+$this.attr('data-ocorrencia-id')); |
|||
|
|||
$( 'body' ).append('<div id="dialog-confirm" title="{% trans "Excluir anexo?" %}"><p><span class="glyphicon glyphicon-alert" style="float:left; margin:0 7px 20px 0;"></span>{% trans "Este anexo será definitivamente excluído e não poderá ser recuperado. Você confirma a exclusão?" %}</p></div>'); |
|||
|
|||
var dialog = $("#dialog-confirm"); |
|||
|
|||
dialog.dialog({ |
|||
resizable: true, |
|||
modal: true, |
|||
buttons: { |
|||
"{% trans 'Excluir' %}": function() { |
|||
$.get(url, function(result) { |
|||
if (result.result == 'error') { |
|||
alert(result.message); |
|||
} |
|||
if (result.result == 'success') { |
|||
div.html(result.anexos_panel); |
|||
link.html(result.link_label); |
|||
} |
|||
}); |
|||
dialog.dialog( 'destroy' ); |
|||
}, |
|||
"{% trans 'Cancelar' %}": function() { |
|||
dialog.dialog( 'destroy' ); |
|||
} |
|||
} |
|||
}); |
|||
return false; |
|||
} |
|||
|
|||
function dismissAddAnexoPopup(win, ocorrencia_id) { |
|||
var div = $("div#anexos_"+ocorrencia_id), |
|||
link = $("a#link_anexos_"+ocorrencia_id); |
|||
|
|||
win.close(); |
|||
|
|||
$.get('{% url "ocorrencia-anexosnippet" %}?ocorrencia_id='+ocorrencia_id, function( result ) { |
|||
div.html(result); |
|||
}); |
|||
} |
|||
|
|||
function showAddAnexoPopup(link) { |
|||
var $this = $(link), |
|||
href = $this.attr('href'), |
|||
win = window.open(href, '', 'height=500,width=800,resizable=yes,scrollbars=yes'); |
|||
win.focus(); |
|||
return false; |
|||
} |
|||
</script> |
|||
|
|||
{% endblock %} |
@ -1,198 +1,211 @@ |
|||
{% extends "admin/base_site.html" %} |
|||
{% load i18n admin_static %} |
|||
{% load static from staticfiles %} |
|||
{% load thumbnail %} |
|||
|
|||
{% load i18n static admin_urls %} |
|||
{% block extrastyle %} |
|||
{{ block.super }} |
|||
<link rel="stylesheet" type="text/css" href="{% static 'ocorrencias/css/jquery-ui.min.css' %}"/> |
|||
{% endblock %} |
|||
|
|||
{% block extrahead %} |
|||
{{ block.super }} |
|||
<script type="text/javascript" src="{% static 'admin/js/core.js' %}" ></script> |
|||
<script type="text/javascript" src="{% static 'admin/js/jquery.min.js' %}" ></script> |
|||
<script type="text/javascript" src="{% static 'admin/js/jquery.init.js' %}" ></script> |
|||
<script type="text/javascript" src="{% static 'ocorrencias/js/jquery-ui.min.js' %}" ></script> |
|||
{{ block.super }} |
|||
<style> |
|||
#content { |
|||
display: block; |
|||
} |
|||
.user-image { |
|||
width: 64px; |
|||
height: 64px; |
|||
font-size: 64px !important; |
|||
} |
|||
commenter-image { |
|||
width: 32px; |
|||
height: 32px; |
|||
font-size: 32px !important; |
|||
} |
|||
.card-details, .user-name { |
|||
font-size: 10px; |
|||
} |
|||
.priority { |
|||
background-color: grey; |
|||
} |
|||
.priority { |
|||
background-color: antiquewhite; |
|||
margin-left: 5px; |
|||
min-width: 60px; |
|||
} |
|||
.chip>img { |
|||
float: left; |
|||
margin: 0 8px 0 -12px; |
|||
height: 32px; |
|||
width: 32px; |
|||
border-radius: 50%; |
|||
} |
|||
</style> |
|||
{% endblock %} |
|||
|
|||
{% block coltype %}colMS{% endblock %} |
|||
|
|||
{% block content_title %}<h1>{{ panel_title }}</h1>{% endblock %} |
|||
|
|||
{% block breadcrumbs %}{% endblock %} |
|||
{% block content %} |
|||
{% url 'painel-ocorrencias' as url_painel %} |
|||
<div id="content-main" class="container-fluid"> |
|||
<div class="form-group"> |
|||
<div class="input-group"> |
|||
<input type="text" class="form-control" id="q" placeholder="{% trans 'Visitar o painel de' %}"> |
|||
<span class="input-group-btn"> |
|||
<button class="btn btn-default" type="button" onclick="window.location.href='{{ url_painel }}'">{% trans 'Meu painel' %}</button> |
|||
</span> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="nav nav-pills"> |
|||
<span class="glyphicon glyphicon-plus"></span> |
|||
<a role="button" data-toggle="collapse" href="#form_ocorrencia_panel" aria-expanded="false" aria-controls="form_ocorrencia_panel"> |
|||
{% trans "Registrar nova ocorrência" %} |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="collapse panel panel-default" id='form_ocorrencia_panel'> |
|||
{% include 'ocorrencias/ocorrencia_form.html' %} |
|||
</div> |
|||
|
|||
{% if paineis %} |
|||
<ul class="nav nav-pills"> |
|||
{% for k, v in paineis.iteritems %} |
|||
<li role="presentation" class="{% if k == painel %}active{% endif %}"> |
|||
<a href="{{ url_painel }}?type=servidor&id={{ servidor.id }}&painel={{ k }}"> |
|||
{{ v }}</a></li> |
|||
{% endfor %} |
|||
</ul> |
|||
{% endif %} |
|||
|
|||
<div class="row"> |
|||
<div id="ocorrencias_display" class="col-md-12"> |
|||
{% for ocorrencia in ocorrencias %} |
|||
{% include 'ocorrencias/ocorrencia_snippet.html' %} |
|||
{% empty %} |
|||
<div class="panel panel-default"> |
|||
<div class="panel-body"> |
|||
<p>{% trans 'Nenhuma ocorrência encontrada.' %}</p> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<script type="text/javascript"> |
|||
$( document ).ready(function() { |
|||
$.ajaxSetup({ |
|||
beforeSend: function(xhr, settings) { |
|||
if (!(/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type)) && !this.crossDomain) { |
|||
var cookieValue = null, name = 'csrftoken'; |
|||
if (document.cookie && document.cookie != '') { |
|||
var cookies = document.cookie.split(';'); |
|||
for (var i = 0; i < cookies.length; i++) { |
|||
var cookie = jQuery.trim(cookies[i]); |
|||
if (cookie.substring(0, name.length + 1) == (name + '=')) { |
|||
cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
xhr.setRequestHeader("X-CSRFToken", cookieValue); |
|||
} |
|||
} |
|||
}); |
|||
|
|||
$("#q").autocomplete({ |
|||
source: "{% url 'painel-buscanominal' %}", |
|||
select: function(event, ui) { |
|||
window.location.replace("{{ url_painel }}?type="+ui.item.origin+"&id="+ui.item.value); |
|||
ui.item.value = ui.item.label |
|||
} |
|||
}) |
|||
|
|||
$('input[name^=ocorrencia-]').on('change', function() { |
|||
var $this = $(this), |
|||
data = {'id_ocorrencia': $this.attr('name').split('-')[1], |
|||
'prioridade': $this.attr('value')}; |
|||
|
|||
$.post('{% url "ocorrencia-mudaprioridade" %}', data, function(result) { |
|||
if (result.result == 'error') { |
|||
alert(result.message); |
|||
$this.reset(); |
|||
} |
|||
}); |
|||
}) |
|||
|
|||
function inclui_comentario( event ) { |
|||
event.preventDefault() |
|||
|
|||
var $this = $(this); |
|||
|
|||
$.post($this.attr('action'), $this.serialize(), function( result ) { |
|||
$('div[id=ticket_'+result.ocorrencia_id+']').html(result.ocorrencia_panel); |
|||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
|||
}); |
|||
} |
|||
|
|||
function inclui_ocorrencia( event ) { |
|||
event.preventDefault() |
|||
|
|||
var $this = $(this); |
|||
|
|||
$.post($this.attr('action'), $this.serialize(), function( result ) { |
|||
$("#form_ocorrencia_panel").html(result.ocorrencia_form); |
|||
if (result.result == 'success') { |
|||
$("#form_ocorrencia_panel").collapse('hide'); |
|||
$("#ocorrencias_display").prepend(result.ocorrencia_panel); |
|||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
|||
} |
|||
$('#form_ocorrencia').on('submit', inclui_ocorrencia); |
|||
}); |
|||
} |
|||
|
|||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
|||
$('#form_ocorrencia').on('submit', inclui_ocorrencia); |
|||
}); |
|||
|
|||
function remove_anexo(link) { |
|||
var $this = $(link), |
|||
url = $this.attr('href'), |
|||
div = $("div#anexos_"+$this.attr('data-ocorrencia-id')), |
|||
link = $("a#link_anexos_"+$this.attr('data-ocorrencia-id')); |
|||
|
|||
$( 'body' ).append('<div id="dialog-confirm" title="{% trans "Excluir anexo?" %}"><p><span class="glyphicon glyphicon-alert" style="float:left; margin:0 7px 20px 0;"></span>{% trans "Este anexo será definitivamente excluído e não poderá ser recuperado. Você confirma a exclusão?" %}</p></div>'); |
|||
|
|||
var dialog = $("#dialog-confirm"); |
|||
|
|||
dialog.dialog({ |
|||
resizable: true, |
|||
modal: true, |
|||
buttons: { |
|||
"{% trans 'Excluir' %}": function() { |
|||
$.get(url, function(result) { |
|||
if (result.result == 'error') { |
|||
alert(result.message); |
|||
} |
|||
if (result.result == 'success') { |
|||
div.html(result.anexos_panel); |
|||
link.html(result.link_label); |
|||
} |
|||
}); |
|||
dialog.dialog( 'destroy' ); |
|||
}, |
|||
"{% trans 'Cancelar' %}": function() { |
|||
dialog.dialog( 'destroy' ); |
|||
} |
|||
} |
|||
}); |
|||
return false; |
|||
} |
|||
|
|||
function dismissAddAnexoPopup(win, ocorrencia_id) { |
|||
var div = $("div#anexos_"+ocorrencia_id), |
|||
link = $("a#link_anexos_"+ocorrencia_id); |
|||
|
|||
win.close(); |
|||
|
|||
$.get('{% url "ocorrencia-anexosnippet" %}?ocorrencia_id='+ocorrencia_id, function( result ) { |
|||
div.html(result); |
|||
}); |
|||
} |
|||
|
|||
function showAddAnexoPopup(link) { |
|||
var $this = $(link), |
|||
href = $this.attr('href'), |
|||
win = window.open(href, '', 'height=500,width=800,resizable=yes,scrollbars=yes'); |
|||
win.focus(); |
|||
return false; |
|||
} |
|||
</script> |
|||
<div class="row"> |
|||
<div class="col s12"><h1>{{ panel_title }}</h1></div> |
|||
</div> |
|||
<div class="row"> |
|||
<div class="col s12"> |
|||
{% for id, text in paineis.items %} |
|||
<a class="waves-effect waves-light btn-small{% if id != painel %} btn-flat{% endif %}" href="?painel={{ id }}">{{ text }}</a> |
|||
{% endfor %} |
|||
</div> |
|||
</div> |
|||
<div class="row"> |
|||
<div class="col s12"> |
|||
<button class="waves-effect waves-light btn-small btn-flat modal-trigger" href="#nova_ocorrencia">{% trans "Nova ocorrência" %}</button> |
|||
</div> |
|||
</div> |
|||
<div id="nova_ocorrencia" class="modal"> |
|||
<div class="modal-content"> |
|||
<h4>{% trans "Nova ocorrência" %}</h4> |
|||
{{ ocorrencia_form }} |
|||
</div> |
|||
<div class="modal-footer"> |
|||
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a> |
|||
</div> |
|||
</div> |
|||
{% for ocorrencia in ocorrencias %} |
|||
<div class="row"> |
|||
<div class="col s12"> |
|||
<div class="card hoverable"> |
|||
<div class="card-content"> |
|||
<span class="card-title"> |
|||
<a href="{% url "admin:ocorrencias_ocorrencia_change" ocorrencia.id %}"><i class="material-icons right">edit</i></a> |
|||
{{ ocorrencia.casa_legislativa.nome }}, {{ ocorrencia.casa_legislativa.municipio.uf.sigla }} |
|||
<p class="card-details"> |
|||
{% blocktrans with data_criacao=ocorrencia.data_criacao tipo_contato=ocorrencia.tipo_contato categoria=ocorrencia.categoria status=ocorrencia.get_status_display %} |
|||
Criado em {{ data_criacao }} via {{ tipo_contato }} solicitando {{ categoria }}, com status {{ status }} |
|||
{% endblocktrans %} |
|||
</p> |
|||
<p class="card-details"> |
|||
<strong>{% trans "Gerentes" %}:</strong> |
|||
{% for gerente in ocorrencia.casa_legislativa.gerentes_interlegis.all %} |
|||
<div class="chip"> |
|||
{% if gerente.foto %} |
|||
<img src="{{ gerente.foto.url }}"> |
|||
{% endif %} |
|||
<a href="./">{{ gerente.get_apelido }}</a> |
|||
</div> |
|||
{% endfor %} |
|||
</p> |
|||
</span> |
|||
<div class="row"> |
|||
<div class="col s3 m1 center-align"> |
|||
<a href="./"> |
|||
{% if ocorrencia.servidor_registro.foto %} |
|||
<img class="circle user-image" src="{{ MEDIA_URL }}{{ ocorrencia.servidor_registro.foto }}"/> |
|||
{% else %} |
|||
<i class="material-icons circle user-image">account_circle</i> |
|||
{% endif %} |
|||
</a> |
|||
<span class="user-name">{{ ocorrencia.servidor_registro.get_apelido }}</span> |
|||
</div> |
|||
<div class="col s9 m11"> |
|||
<p>{{ ocorrencia.descricao }}</p> |
|||
<div> |
|||
{% trans "Prioridade" %}: <a class='dropdown-trigger btn-small btn-flat' href='#' data-target='prioridade-{{ ocorrencia.id }}'>{{ ocorrencia.get_prioridade_display }}</a> |
|||
<ul id='prioridade-{{ ocorrencia.id }}' class='dropdown-content'> |
|||
{% for key, name in PRIORITY_CHOICES %} |
|||
{% if key != ocorrencia.prioridade %} |
|||
<li><a href="#!">{{ name }}</a></li> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</ul> |
|||
<a class="waves-effect waves-light btn-small btn-flat right modal-trigger" href="#modal{{ ocorrencia.id}}">{% blocktranslate count counter=ocorrencia.anexo_set.count %}Um anexo{% plural %}{{ counter }} anexos{% endblocktranslate %}</a> |
|||
<div id="modal{{ ocorrencia.id}}" class="modal"> |
|||
<div class="modal-content"> |
|||
<h4>Anexos</h4> |
|||
<ul class="collection"> |
|||
{% for anexo in ocorrencia.anexo_set.all %} |
|||
<li class="collection-item"> |
|||
<div> |
|||
<a href="{{ anexo.arquivo.url }}" download>{{ anexo.data_pub|date:"SHORT_DATE_FORMAT" }} | {{ anexo.descricao }}</a> |
|||
<a href="#!" class="secondary-content"><i class="material-icons">delete_forever</i></a> |
|||
</div> |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</div> |
|||
<div class="modal-footer"> |
|||
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="card-content"> |
|||
<ul class="collection"> |
|||
<li class="collection-item avatar"> |
|||
{% if usuario.foto %} |
|||
<img class="circle commenter-image" src="{{ MEDIA_URL }}{{ servidor_registro.foto }}"/> |
|||
{% else %} |
|||
<i class="material-icons circle">account_circle</i> |
|||
{% endif %} |
|||
<form class="row" id="comentar_ocorrencia_{{ ocorrencia.id|safe }}" action="#!" method="post" data-ocorrencia-id="{{ ocorrencia.id|safe }}"> |
|||
{% csrf_token %} |
|||
<p>{% trans "Comentar" %}:</p> |
|||
{% for field in comentario_form %} |
|||
{% if field.name == 'ocorrencia' %} |
|||
<input type='hidden' name='ocorrencia' value='{{ ocorrencia.id|safe }}'/> |
|||
{% elif field.name == 'novo_status' %} |
|||
<div class="input-field col m4 s12"> |
|||
<select name="novo_status" id="id_novo_status_{{ ocorrencia.id|safe }}" class="browser-default"> |
|||
{% for value, label in field.field.widget.choices %} |
|||
{% if value == '' %} |
|||
<option value="{{ value|stringformat:'s' }}">{{ label }}</option> |
|||
{% elif value != 1 %} |
|||
{% if ocorrencia.status < 3 and value > 2 %} |
|||
<option value="{{ value|stringformat:'s' }}">{{ label }}</option> |
|||
{% endif %} |
|||
{% if ocorrencia.status > 2 and value == 2 %} |
|||
<option value="{{ value|stringformat:'s' }}">{{ label }}</option> |
|||
{% endif %} |
|||
{% endif %} |
|||
{% endfor %} |
|||
</select> |
|||
</div> |
|||
{% else %} |
|||
<div class="input-field col m8 s12"> |
|||
{{ field }} |
|||
</div> |
|||
{% endif %} |
|||
{% endfor %} |
|||
<button type="submit" class="secondary-content"><i class="material-icons">send</i></button> |
|||
</form> |
|||
</li> |
|||
{% for comentario in ocorrencia.comentarios.all %} |
|||
<li class="collection-item avatar"> |
|||
{% if comentario.usuario.foto %} |
|||
<img class="circle" src="{{ MEDIA_URL }}{{ comentario.usuario.foto }}"/> |
|||
{% else %} |
|||
<i class="material-icons circle ">account_circle</i> |
|||
{% endif %} |
|||
<p>{% blocktranslate with data=comentario.data_criacao nome=comentario.usuario.get_apelido %} |
|||
Em {{ data }}, {{ nome }} disse: |
|||
{% endblocktranslate %}</p> |
|||
<span class="title">{{ comentario.descricao }}</span> |
|||
{% if comentario.novo_status %} |
|||
<p>{% blocktranslate with status=comentario.get_novo_status_display|default:"-" %} |
|||
Status: {{ status }} |
|||
{% endblocktranslate %}</p> |
|||
{% endif %} |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
{% endblock %} |
|||
|
|||
{% block footer %} |
|||
{{ block.super }} |
|||
<script> |
|||
$(document).ready(function(){ |
|||
var elems = document.querySelectorAll('.dropdown-trigger'); |
|||
var instances = M.Dropdown.init(elems, {}); |
|||
var elems = document.querySelectorAll('.modal'); |
|||
var instances = M.Modal.init(elems, {}); |
|||
}); |
|||
</script> |
|||
{% endblock %} |
@ -1,19 +1,30 @@ |
|||
# coding: utf-8 |
|||
from django.conf.urls import patterns, url |
|||
|
|||
|
|||
urlpatterns = patterns( |
|||
'sigi.apps.ocorrencias.views', |
|||
# Painel de ocorrencias |
|||
url(r'^painel/$', 'painel_ocorrencias', name='painel-ocorrencias'), |
|||
url(r'^painel/buscanominal/$', 'busca_nominal', {"origin": "tudo"}, name='painel-buscanominal'), |
|||
url(r'^painel/buscanominal/casa/$', 'busca_nominal', {"origin": "casa"}, name='painel-buscacasa'), |
|||
url(r'^painel/buscanominal/servidor/$', 'busca_nominal', {"origin": "servidor"}, name='painel-buscaservidor'), |
|||
url(r'^painel/buscanominal/servico/$', 'busca_nominal', {"origin": "servico"}, name='painel-buscaservico'), |
|||
url(r'^mudaprioridade/$', 'muda_prioridade', name='ocorrencia-mudaprioridade'), |
|||
url(r'^excluianexo/$', 'exclui_anexo', name='ocorrencia-excluianexo'), |
|||
url(r'^incluianexo/$', 'inclui_anexo', name='ocorrencia-incluianexo'), |
|||
url(r'^anexosnippet/$', 'anexo_snippet', name='ocorrencia-anexosnippet'), |
|||
url(r'^incluicomentario/$', 'inclui_comentario', name='ocorrencia-incluicomentario'), |
|||
url(r'^incluiocorrencia/$', 'inclui_ocorrencia', name='ocorrencia-incluiocorrencia'), |
|||
) |
|||
from django.urls import path |
|||
from sigi.apps.ocorrencias.views import painel_ocorrencias |
|||
|
|||
urlpatterns = [ |
|||
path('painel/', painel_ocorrencias, name='painel-ocorrencias'), |
|||
] |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
# # coding: utf-8 |
|||
# from django.conf.urls import patterns, url |
|||
|
|||
|
|||
# urlpatterns = patterns( |
|||
# 'sigi.apps.ocorrencias.views', |
|||
# # Painel de ocorrencias |
|||
# url(r'^painel/$', 'painel_ocorrencias', name='painel-ocorrencias'), |
|||
# url(r'^painel/buscanominal/$', 'busca_nominal', {"origin": "tudo"}, name='painel-buscanominal'), |
|||
# url(r'^painel/buscanominal/casa/$', 'busca_nominal', {"origin": "casa"}, name='painel-buscacasa'), |
|||
# url(r'^painel/buscanominal/servidor/$', 'busca_nominal', {"origin": "servidor"}, name='painel-buscaservidor'), |
|||
# url(r'^painel/buscanominal/servico/$', 'busca_nominal', {"origin": "servico"}, name='painel-buscaservico'), |
|||
# url(r'^mudaprioridade/$', 'muda_prioridade', name='ocorrencia-mudaprioridade'), |
|||
# url(r'^excluianexo/$', 'exclui_anexo', name='ocorrencia-excluianexo'), |
|||
# url(r'^incluianexo/$', 'inclui_anexo', name='ocorrencia-incluianexo'), |
|||
# url(r'^anexosnippet/$', 'anexo_snippet', name='ocorrencia-anexosnippet'), |
|||
# url(r'^incluicomentario/$', 'inclui_comentario', name='ocorrencia-incluicomentario'), |
|||
# url(r'^incluiocorrencia/$', 'inclui_ocorrencia', name='ocorrencia-incluiocorrencia'), |
|||
# ) |
|||
|
@ -1 +0,0 @@ |
|||
{% extends "change_form_with_report_and_labels.html" %} |
@ -0,0 +1,37 @@ |
|||
table.servicos { |
|||
width: 100%; |
|||
} |
|||
|
|||
table.numeros>tbody>tr>td { |
|||
text-align: right; |
|||
} |
|||
.app>.card>.card-content>.card-title { |
|||
font-size: 16px; |
|||
font-weight: bolder; |
|||
} |
|||
|
|||
.full-preloader { |
|||
width: 100%; |
|||
height: 100%; |
|||
background-color: rgb(255,255,255,0.8); |
|||
position: absolute; |
|||
z-index: 2; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-around; |
|||
} |
|||
|
|||
.user_thumb { |
|||
width: 24px; |
|||
height: 24px; |
|||
margin-right: 1rem; |
|||
} |
|||
|
|||
.gerente_selector { |
|||
width: 100%; |
|||
border: none; |
|||
} |
|||
|
|||
.card-links { |
|||
padding: 0 24px; |
|||
} |
After Width: | Height: | Size: 2.1 KiB |
@ -0,0 +1,72 @@ |
|||
$(document).ready(function () { |
|||
Chart.defaults.plugins.legend.labels.usePointStyle = true; |
|||
setlinks(); |
|||
$("div[data-source]").each(function(index, container) { |
|||
var container = $(container); |
|||
var url = container.attr('data-source'); |
|||
get_content(container, url); |
|||
}); |
|||
$("canvas[data-source]").each(function(index, canvas) { |
|||
var canvas = $(canvas) |
|||
var url = canvas.attr("data-source"); |
|||
plot_chart(canvas, url); |
|||
}); |
|||
}); |
|||
|
|||
function setlinks() { |
|||
$('.modal').modal(); |
|||
$('.dropdown-trigger').dropdown(); |
|||
$('.collapsible').collapsible(); |
|||
$("a[data-target]").off('click').on('click', function(e) { |
|||
e.preventDefault(); |
|||
var $this = $(this); |
|||
var target = $("#"+$this.attr('data-target')); |
|||
var url = $this.attr('href'); |
|||
if (target.is("canvas")) { |
|||
plot_chart(target, url); |
|||
} else if (target.is("div")) { |
|||
get_content(target, url); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
function get_content(container, url) { |
|||
container.closest('.card').find('.full-preloader').removeClass('hide'); |
|||
$.get(url, function(data) { |
|||
container.html(data); |
|||
container.closest('.card').find('.full-preloader').addClass('hide'); |
|||
setlinks(); |
|||
}).fail(function() { |
|||
container.closest('.card').find('.full-preloader').html("Ocorreu um erro. Tente recarregar a página"); |
|||
}); |
|||
} |
|||
|
|||
function plot_chart(canvas, url) { |
|||
canvas.closest('.card').find('.full-preloader').removeClass('hide'); |
|||
$.get(url, function(data) { |
|||
var chart_name = canvas.attr("data-chart-name"); |
|||
var has_action_links = canvas.attr("data-has-action-links"); |
|||
|
|||
var new_canvas = $(canvas.clone()).insertBefore(canvas); |
|||
canvas.remove(); |
|||
canvas = new_canvas; |
|||
canvas.removeClass("hide"); |
|||
|
|||
var ctx = canvas.get(0).getContext("2d"); |
|||
var myChart = new Chart(ctx, data); |
|||
|
|||
if (has_action_links) { |
|||
if (data.actionblock) { |
|||
$(`#${chart_name}-action-links`).html(data.actionblock).removeClass("hide"); |
|||
} else { |
|||
$(`#${chart_name}-previlink`).attr('href', data.prevlink); |
|||
$(`#${chart_name}-nextlink`).attr('href', data.nextlink); |
|||
$(`#${chart_name}-action-links`).removeClass("hide"); |
|||
} |
|||
} |
|||
setlinks(); |
|||
canvas.closest('.card').find('.full-preloader').addClass('hide'); |
|||
}).fail(function() { |
|||
canvas.closest('.card').find('.full-preloader').html("Ocorreu um erro. Tente recarregar a página"); |
|||
}); |
|||
} |
@ -0,0 +1,29 @@ |
|||
{% extends "admin/base_site.html" %} |
|||
{% load static i18n %} |
|||
|
|||
{% block theme %} |
|||
<link rel="stylesheet" type="text/css" href="{% static 'material/admin/css/base_site-green.min.css' %}"> |
|||
<link rel="stylesheet" type="text/css" href="{% static 'material/admin/css/base_site-theme.min.css' %}"> |
|||
{% endblock %} |
|||
|
|||
{% block userlinks %} |
|||
{% block welcome-msg %}{% endblock %} |
|||
{% if site_url %} |
|||
<a href="{{ site_url }}">{% trans 'Mapa' %}</a> |
|||
{% endif %} |
|||
{% if user.is_active and user.is_staff %} |
|||
{% url 'django-admindocs-docroot' as docsroot %} |
|||
{% if docsroot %} |
|||
<a href="{{ docsroot }}">{% trans 'Documentation' %}</a> |
|||
{% endif %} |
|||
{% endif %} |
|||
{% if user.has_usable_password %} |
|||
<a href="{% url 'admin:password_change' %}"> |
|||
{% trans 'Change password' %} |
|||
</a> |
|||
{% endif %} |
|||
<a href="{% url 'admin:logout' %}"> |
|||
{% trans 'Log out' %} |
|||
<i class="material-icons" aria-hidden="true">exit_to_app</i> |
|||
</a> |
|||
{% endblock %} |
@ -1,6 +1,21 @@ |
|||
{% extends "admin/index.html" %} |
|||
{% load static %} |
|||
{% load static i18n %} |
|||
|
|||
{% block content %} |
|||
{% include 'sigi/snippets/dashboard.html' %} |
|||
{% block extrastyle %} |
|||
{{ block.super }} |
|||
<link rel="stylesheet" type="text/css" href="{% static 'css/dashboard.css' %}"> |
|||
{% endblock %} |
|||
|
|||
{% block extrahead %} |
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js" integrity="sha512-QSkVNOCYLtj73J4hbmVoOV6KVZuMluZlioC+trLpewV8qMjsWqlIQvkn1KGX2StWvPMdWGBqim1xlC8krl1EKQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> |
|||
{{ block.super }} |
|||
{% endblock %} |
|||
|
|||
{% block content %} |
|||
{% include 'sigi/snippets/dashboard.html' %} |
|||
{% endblock %} |
|||
|
|||
{% block footer %} |
|||
{{ block.super }} |
|||
<script src="{% static 'js/dashboard.js' %}"></script> |
|||
{% endblock footer %} |
|||
|
@ -1,31 +1,21 @@ |
|||
{% load i18n material menus %} |
|||
|
|||
<div class="scroll-pane"> |
|||
{% if not mobile %} |
|||
<i class="material-icons minimize nav-bar" aria-hidden="true" title="{% trans 'Minimize' %}">close</i> |
|||
{% endif %} |
|||
{% if available_apps %} |
|||
<ul class="collapsible"> |
|||
<li> |
|||
<div class="card"> |
|||
<div class="card-image"> |
|||
{% if 'profile/user_picture.html'|template_exists %} |
|||
{% include 'profile/user_picture.html' %} |
|||
{% else %} |
|||
{% include 'material/admin/user_picture.html' %} |
|||
{% endif %} |
|||
</div> |
|||
</div> |
|||
</li> |
|||
{% show_menu 'main_menu' %} |
|||
</ul> |
|||
{% else %} |
|||
<div class="app"> |
|||
<div class="card"> |
|||
<div class="card-content"> |
|||
<p>{% trans "You don't have permission to view or edit anything." %}</> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
{% endif %} |
|||
{% if not mobile %} |
|||
<i class="material-icons minimize nav-bar" aria-hidden="true" title="{% trans 'Minimize' %}">close</i> |
|||
{% endif %} |
|||
<ul class="collapsible"> |
|||
<li> |
|||
<div class="card"> |
|||
<div class="card-image"> |
|||
{% if 'profile/user_picture.html'|template_exists %} |
|||
{% include 'profile/user_picture.html' %} |
|||
{% else %} |
|||
{% include 'material/admin/user_picture.html' %} |
|||
{% endif %} |
|||
</div> |
|||
</div> |
|||
</li> |
|||
{% show_menu 'main_menu' %} |
|||
</ul> |
|||
</div> |
|||
|
@ -0,0 +1,21 @@ |
|||
{% load static %} |
|||
|
|||
{% block user_profile %} |
|||
{% if user.servidor.foto %} |
|||
<img class="login-logo" alt="login logo" src="{{ user.servidor.foto.url }}"> |
|||
{% elif profile_picture %} |
|||
<img class="login-logo" alt="login logo" src="{{ profile_picture }}"> |
|||
{% else %} |
|||
<img class="login-logo" alt="login logo" src="{% static 'material/admin/images/login-logo-'|add:current_theme|add:'.jpg' %}"> |
|||
{% endif %} |
|||
|
|||
{% if profile_bg %} |
|||
<img width="300" height="212" alt="profile background" src="{{ profile_bg }}"> |
|||
{% else %} |
|||
<img src="{% static 'material/admin/images/login-bg-'|add:current_theme|add:'.jpg' %}" alt="profile background"> |
|||
{% endif %} |
|||
<div class="card-title"> |
|||
<strong>{% firstof user.get_short_name user.username|default_if_none:'' %}</strong><br> |
|||
<small>{{ user.email|default_if_none:'' }}</small> |
|||
</div> |
|||
{% endblock %} |
@ -0,0 +1,27 @@ |
|||
{% load i18n %} |
|||
|
|||
<div class="app"> |
|||
<div class="card"> |
|||
<div class="full-preloader valign-wrapper"> |
|||
<div class="center"> |
|||
<div class="preloader-wrapper active"> |
|||
<div class="spinner-layer spinner-green-only"> |
|||
<div class="circle-clipper left"> |
|||
<div class="circle"></div> |
|||
</div><div class="gap-patch"> |
|||
<div class="circle"></div> |
|||
</div><div class="circle-clipper right"> |
|||
<div class="circle"></div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="card-content"> |
|||
<div class="card-title">{% block card-title %}{% translate card_title|default:"" %}{% endblock %}</div> |
|||
<div class="card-content-wrapper"> |
|||
{% block card-content %}{% endblock card-content %} |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
@ -0,0 +1,18 @@ |
|||
{% extends "sigi/snippets/base_card.html" %} |
|||
{% load i18n %} |
|||
|
|||
{% block card-content %} |
|||
{% if has_action_links %} |
|||
{% block action-links %} |
|||
<div id="{{ chart_name }}-action-links" class="card-links hide"> |
|||
<a id="{{ chart_name }}-previlink" class="waves-effect waves-light btn-small btn-flat btn-floating left" href="#" data-target="{{ chart_name }}-chart"> |
|||
<i class="material-icons left">chevron_left</i> |
|||
</a> |
|||
<a id="{{ chart_name }}-nextlink" class="waves-effect waves-light btn-small btn-flat btn-floating right" href="#" data-target="{{ chart_name }}-chart"> |
|||
<i class="material-icons right">chevron_right</i> |
|||
</a> |
|||
</div> |
|||
{% endblock action-links %} |
|||
{% endif %} |
|||
<canvas id="{{ chart_name }}-chart" data-source="{{ data_source }}" data-chart-name="{{ chart_name }}" data-has-action-links="{{ has_action_links }}"></canvas> |
|||
{% endblock card-content %} |
@ -0,0 +1,8 @@ |
|||
{% extends "sigi/snippets/base_card.html" %} |
|||
{% load i18n %} |
|||
|
|||
{% block card-content %} |
|||
<div id="card-{{ card_name }}" data-source="{% block data-source %}{{ data_source }}{% endblock %}"> |
|||
<p>{% trans "Carregando conteúdo..." %}</p> |
|||
</div> |
|||
{% endblock card-content %} |
@ -1,63 +0,0 @@ |
|||
$(document).ready(function () { |
|||
setlinks(); |
|||
$("div[data-source]").each(function(index, container) { |
|||
var container = $(container); |
|||
var url = container.attr('data-source'); |
|||
get_content(container, url); |
|||
}); |
|||
$("canvas[data-source]").each(function(index, canvas) { |
|||
var canvas = $(canvas) |
|||
var url = canvas.attr("data-source"); |
|||
plot_chart(canvas, url); |
|||
}); |
|||
}); |
|||
|
|||
function setlinks() { |
|||
$("a[data-target]").off('click').on('click', function(e) { |
|||
e.preventDefault(); |
|||
var $this = $(this); |
|||
var target = $("#"+$this.attr('data-target')); |
|||
var url = $this.attr('href'); |
|||
if (target.is("canvas")) { |
|||
plot_chart(target, url); |
|||
} else if (target.is("div")) { |
|||
get_content(target, url); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
function get_content(container, url) { |
|||
$.get(url, function(data) { |
|||
container.html(data); |
|||
setlinks(); |
|||
}); |
|||
} |
|||
|
|||
function plot_chart(canvas, url) { |
|||
$.get(url, function(data) { |
|||
var new_canvas = $(canvas.clone()).insertBefore(canvas); |
|||
canvas.remove(); |
|||
canvas = new_canvas; |
|||
var ctx = canvas.get(0).getContext("2d"); |
|||
if (data.type == 'pie') { |
|||
var myChart = new Chart(ctx).Pie(data.data, data.options); |
|||
} else if (data.type == 'line') { |
|||
var myChart = new Chart(ctx).Line(data.data, data.options); |
|||
} else if (data.type == 'bar') { |
|||
var myChart = new Chart(ctx).Bar(data.data, data.options); |
|||
} |
|||
|
|||
if (canvas.is("[data-legend-id]")) { |
|||
var legend_container = $("#"+canvas.attr("data-legend-id")); |
|||
legend_container.html(myChart.generateLegend()); |
|||
} |
|||
if (canvas.is("[data-prevlink-id]")) { |
|||
var prevlink = $("#"+canvas.attr("data-prevlink-id")); |
|||
prevlink.attr('href', data.prevlink); |
|||
} |
|||
if (canvas.is("[data-nextlink-id]")) { |
|||
var nextlink = $("#"+canvas.attr("data-nextlink-id")); |
|||
nextlink.attr('href', data.nextlink); |
|||
} |
|||
}); |
|||
} |
@ -1,38 +0,0 @@ |
|||
{% load static from staticfiles %} |
|||
{% load i18n %} |
|||
|
|||
<div class="panel panel-primary flex-col"> |
|||
<div class="panel-heading">{% trans 'Serviços hospedados no Interlegis (SEIT)' %}</div> |
|||
<div class="panel-body"> |
|||
<table class="table table-condensed numeros servicos"> |
|||
<tr> |
|||
{% for s in tabela_resumo_seit.titulos %} |
|||
<th>{{ s }}</th> |
|||
{% endfor %} |
|||
</tr> |
|||
{% for servico in tabela_resumo_seit.servicos %} |
|||
<tr> |
|||
<th class="dropdown"> |
|||
<a id="ddm-{{ servico.nome }}" data-toggle="dropdown" href="#">{{ servico.nome }}</a> |
|||
<table class="table table-condensed numeros servicos dropdown-menu" role="menu" aria-labelledby="ddm-{{ servico.nome }}"> |
|||
{% for mes in servico.novos_por_mes %} |
|||
<tr><th>{{ mes.mes }}</th><td>{{ mes.total }}</td></tr> |
|||
{% endfor %} |
|||
</table> |
|||
</th> |
|||
<td>{{ servico.total }}</td> |
|||
<td>{{ servico.novos_mes_anterior }}</td> |
|||
<td>{{ servico.novos_mes_atual }}</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
<div> |
|||
<a href="{% url "home_resumoseit" %}?ano={{ tabela_resumo_seit.mes_anterior.year|safe }}&mes={{ tabela_resumo_seit.mes_anterior.month|safe }}" aria-label="{% trans "Retroceder um mês" %}" data-target="resumoseit"> |
|||
<span class="glyphicon glyphicon-chevron-left pull-left" aria-hidden="true"></span> |
|||
</a> |
|||
<a href="{% url "home_resumoseit" %}?ano={{ tabela_resumo_seit.proximo_mes.year|safe }}&mes={{ tabela_resumo_seit.proximo_mes.month|safe }}" aria-label="{% trans "Avançar um mês" %}" data-target="resumoseit"> |
|||
<span class="glyphicon glyphicon-chevron-right pull-right" aria-hidden="true"></span> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
Loading…
Reference in new issue