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"> |
{% if seletor == 'sim' %} |
||||
<div class="panel-heading"> |
<ul class="collapsible gerente_selector" style="width: 100%;"> |
||||
<h3 class="panel-title"> |
<li> |
||||
{% if seletor == 'sim' %} |
<div class="collapsible-header"> |
||||
{% trans "Resumo da carteira de" %} |
{% if gerente %} |
||||
<mark class="dropdown"> |
{% if gerente.foto %} |
||||
<a data-toggle="dropdown" href="">{{ gerente.nome_completo|default:_("todo o Interlegis") }}</a> |
<img src="{{ gerente.foto.url }}" class="circle user_thumb" alt="{% trans "Foto do servidor" %}"> |
||||
<ul class="dropdown-menu"> |
{% else %} |
||||
<li><a href="{% url "casas-carteira" %}?servidor=_all&snippet={{ snippet }}&s={{ seletor }}" data-target="resumo">{% trans "Todo o Interlegis" %}</a></li> |
<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 %} |
{% 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 %} |
{% endfor %} |
||||
</ul> |
</ul> |
||||
</mark> |
</div> |
||||
{% else %} |
</li> |
||||
{% trans "Resumo da carteira" %} |
</ul> |
||||
{% endif %} |
{% endif %} |
||||
</h3> |
|
||||
</div> |
<table class="numeros resumo-carteira"> |
||||
<table class="table table-hover resumo"> |
|
||||
{% for row in resumo %} |
{% for row in resumo %} |
||||
|
{% if forloop.first %} |
||||
|
<tr> |
||||
|
{% for col in row %} |
||||
|
<th>{{ col }}</th> |
||||
|
{% endfor %} |
||||
|
</tr> |
||||
|
{% else %} |
||||
<tr> |
<tr> |
||||
{% if row.subtitle %} |
{% if row.subtitle %} |
||||
<th colspan="7">{{ row.subtitle }}</th> |
<th colspan="7">{{ row.subtitle }}</th> |
||||
{% else %} |
{% else %} |
||||
{% for col in row %} |
{% 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 %} |
{% endfor %} |
||||
{% endif %} |
{% endif %} |
||||
</tr> |
</tr> |
||||
|
{% endif %} |
||||
{% endfor %} |
{% endfor %} |
||||
</table> |
</table> |
||||
</div> |
</div> |
||||
|
@ -1,147 +1,37 @@ |
|||||
{% load static from staticfiles %} |
{% extends 'pdf/base_report.html' %} |
||||
{% load i18n %} |
{% load static 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; |
|
||||
} |
|
||||
|
|
||||
|
{% block page_size %}A4 portrait{% endblock %} |
||||
</style> |
{% block report_name %}{% blocktranslate %}Relatório da Região {{ regiao }}{% endblocktranslate %}{% endblock %} |
||||
|
|
||||
</head> |
{% block main_content %} |
||||
<body> |
{% for tabela in tabelas %} |
||||
<div id="cabecalho"> |
<table class="tabela" repeat="1"> |
||||
<table> |
<caption>{{ tabela.projeto }} - {{ regiao }}</caption> |
||||
<tr> |
<thead> |
||||
<td id="imagem1"><img src="{% static 'img/logo-senado.png' %}" width="80" height="80" alt="Logo Senado"/></td> |
<tr> |
||||
<td id="centro" colspan="3">{% trans 'SENADO FEDERAL' %}<br/><span class="item2">{% trans 'SINTER - Secretaria Especial do Interlegis' %}</span></td> |
{% for item in tabela.cabecalho %} |
||||
<td id="imagem2"><img src="{% static 'img/logo-interlegis.jpg' %}" width="90" height="65" alt="Logo Interlegis"/></td> |
<th>{{ item }}</th> |
||||
</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 /> |
|
||||
{% endfor %} |
{% endfor %} |
||||
</div> |
</tr> |
||||
<div id="footerContent"> |
</thead> |
||||
<table> |
<tbody> |
||||
<tr> |
{% for linha in tabela.linhas %} |
||||
<td id="esquerda">{{data}} às {{hora}}</td> |
<tr> |
||||
<td id="direita">{% trans 'Página' %} <pdf:pagenumber /> </td> |
<th>{{ linha.estado }}</th> |
||||
</tr> |
{% for item in linha.lista %} |
||||
</table> |
<td class="right-align">{{ item }}</td> |
||||
</div> |
{% endfor %} |
||||
|
</tr> |
||||
</body> |
{% endfor %} |
||||
</html> |
<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( |
# urlpatterns = patterns( |
||||
'sigi.apps.convenios.views', |
# 'sigi.apps.convenios.views', |
||||
|
|
||||
url(r'^convenio/reports/$', 'report', name='convenios-report'), |
# url(r'^convenio/reports/$', 'report', name='convenios-report'), |
||||
url(r'^convenio/carrinho/$', 'visualizar_carrinho', name='visualizar-carrinho'), |
# 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/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/carrinho/deleta_itens_carrinho$', 'deleta_itens_carrinho', name='deleta-itens-carrinho'), # tagerror |
||||
url(r'^convenio/csv/$', 'export_csv', name='convenios-csv'), |
# 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'^importar/$', 'importar_gescon', name='importar-gescon'), |
# ) |
||||
) |
|
||||
|
@ -1,22 +1,28 @@ |
|||||
# coding: utf-8 |
from django.urls import path, include |
||||
from django.conf.urls import patterns, url |
from sigi.apps.eventos import views |
||||
|
|
||||
|
urlpatterns = [ |
||||
|
path('calendario/', views.calendario, name='eventos-calendario'), |
||||
|
] |
||||
|
|
||||
urlpatterns = patterns( |
# from django.conf.urls import patterns, url |
||||
'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'), |
|
||||
|
|
||||
|
|
||||
) |
# 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.urls import path |
||||
from django.conf.urls import patterns, url |
from sigi.apps.home import views |
||||
|
|
||||
|
urlpatterns = [ |
||||
urlpatterns = patterns('sigi.apps.home.views', |
path('',views.openmap, name='openmap'), |
||||
url(r'^$', 'index', name='sigi_index'), |
path('openmapdata/', views.openmapdata, name='openmapdata'), |
||||
url(r'^home/resumoconvenios/$', 'resumo_convenios', name="home_resumoconvenios"), |
path('openmapdetail/<orgao_id>/', views.openmapdetail, name='openmapdetail'), |
||||
url(r'^home/resumoseit/$', 'resumo_seit', name="home_resumoseit"), |
path('openmapsearch/', views.openmapsearch, name='openmapsearch'), |
||||
url(r'^home/chartseit/$', 'chart_seit', name="home_chartseit"), |
path('home/resumoseit/', views.resumo_seit, name="home_resumoseit"), |
||||
url(r'^home/chartconvenios/$', 'chart_convenios', name="home_chartconvenios"), |
path('home/chartseit/', views.chart_seit, name="home_chartseit"), |
||||
url(r'^home/chartcarteira/$', 'chart_carteira', name="home_chartcarteira"), |
path('home/chartperformance/', views.chart_performance, name="home_chartperformance"), |
||||
url(r'^home/chartperformance/$', 'chart_performance', name="home_chartperformance"), |
path('home/chartcarteira/', views.chart_carteira, name="home_chartcarteira"), |
||||
url(r'^home/report/semconvenio/$', 'report_sem_convenio', name="home_reportsemconvenio"), |
path('home/resumoconvenios/', views.resumo_convenios, name="home_resumoconvenios"), |
||||
|
path('home/report/semconvenio/', views.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" %} |
{% extends "admin/base_site.html" %} |
||||
{% load i18n admin_static %} |
{% load i18n static admin_urls %} |
||||
{% load static from staticfiles %} |
|
||||
{% load thumbnail %} |
|
||||
|
|
||||
{% block extrastyle %} |
{% block extrastyle %} |
||||
{{ block.super }} |
{{ block.super }} |
||||
<link rel="stylesheet" type="text/css" href="{% static 'ocorrencias/css/jquery-ui.min.css' %}"/> |
<style> |
||||
{% endblock %} |
#content { |
||||
|
display: block; |
||||
{% block extrahead %} |
} |
||||
{{ block.super }} |
.user-image { |
||||
<script type="text/javascript" src="{% static 'admin/js/core.js' %}" ></script> |
width: 64px; |
||||
<script type="text/javascript" src="{% static 'admin/js/jquery.min.js' %}" ></script> |
height: 64px; |
||||
<script type="text/javascript" src="{% static 'admin/js/jquery.init.js' %}" ></script> |
font-size: 64px !important; |
||||
<script type="text/javascript" src="{% static 'ocorrencias/js/jquery-ui.min.js' %}" ></script> |
} |
||||
|
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 %} |
{% endblock %} |
||||
|
{% block breadcrumbs %}{% endblock %} |
||||
{% block coltype %}colMS{% endblock %} |
|
||||
|
|
||||
{% block content_title %}<h1>{{ panel_title }}</h1>{% endblock %} |
|
||||
|
|
||||
{% block content %} |
{% block content %} |
||||
{% url 'painel-ocorrencias' as url_painel %} |
<div class="row"> |
||||
<div id="content-main" class="container-fluid"> |
<div class="col s12"><h1>{{ panel_title }}</h1></div> |
||||
<div class="form-group"> |
</div> |
||||
<div class="input-group"> |
<div class="row"> |
||||
<input type="text" class="form-control" id="q" placeholder="{% trans 'Visitar o painel de' %}"> |
<div class="col s12"> |
||||
<span class="input-group-btn"> |
{% for id, text in paineis.items %} |
||||
<button class="btn btn-default" type="button" onclick="window.location.href='{{ url_painel }}'">{% trans 'Meu painel' %}</button> |
<a class="waves-effect waves-light btn-small{% if id != painel %} btn-flat{% endif %}" href="?painel={{ id }}">{{ text }}</a> |
||||
</span> |
{% endfor %} |
||||
</div> |
</div> |
||||
</div> |
</div> |
||||
|
<div class="row"> |
||||
<div class="nav nav-pills"> |
<div class="col s12"> |
||||
<span class="glyphicon glyphicon-plus"></span> |
<button class="waves-effect waves-light btn-small btn-flat modal-trigger" href="#nova_ocorrencia">{% trans "Nova ocorrência" %}</button> |
||||
<a role="button" data-toggle="collapse" href="#form_ocorrencia_panel" aria-expanded="false" aria-controls="form_ocorrencia_panel"> |
</div> |
||||
{% trans "Registrar nova ocorrência" %} |
</div> |
||||
</a> |
<div id="nova_ocorrencia" class="modal"> |
||||
</div> |
<div class="modal-content"> |
||||
|
<h4>{% trans "Nova ocorrência" %}</h4> |
||||
<div class="collapse panel panel-default" id='form_ocorrencia_panel'> |
{{ ocorrencia_form }} |
||||
{% include 'ocorrencias/ocorrencia_form.html' %} |
</div> |
||||
</div> |
<div class="modal-footer"> |
||||
|
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a> |
||||
{% if paineis %} |
</div> |
||||
<ul class="nav nav-pills"> |
</div> |
||||
{% for k, v in paineis.iteritems %} |
{% for ocorrencia in ocorrencias %} |
||||
<li role="presentation" class="{% if k == painel %}active{% endif %}"> |
<div class="row"> |
||||
<a href="{{ url_painel }}?type=servidor&id={{ servidor.id }}&painel={{ k }}"> |
<div class="col s12"> |
||||
{{ v }}</a></li> |
<div class="card hoverable"> |
||||
{% endfor %} |
<div class="card-content"> |
||||
</ul> |
<span class="card-title"> |
||||
{% endif %} |
<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 }} |
||||
<div class="row"> |
<p class="card-details"> |
||||
<div id="ocorrencias_display" class="col-md-12"> |
{% blocktrans with data_criacao=ocorrencia.data_criacao tipo_contato=ocorrencia.tipo_contato categoria=ocorrencia.categoria status=ocorrencia.get_status_display %} |
||||
{% for ocorrencia in ocorrencias %} |
Criado em {{ data_criacao }} via {{ tipo_contato }} solicitando {{ categoria }}, com status {{ status }} |
||||
{% include 'ocorrencias/ocorrencia_snippet.html' %} |
{% endblocktrans %} |
||||
{% empty %} |
</p> |
||||
<div class="panel panel-default"> |
<p class="card-details"> |
||||
<div class="panel-body"> |
<strong>{% trans "Gerentes" %}:</strong> |
||||
<p>{% trans 'Nenhuma ocorrência encontrada.' %}</p> |
{% for gerente in ocorrencia.casa_legislativa.gerentes_interlegis.all %} |
||||
</div> |
<div class="chip"> |
||||
</div> |
{% if gerente.foto %} |
||||
{% endfor %} |
<img src="{{ gerente.foto.url }}"> |
||||
</div> |
{% endif %} |
||||
</div> |
<a href="./">{{ gerente.get_apelido }}</a> |
||||
</div> |
</div> |
||||
|
{% endfor %} |
||||
<script type="text/javascript"> |
</p> |
||||
$( document ).ready(function() { |
</span> |
||||
$.ajaxSetup({ |
<div class="row"> |
||||
beforeSend: function(xhr, settings) { |
<div class="col s3 m1 center-align"> |
||||
if (!(/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type)) && !this.crossDomain) { |
<a href="./"> |
||||
var cookieValue = null, name = 'csrftoken'; |
{% if ocorrencia.servidor_registro.foto %} |
||||
if (document.cookie && document.cookie != '') { |
<img class="circle user-image" src="{{ MEDIA_URL }}{{ ocorrencia.servidor_registro.foto }}"/> |
||||
var cookies = document.cookie.split(';'); |
{% else %} |
||||
for (var i = 0; i < cookies.length; i++) { |
<i class="material-icons circle user-image">account_circle</i> |
||||
var cookie = jQuery.trim(cookies[i]); |
{% endif %} |
||||
if (cookie.substring(0, name.length + 1) == (name + '=')) { |
</a> |
||||
cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); |
<span class="user-name">{{ ocorrencia.servidor_registro.get_apelido }}</span> |
||||
break; |
</div> |
||||
} |
<div class="col s9 m11"> |
||||
} |
<p>{{ ocorrencia.descricao }}</p> |
||||
} |
<div> |
||||
xhr.setRequestHeader("X-CSRFToken", cookieValue); |
{% 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> |
||||
$("#q").autocomplete({ |
{% endif %} |
||||
source: "{% url 'painel-buscanominal' %}", |
{% endfor %} |
||||
select: function(event, ui) { |
</ul> |
||||
window.location.replace("{{ url_painel }}?type="+ui.item.origin+"&id="+ui.item.value); |
<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> |
||||
ui.item.value = ui.item.label |
<div id="modal{{ ocorrencia.id}}" class="modal"> |
||||
} |
<div class="modal-content"> |
||||
}) |
<h4>Anexos</h4> |
||||
|
<ul class="collection"> |
||||
$('input[name^=ocorrencia-]').on('change', function() { |
{% for anexo in ocorrencia.anexo_set.all %} |
||||
var $this = $(this), |
<li class="collection-item"> |
||||
data = {'id_ocorrencia': $this.attr('name').split('-')[1], |
<div> |
||||
'prioridade': $this.attr('value')}; |
<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> |
||||
$.post('{% url "ocorrencia-mudaprioridade" %}', data, function(result) { |
</div> |
||||
if (result.result == 'error') { |
</li> |
||||
alert(result.message); |
{% endfor %} |
||||
$this.reset(); |
</ul> |
||||
} |
</div> |
||||
}); |
<div class="modal-footer"> |
||||
}) |
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a> |
||||
|
</div> |
||||
function inclui_comentario( event ) { |
</div> |
||||
event.preventDefault() |
</div> |
||||
|
</div> |
||||
var $this = $(this); |
</div> |
||||
|
</div> |
||||
$.post($this.attr('action'), $this.serialize(), function( result ) { |
<div class="card-content"> |
||||
$('div[id=ticket_'+result.ocorrencia_id+']').html(result.ocorrencia_panel); |
<ul class="collection"> |
||||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
<li class="collection-item avatar"> |
||||
}); |
{% if usuario.foto %} |
||||
} |
<img class="circle commenter-image" src="{{ MEDIA_URL }}{{ servidor_registro.foto }}"/> |
||||
|
{% else %} |
||||
function inclui_ocorrencia( event ) { |
<i class="material-icons circle">account_circle</i> |
||||
event.preventDefault() |
{% endif %} |
||||
|
<form class="row" id="comentar_ocorrencia_{{ ocorrencia.id|safe }}" action="#!" method="post" data-ocorrencia-id="{{ ocorrencia.id|safe }}"> |
||||
var $this = $(this); |
{% csrf_token %} |
||||
|
<p>{% trans "Comentar" %}:</p> |
||||
$.post($this.attr('action'), $this.serialize(), function( result ) { |
{% for field in comentario_form %} |
||||
$("#form_ocorrencia_panel").html(result.ocorrencia_form); |
{% if field.name == 'ocorrencia' %} |
||||
if (result.result == 'success') { |
<input type='hidden' name='ocorrencia' value='{{ ocorrencia.id|safe }}'/> |
||||
$("#form_ocorrencia_panel").collapse('hide'); |
{% elif field.name == 'novo_status' %} |
||||
$("#ocorrencias_display").prepend(result.ocorrencia_panel); |
<div class="input-field col m4 s12"> |
||||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
<select name="novo_status" id="id_novo_status_{{ ocorrencia.id|safe }}" class="browser-default"> |
||||
} |
{% for value, label in field.field.widget.choices %} |
||||
$('#form_ocorrencia').on('submit', inclui_ocorrencia); |
{% if value == '' %} |
||||
}); |
<option value="{{ value|stringformat:'s' }}">{{ label }}</option> |
||||
} |
{% elif value != 1 %} |
||||
|
{% if ocorrencia.status < 3 and value > 2 %} |
||||
$('form[id^=comentar_ocorrencia_').on('submit', inclui_comentario); |
<option value="{{ value|stringformat:'s' }}">{{ label }}</option> |
||||
$('#form_ocorrencia').on('submit', inclui_ocorrencia); |
{% endif %} |
||||
}); |
{% if ocorrencia.status > 2 and value == 2 %} |
||||
|
<option value="{{ value|stringformat:'s' }}">{{ label }}</option> |
||||
function remove_anexo(link) { |
{% endif %} |
||||
var $this = $(link), |
{% endif %} |
||||
url = $this.attr('href'), |
{% endfor %} |
||||
div = $("div#anexos_"+$this.attr('data-ocorrencia-id')), |
</select> |
||||
link = $("a#link_anexos_"+$this.attr('data-ocorrencia-id')); |
</div> |
||||
|
{% else %} |
||||
$( '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>'); |
<div class="input-field col m8 s12"> |
||||
|
{{ field }} |
||||
var dialog = $("#dialog-confirm"); |
</div> |
||||
|
{% endif %} |
||||
dialog.dialog({ |
{% endfor %} |
||||
resizable: true, |
<button type="submit" class="secondary-content"><i class="material-icons">send</i></button> |
||||
modal: true, |
</form> |
||||
buttons: { |
</li> |
||||
"{% trans 'Excluir' %}": function() { |
{% for comentario in ocorrencia.comentarios.all %} |
||||
$.get(url, function(result) { |
<li class="collection-item avatar"> |
||||
if (result.result == 'error') { |
{% if comentario.usuario.foto %} |
||||
alert(result.message); |
<img class="circle" src="{{ MEDIA_URL }}{{ comentario.usuario.foto }}"/> |
||||
} |
{% else %} |
||||
if (result.result == 'success') { |
<i class="material-icons circle ">account_circle</i> |
||||
div.html(result.anexos_panel); |
{% endif %} |
||||
link.html(result.link_label); |
<p>{% blocktranslate with data=comentario.data_criacao nome=comentario.usuario.get_apelido %} |
||||
} |
Em {{ data }}, {{ nome }} disse: |
||||
}); |
{% endblocktranslate %}</p> |
||||
dialog.dialog( 'destroy' ); |
<span class="title">{{ comentario.descricao }}</span> |
||||
}, |
{% if comentario.novo_status %} |
||||
"{% trans 'Cancelar' %}": function() { |
<p>{% blocktranslate with status=comentario.get_novo_status_display|default:"-" %} |
||||
dialog.dialog( 'destroy' ); |
Status: {{ status }} |
||||
} |
{% endblocktranslate %}</p> |
||||
} |
{% endif %} |
||||
}); |
</li> |
||||
return false; |
{% endfor %} |
||||
} |
</ul> |
||||
|
</div> |
||||
function dismissAddAnexoPopup(win, ocorrencia_id) { |
</div> |
||||
var div = $("div#anexos_"+ocorrencia_id), |
</div> |
||||
link = $("a#link_anexos_"+ocorrencia_id); |
</div> |
||||
|
{% endfor %} |
||||
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 %} |
{% 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.urls import path |
||||
from django.conf.urls import patterns, url |
from sigi.apps.ocorrencias.views import painel_ocorrencias |
||||
|
|
||||
|
urlpatterns = [ |
||||
urlpatterns = patterns( |
path('painel/', painel_ocorrencias, name='painel-ocorrencias'), |
||||
'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'), |
# # coding: utf-8 |
||||
url(r'^mudaprioridade/$', 'muda_prioridade', name='ocorrencia-mudaprioridade'), |
# from django.conf.urls import patterns, url |
||||
url(r'^excluianexo/$', 'exclui_anexo', name='ocorrencia-excluianexo'), |
|
||||
url(r'^incluianexo/$', 'inclui_anexo', name='ocorrencia-incluianexo'), |
|
||||
url(r'^anexosnippet/$', 'anexo_snippet', name='ocorrencia-anexosnippet'), |
# urlpatterns = patterns( |
||||
url(r'^incluicomentario/$', 'inclui_comentario', name='ocorrencia-incluicomentario'), |
# 'sigi.apps.ocorrencias.views', |
||||
url(r'^incluiocorrencia/$', 'inclui_ocorrencia', name='ocorrencia-incluiocorrencia'), |
# # 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" %} |
{% extends "admin/index.html" %} |
||||
{% load static %} |
{% load static i18n %} |
||||
|
|
||||
{% block content %} |
{% block extrastyle %} |
||||
{% include 'sigi/snippets/dashboard.html' %} |
{{ block.super }} |
||||
|
<link rel="stylesheet" type="text/css" href="{% static 'css/dashboard.css' %}"> |
||||
{% endblock %} |
{% 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 %} |
{% load i18n material menus %} |
||||
|
|
||||
<div class="scroll-pane"> |
<div class="scroll-pane"> |
||||
{% if not mobile %} |
{% if not mobile %} |
||||
<i class="material-icons minimize nav-bar" aria-hidden="true" title="{% trans 'Minimize' %}">close</i> |
<i class="material-icons minimize nav-bar" aria-hidden="true" title="{% trans 'Minimize' %}">close</i> |
||||
{% endif %} |
{% endif %} |
||||
{% if available_apps %} |
<ul class="collapsible"> |
||||
<ul class="collapsible"> |
<li> |
||||
<li> |
<div class="card"> |
||||
<div class="card"> |
<div class="card-image"> |
||||
<div class="card-image"> |
{% if 'profile/user_picture.html'|template_exists %} |
||||
{% if 'profile/user_picture.html'|template_exists %} |
{% include 'profile/user_picture.html' %} |
||||
{% include 'profile/user_picture.html' %} |
{% else %} |
||||
{% else %} |
{% include 'material/admin/user_picture.html' %} |
||||
{% include 'material/admin/user_picture.html' %} |
{% endif %} |
||||
{% endif %} |
</div> |
||||
</div> |
</div> |
||||
</div> |
</li> |
||||
</li> |
{% show_menu 'main_menu' %} |
||||
{% show_menu 'main_menu' %} |
</ul> |
||||
</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 %} |
|
||||
</div> |
</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