mirror of https://github.com/interlegis/sigi.git
Sesóstris Vieira
1 week ago
6 changed files with 455 additions and 15 deletions
@ -0,0 +1,174 @@ |
|||||
|
const stadia_tiles_options = { |
||||
|
attribution: |
||||
|
` |
||||
|
© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> |
||||
|
© <a href="https://stamen.com/" target="_blank">Stamen Design</a> |
||||
|
© <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> |
||||
|
© <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>" |
||||
|
` |
||||
|
}; |
||||
|
var mymap; |
||||
|
var orgao_layer_group = L.layerGroup(); |
||||
|
var map_center = [-14.235004, -51.92528]; |
||||
|
var options = { color: 'blue', fillColor: 'red', fillOpacity: 0.4, radius: 500 }; |
||||
|
var unfiltred_options = { color: 'red', fillColor: 'red', fillOpacity: 0, radius: 1000 }; |
||||
|
$(document).ready(function () { |
||||
|
$("input[type=checkbox]").change(filtra); |
||||
|
var search_field = $("#map-search"); |
||||
|
|
||||
|
if (search_field) { |
||||
|
search_field.autocomplete({ |
||||
|
source: search_field.attr("data-source"), |
||||
|
minLength: 3, |
||||
|
select: function (event, ui) { |
||||
|
map_fly_to(ui.item); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
var base_layers = { |
||||
|
"Toner": L.tileLayer( |
||||
|
"https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}{r}.png", |
||||
|
stadia_tiles_options, |
||||
|
), |
||||
|
"Toner lite": L.tileLayer( |
||||
|
"https://tiles.stadiamaps.com/tiles/stamen_toner_lite/{z}/{x}/{y}{r}.png", |
||||
|
stadia_tiles_options, |
||||
|
), |
||||
|
"Terrain": L.tileLayer( |
||||
|
"https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}{r}.png", |
||||
|
stadia_tiles_options, |
||||
|
), |
||||
|
"Water color": L.tileLayer( |
||||
|
"https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg", |
||||
|
stadia_tiles_options, |
||||
|
), |
||||
|
"Open street": L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { |
||||
|
attribution: 'Map data and imagery © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, ', |
||||
|
tileSize: 512, |
||||
|
zoomOffset: -1 |
||||
|
}), |
||||
|
}; |
||||
|
|
||||
|
mymap = L.map('map', { |
||||
|
center: map_center, |
||||
|
zoom: 4.5, |
||||
|
zoomSnap: 0.01, |
||||
|
layers: [base_layers.Terrain, orgao_layer_group] |
||||
|
}); |
||||
|
|
||||
|
mymap.zoomControl.options.zoomInTitle = "{% trans 'Aproximar' %}"; |
||||
|
mymap.zoomControl.options.zoomOutTitle = "{% trans 'Afastar' %}"; |
||||
|
mymap.zoomControl.setPosition("bottomright"); |
||||
|
|
||||
|
L.control.layers(base_layers).addTo(mymap); |
||||
|
|
||||
|
mymap.on("popupopen", function (e) { |
||||
|
var popup = e.popup; |
||||
|
mark = popup._source; |
||||
|
$.ajax({ |
||||
|
type: "GET", |
||||
|
url: window.__openmapdetail_prefix__.replace("changeme", 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(); |
||||
|
$("#filter-spinner").toggleClass("d-none d-flex"); |
||||
|
$.ajax({ |
||||
|
type: "GET", |
||||
|
url: window.__openmapdata__, |
||||
|
data: formData, |
||||
|
dataType: "json", |
||||
|
encode: true, |
||||
|
}).done(function (returnedData) { |
||||
|
$("#filter-spinner").toggleClass("d-none d-flex"); |
||||
|
$("#totalOrgao").text(returnedData.length); |
||||
|
var new_data_layer = L.layerGroup(); |
||||
|
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(new_data_layer); |
||||
|
mark.orgao_id = casa[0] |
||||
|
} |
||||
|
}); |
||||
|
orgao_layer_group.clearLayers(); |
||||
|
orgao_layer_group.addLayer(new_data_layer); |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
$("#clear-filters").click(function (event) { |
||||
|
event.preventDefault(); |
||||
|
$("input[type=checkbox][name=tipo_orgao]").prop('checked', false); |
||||
|
$("input[type=checkbox][name=tipo_servico]").prop('checked', false); |
||||
|
$("input[type=checkbox][name=tipo_convenio]").prop('checked', false); |
||||
|
$("input[type=checkbox][name=regiao]").prop('checked', false); |
||||
|
$("input[type=checkbox][name=uf]").prop('checked', false); |
||||
|
$("input[type=checkbox][name=gerente]").prop('checked', false); |
||||
|
filtra(); |
||||
|
}); |
||||
|
$("#center-map").click(function (event) { |
||||
|
event.preventDefault(); |
||||
|
mymap.flyTo(map_center, 4.5); |
||||
|
}); |
||||
|
}); |
||||
|
function map_fly_to(obj) { |
||||
|
mymap.flyTo([obj.lat, obj.lng], 8.5); |
||||
|
var encontrado = false; |
||||
|
mymap.eachLayer(function (layer) { |
||||
|
if (layer instanceof L.Circle) { |
||||
|
if (layer.orgao_id == obj.id) { |
||||
|
layer.openPopup(); |
||||
|
encontrado = true; |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
if (!encontrado) { |
||||
|
var mark = L.circle([obj.lat, obj.lng], unfiltred_options).bindTooltip(obj.label).bindPopup("").addTo(mymap); |
||||
|
mark.orgao_id = obj.id |
||||
|
mark.openPopup(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,123 @@ |
|||||
|
{% load i18n %} |
||||
|
|
||||
|
<form id="filterForm" action="" method="get">{{ csrftoken }} |
||||
|
<div class="accordion" id="accordionMapFilter"> |
||||
|
<div class="accordion-item"> |
||||
|
<h2 class="accordion-header"> |
||||
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOrgao" aria-expanded="false" aria-controls="collapseOrgao"> |
||||
|
{% trans "Órgão" %} |
||||
|
</button> |
||||
|
</h2> |
||||
|
<div id="collapseOrgao" class="accordion-collapse collapse"> |
||||
|
<div class="accordion-body"> |
||||
|
{% for o in tipos_orgao %} |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="tipo_orgao_{{ o.sigla }}" name="tipo_orgao" value="{{ o.sigla }}"{% if o.sigla in pre_tipos_orgao or not pre_tipos_orgao %} checked{% endif %}/> |
||||
|
<label class="form-check-label" for="tipo_orgao_{{ o.sigla }}">{{ o.nome }}</label> |
||||
|
</div> |
||||
|
{% endfor %} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="accordion-item"> |
||||
|
<h2 class="accordion-header"> |
||||
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseServico" aria-expanded="false" aria-controls="collapseServico"> |
||||
|
{% trans "Serviço" %} |
||||
|
</button> |
||||
|
</h2> |
||||
|
<div id="collapseServico" class="accordion-collapse collapse"> |
||||
|
<div class="accordion-body"> |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="tipo_servico_ignore" name="ignore_tipo_servico" value="ignore" data-controls="tipo_servico"{% if 'ignore' in pre_tipos_servico %} checked{% endif %} /> |
||||
|
<label class="form-check-label" for="tipo_servico_ignore">{% trans "Ignorar" %}</label> |
||||
|
</div> |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="tipo_servico_none" name="tipo_servico" value="none"{% if 'none' in pre_tipos_servico %} checked{% endif %} /> |
||||
|
<label class="form-check-label" for="tipo_servico_none">{% trans "Nenhum serviço" %}</label> |
||||
|
</div> |
||||
|
{% for s in tipos_servico %} |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="tipo_servico_{{ s.sigla }}" name="tipo_servico" value="{{ s.sigla }}"{% if s.sigla in pre_tipos_servico or not pre_tipos_servico %} checked{% endif %} /> |
||||
|
<label class="form-check-label" for="tipo_servico_{{ s.sigla }}">{{ s.nome }}</label> |
||||
|
</div> |
||||
|
{% endfor %} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="accordion-item"> |
||||
|
<h2 class="accordion-header"> |
||||
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseConvenio" aria-expanded="false" aria-controls="collapseConvenio"> |
||||
|
{% trans "Convênio" %} |
||||
|
</button> |
||||
|
</h2> |
||||
|
<div id="collapseConvenio" class="accordion-collapse collapse"> |
||||
|
<div class="accordion-body"> |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="tipo_convenio_ignore" name="ignore_tipo_convenio" value="ignore" data-controls="tipo_convenio"{% if 'ignore' in pre_tipos_convenio %} checked{% endif %} /> |
||||
|
<label class="form-check-label" for="tipo_convenio_ignore">{% trans "Ignorar" %}</label> |
||||
|
</div> |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="tipo_convenio_none" name="tipo_convenio" value="none"{% if "none" in pre_tipos_convenio %} checked{% endif %} /> |
||||
|
<label class="form-check-label" for="tipo_convenio_none">{% trans "Sem convênio" %}</label> |
||||
|
</div> |
||||
|
{% for c in tipos_convenio %} |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="tipo_convenio_{{ c.sigla }}" name="tipo_convenio" value="{{ c.sigla }}"{% if c.sigla in pre_tipos_convenio or not pre_tipos_convenio %} checked{% endif %}/> |
||||
|
<label class="form-check-label" for="tipo_convenio_{{ c.sigla }}">{{ c.nome }}</label> |
||||
|
</div> |
||||
|
{% endfor %} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="accordion-item"> |
||||
|
<h2 class="accordion-header"> |
||||
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseRegiao" aria-expanded="false" aria-controls="collapseRegiao"> |
||||
|
{% trans "Região / estados" %} |
||||
|
</button> |
||||
|
</h2> |
||||
|
<div id="collapseRegiao" class="accordion-collapse collapse"> |
||||
|
<div class="accordion-body"> |
||||
|
{% for s, n, ufs in regioes %} |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="regiao_{{ s }}" name="regiao" value="{{ s }}" /> |
||||
|
<label class="form-check-label" for="regiao_{{ s }}">{{ n }}</label> |
||||
|
</div> |
||||
|
<div class="ps-3"> |
||||
|
{% for uf in ufs %} |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="uf_{{ uf.sigla }}" name="uf" value="{{ uf.sigla }}" data-regiao="{{ s }}" {% if uf.sigla in pre_ufs %} checked{% endif %}/> |
||||
|
<label class="form-check-label" for="uf_{{ uf.sigla }}">{{ uf.nome }}</label> |
||||
|
</div> |
||||
|
{% endfor %} |
||||
|
</div> |
||||
|
{% endfor %} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="accordion-item"> |
||||
|
<h2 class="accordion-header"> |
||||
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseGerente" aria-expanded="false" aria-controls="collapseGerente"> |
||||
|
{% trans "Gerente" %} |
||||
|
</button> |
||||
|
</h2> |
||||
|
<div id="collapseGerente" class="accordion-collapse collapse"> |
||||
|
<div class="accordion-body"> |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="gerente_ignore" name="gerente_ignore" value="ignore" data-controls="gerente"{% if "ignore" in pre_gerentes %} checked{% endif %} /> |
||||
|
<label class="form-check-label" for="gerente_ignore">{% trans "Ignorar" %}</label> |
||||
|
</div> |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="gerente_none" name="gerente" value="none" {% if "none" in pre_gerentes %} checked{% endif %}/> |
||||
|
<label class="form-check-label" for="gerente_none">{% trans "Sem gerente" %}</label> |
||||
|
</div> |
||||
|
{% for g in gerentes %} |
||||
|
<div class="form-check{% if djbs.CHECK_AS_SWITCH %} form-switch{% endif %}"{% if djbs.CHECK_AS_SWITCH %} role="switch"{% endif %}> |
||||
|
<input class="form-check-input" type="checkbox" form="filterForm" id="gerente_{{ g.id|stringformat:"s" }}" name="gerente" value="{{ g.id|stringformat:"s" }}" {% if g.id|stringformat:"s" in pre_gerentes or not pre_gerentes%} checked{% endif %}/> |
||||
|
<label class="form-check-label" for="gerente_{{ g.id|stringformat:"s" }}">{{ g.nome_completo }}</label> |
||||
|
</div> |
||||
|
{% endfor %} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
@ -0,0 +1,87 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% load static i18n djbs_extras %} |
||||
|
|
||||
|
{% block extrastyle %} |
||||
|
{{ block.super }} |
||||
|
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" |
||||
|
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" |
||||
|
crossorigin=""/> |
||||
|
<link rel="stylesheet" href="https://code.jquery.com/ui/1.14.1/themes/base/jquery-ui.css"> |
||||
|
<link rel="stylesheet" href="{% static 'home/css/openmap.css' %}" /> |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block extrahead %} |
||||
|
{{ block.super }} |
||||
|
<script src="https://code.jquery.com/ui/1.14.1/jquery-ui.js"></script> |
||||
|
<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" /> |
||||
|
<meta name="referrer" content="strict-origin-when-cross-origin"/> |
||||
|
<script type="text/javascript"> |
||||
|
//<![CDATA[ |
||||
|
window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin / " %}{% endfilter %}"; |
||||
|
window.__openmapdetail_prefix__ = "{% url 'openmapdetail' 'changeme' %}"; |
||||
|
window.__openmapdata__ = "{% url 'openmapdata' %}"; |
||||
|
//]]> |
||||
|
</script> |
||||
|
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" |
||||
|
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" |
||||
|
crossorigin=""></script> |
||||
|
<script type="text/javascript" src="{% static 'js/search.js' %}"></script> |
||||
|
<script type="text/javascript" src="{% static 'home/js/openmap.js' %}"></script> |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block nav-breadcrumbs %}{% endblock %} |
||||
|
|
||||
|
{% block title %}{% if subtitle %}{{ subtitle }} | {% endif %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %} |
||||
|
|
||||
|
{% block navbar-branding %} |
||||
|
<a class="navbar-brand" href="{% if user.is_staff %}{% url 'admin:index' %}{% else %}{% url "openmap" %}{% endif %}"> |
||||
|
<img src="{% static 'img/logo.svg' %}" height="48px"/> |
||||
|
<span class="sidenav-collapsible collapse collapse-horizontal show fw-bold ms-2">{{ site_header|default:_('Django administration') }}</span> |
||||
|
</a> |
||||
|
{{ block.super }} |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block toolclass %}{{ block.super }} ms-auto{% endblock %} |
||||
|
|
||||
|
{% block nav-global %} |
||||
|
<a id="center-map" class="nav-link" href="#" title="{% trans 'Centralizar o mapa' %}">{% icon "map-cross" %} {% trans 'Centralizar o mapa' %}</a> |
||||
|
<a class="nav-link" data-bs-toggle="offcanvas" href="#sidebar-offcanvas" title="{% trans "Filtrar dados" %}">{% icon "filter" %} {% trans "Filtrar dados" %}</a> |
||||
|
<a id="clear-filters" class="nav-link" href="#" title="{% trans 'Remover todos os filtros' %}">{% icon "error" %} {% trans 'Remover todos os filtros' %}</a> |
||||
|
<a id="" class="nav-link" href="{% url 'admin:index' %}" title="{% trans "Login" %}">{% icon "login" %} {% trans "Login" %}</a> |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block side_nav %}{% endblock %} |
||||
|
|
||||
|
{% block menu %}{% endblock %} |
||||
|
{% block coltype %}py-2{% endblock %} |
||||
|
|
||||
|
{% block search %} |
||||
|
<form id="searchform" class="d-flex gap-2 ms-2" role="search"> |
||||
|
{% icon "search" "d-none d-lg-inline-block navbar-text" %} |
||||
|
<input id="map-search" type="search" class="form-control" placeholder="{% trans "Procurar" %}" aria-label="{% trans "Procurar" %}" data-source="{% url 'openmapsearch' %}"> |
||||
|
</form> |
||||
|
|
||||
|
{% endblock search %} |
||||
|
|
||||
|
{% block content %} |
||||
|
<div id="filter-spinner" class="fixed-top vh-100 bg-secondary bg-opacity-50 d-none flex-wrap justify-content-center align-content-center"> |
||||
|
<div class="spinner-border" role="status"> |
||||
|
<span class="visually-hidden">{% trans "Loading..." %}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div id="map"> |
||||
|
<!-- open street map --> |
||||
|
</div> |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block sidebar-title %}{% translate "Filtrar" %}{% endblock sidebar-title %} |
||||
|
|
||||
|
{% block sidebar-body %} |
||||
|
<div class="mb-3 text-body-secondary d-flex"> |
||||
|
<small class="me-auto"><strong>Total de Órgãos selecionados: </strong></small> |
||||
|
<span class="badge text-bg-info" id="totalOrgao">-</span> |
||||
|
</div> |
||||
|
{% include "home/mapfilter.html" %} |
||||
|
{% endblock sidebar-body %} |
@ -0,0 +1,47 @@ |
|||||
|
<table class="table table-sm table-striped"> |
||||
|
<tr> |
||||
|
<th colspan="2"> |
||||
|
{% if user.is_staff %} |
||||
|
{% url "admin:casas_orgao_change" orgao.id as orgao_url %} |
||||
|
{% else %} |
||||
|
{% url "servicos_casas_atendidas" orgao.id as orgao_url %} |
||||
|
{% endif %} |
||||
|
<a href="{{ orgao_url }}" target="_blank"> |
||||
|
{{ orgao }} |
||||
|
</a> |
||||
|
</th> |
||||
|
</tr> |
||||
|
<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 telefones %} |
||||
|
<tr> |
||||
|
<th>Telefones</th> |
||||
|
<td> |
||||
|
{% for telefone in telefones %} |
||||
|
<a href="tel:{{ telefone }}">{{ telefone }}</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 %} |
||||
|
{% if user.is_staff %} |
||||
|
<a href="{% url 'admin:convenios_convenio_change' c.id %}" target="_blank"> |
||||
|
{{ c.projeto.sigla }} ({{ c.get_status }}) |
||||
|
</a> |
||||
|
{% else %} |
||||
|
{{ c.projeto.sigla }} ({{ c.get_status }}) |
||||
|
{% endif %} |
||||
|
{% if not forloop.last %}, {% endif %} |
||||
|
{% endfor %} |
||||
|
</td> |
||||
|
</tr> |
||||
|
{% endif %} |
||||
|
{% if orgao.servico_set.all %} |
||||
|
<tr><th>Serviços</th><td>{% for s in servicos.all %}{% if s.url %}<a href="{% if '//' not in s.url %}//{% endif %}{{ s.url }}" target="_blank">{{ s }}</a>{% else %}{{ s }}{% endif %}{% if not forloop.last %}, {% endif %}{% endfor %}</td></tr> |
||||
|
{% endif %} |
||||
|
</table> |
Loading…
Reference in new issue