mirror of https://github.com/interlegis/sigi.git
Sesostris Vieira
12 years ago
8 changed files with 290 additions and 0 deletions
@ -0,0 +1,51 @@ |
|||
(function($) { |
|||
var map; // O mapa - Será carregado assim que o documento estiver pronto
|
|||
var markersArray = []; |
|||
|
|||
$(document).ready(function($) { |
|||
$("#filter_form").bind('submit', ajax_submit); |
|||
var latlng = new google.maps.LatLng(-14.2350040, -51.925280); |
|||
var myOptions = { |
|||
zoom: 5, |
|||
center: latlng, |
|||
mapTypeId: google.maps.MapTypeId.ROADMAP |
|||
}; |
|||
|
|||
map = new google.maps.Map(document.getElementById("map"), myOptions); |
|||
ajax_submit(); |
|||
}) |
|||
|
|||
function ajax_submit(event) { |
|||
var data = $("#filter_form").serialize(); |
|||
$.post("/sigi/dashboard/map_data/", data, function(return_data) { |
|||
// Delete all markers
|
|||
if (markersArray) { |
|||
for (i in markersArray) { |
|||
markersArray[i].setMap(null); |
|||
} |
|||
} |
|||
markersArray.length = 0; |
|||
|
|||
// Plot new markers
|
|||
for (var i in return_data) { |
|||
var municipio = return_data[i]; |
|||
var markData = { |
|||
map: map, |
|||
position: new google.maps.LatLng(parseFloat(municipio.lat), parseFloat(municipio.lng)), |
|||
title: municipio.nome, |
|||
icon: '/sigi/media/images/' + municipio.icone + '.png' |
|||
} |
|||
var mark = new google.maps.Marker(markData); |
|||
markersArray.push(mark); |
|||
var infoWin = new google.maps.InfoWindow({content: '<strong>' + municipio.nome + '</strong><br/><br/>' + municipio.info }); |
|||
linkMarkMessage(mark, infoWin, map); |
|||
} |
|||
}); |
|||
return false; |
|||
} |
|||
|
|||
function linkMarkMessage(mark, infoWin, map) { |
|||
google.maps.event.addListener(mark, 'click', function() {infoWin.open(map, mark);}); |
|||
} |
|||
|
|||
})(django.jQuery); |
@ -0,0 +1,3 @@ |
|||
from django import forms |
|||
|
|||
# place form definition here |
@ -0,0 +1,3 @@ |
|||
from django.db import models |
|||
|
|||
# Create your models here. |
@ -0,0 +1,3 @@ |
|||
from django.conf.urls.defaults import * |
|||
|
|||
# place app url patterns here |
@ -0,0 +1,150 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from django.http import HttpResponse |
|||
from django.utils import simplejson |
|||
from django.shortcuts import render_to_response |
|||
from django.template import RequestContext |
|||
from django.db.models import Q |
|||
from sigi.apps.servicos.models import TipoServico, Servico |
|||
from sigi.apps.convenios.models import Projeto, Convenio |
|||
from sigi.apps.contatos.models import UnidadeFederativa |
|||
from apps.casas.models import CasaLegislativa |
|||
|
|||
def mapa(request): |
|||
""" |
|||
Mostra o mapa com filtros carregados com valores default |
|||
""" |
|||
|
|||
regiao_choices = UnidadeFederativa.REGIAO_CHOICES |
|||
estado_choices = UnidadeFederativa.objects.all() |
|||
servico_choices = TipoServico.objects.all() |
|||
projeto_choices = Projeto.objects.all() |
|||
|
|||
seit = [ ts.sigla for ts in servico_choices] |
|||
convenios = ['PML'] # Apenas o ultimo #hardcoded #fixme |
|||
equipadas = [p.sigla for p in projeto_choices] |
|||
diagnosticos = ['P'] # choices: ["A", "P"] |
|||
regioes = [r[0] for r in regiao_choices] |
|||
estados = [] |
|||
|
|||
extra_context = { |
|||
'seit': seit, |
|||
'convenios': convenios, |
|||
'equipadas': equipadas, |
|||
'diagnosticos': diagnosticos, |
|||
'regioes': regioes, |
|||
'estados': estados, |
|||
'regiao_choices': regiao_choices, |
|||
'estado_choices': estado_choices, |
|||
'servico_choices': servico_choices, |
|||
'projeto_choices': projeto_choices, |
|||
} |
|||
|
|||
return render_to_response('metas/mapa.html', extra_context, context_instance=RequestContext(request)) |
|||
|
|||
def map_data(request): |
|||
""" |
|||
Monta json com dados dos municípios conforme seleção do usuário |
|||
""" |
|||
|
|||
# Seleções default |
|||
regiao_choices = UnidadeFederativa.REGIAO_CHOICES |
|||
|
|||
seit = request.POST.getlist('seit') |
|||
convenios = request.POST.getlist('convenios') |
|||
equipadas = request.POST.getlist('equipadas') |
|||
diagnosticos = request.POST.getlist('diagnosticos') |
|||
regioes = request.POST.getlist('regioes') |
|||
estados = request.POST.getlist('estados') |
|||
|
|||
qRegiao = Q(municipio__uf__regiao__in=regioes) if len(regioes) < len(regiao_choices) else Q() |
|||
qEstado = Q(municipio__uf__sigla__in=estados) if estados else Q() |
|||
qSeit = Q(servico__data_desativacao=None, servico__tipo_servico__sigla__in=seit) if seit else Q() |
|||
qConvenios = Q(~Q(convenio__data_retorno_assinatura=None), tipo__sigla='CM', convenio__projeto__sigla__in=convenios) if convenios else Q() |
|||
qEquipadas = Q(tipo__sigla='CM', convenio__equipada=True, convenio__projeto__sigla__in=equipadas) if equipadas else Q() |
|||
qDiagnosticos = Q((Q(diagnostico__publicado=True) if 'P' in diagnosticos else Q()) | |
|||
(Q(diagnostico__publicado=False) if 'A' in diagnosticos else Q())) |
|||
|
|||
casas = {} |
|||
|
|||
for c in CasaLegislativa.objects.select_related('servico', 'convenio', 'diagnostico').filter(qRegiao | qEstado).filter(qSeit | |
|||
qConvenios | qEquipadas | qDiagnosticos).distinct(): |
|||
if not casas.has_key(c.pk): |
|||
casa = { |
|||
'nome': c.nome + ', ' + c.municipio.uf.sigla, |
|||
'icone': 'mapmarker', |
|||
'lat': str(c.municipio.latitude), |
|||
'lng': str(c.municipio.longitude), |
|||
'info': [] |
|||
} |
|||
|
|||
for sv in c.servico_set.all(): |
|||
casa['info'].append("%s ativado em %s" % (sv.tipo_servico.nome, sv.data_ativacao)) |
|||
|
|||
for cv in c.convenio_set.all(): |
|||
if (cv.data_retorno_assinatura is None) and (cv.equipada and cv.data_termo_aceite is not None): |
|||
casa['info'].append("Equipada em %s pelo %s" % (cv.data_termo_aceite, cv.projeto.sigla)) |
|||
if (cv.data_retorno_assinatura is not None) and not (cv.equipada and cv.data_termo_aceite is not None): |
|||
casa['info'].append("Conveniada ao %s em %s" % (cv.projeto.sigla, cv.data_retorno_assinatura)) |
|||
if (cv.data_retorno_assinatura is not None) and (cv.equipada and cv.data_termo_aceite is not None): |
|||
casa['info'].append("Conveniada ao %s em %s e equipada em %s" % (cv.projeto.sigla, cv.data_retorno_assinatura, cv.data_termo_aceite)) |
|||
|
|||
for dg in c.diagnostico_set.all(): |
|||
casa['info'].append('Diagnosticada no período de %s a %s' % (dg.data_visita_inicio, dg.data_visita_fim)) |
|||
|
|||
casa['info'] = "<br/>".join(casa['info']) |
|||
|
|||
casas[c.pk] = casa |
|||
|
|||
#------------------------------------------------------------------------------------------------------------------------------- |
|||
# if seit: |
|||
# for srv in Servico.objects.filter(qRegiao, qEstado, data_desativacao=None, tipo_servico__sigla__in=seit): |
|||
# if casas.has_key(srv.casa_legislativa.id): |
|||
# casa = casas[srv.casa_legislativa.id] |
|||
# else: |
|||
# casa = { |
|||
# 'nome': srv.casa_legislativa.nome + ', ' + srv.casa_legislativa.municipio.uf.sigla, |
|||
# 'icon': 'mapmarker', |
|||
# 'lat': str(srv.casa_legislativa.municipio.latitude), |
|||
# 'lng': str(srv.casa_legislativa.municipio.longitude), |
|||
# 'info': [] |
|||
# } |
|||
# casas[srv.casa_legislativa.id] = casa |
|||
# |
|||
# casa['info'].append(srv.tipo_servico.nome) |
|||
# |
|||
# if convenios: |
|||
# for cnv in Convenio.objects.filter(qRegiao, qEstado, casa_legislativa__tipo__sigla='CM', projeto__sigla__in=convenios) \ |
|||
# .exclude(data_retorno_assinatura=None): |
|||
# if casas.has_key(cnv.casa_legislativa.id): |
|||
# casa = casas[cnv.casa_legislativa.id] |
|||
# else: |
|||
# casa = { |
|||
# 'nome': cnv.casa_legislativa.nome + ', ' + cnv.casa_legislativa.municipio.uf.sigla, |
|||
# 'icon': 'mapmarker', |
|||
# 'lat': str(cnv.casa_legislativa.municipio.latitude), |
|||
# 'lng': str(cnv.casa_legislativa.municipio.longitude), |
|||
# 'info': [] |
|||
# } |
|||
# casas[cnv.casa_legislativa.id] = casa |
|||
# |
|||
# casa['info'].append('Convênio %s assinado em %s' % (cnv.projeto.sigla, cnv.data_retorno_assinatura)) |
|||
# |
|||
# if equipadas: |
|||
# for eqp in Convenio.objects.filter(qRegiao, qEstado, casa_legislativa__tipo__sigla='CM', equipada=True, projeto__sigla__in=equipadas)\ |
|||
# .exclude(data_termo_aceite=None): |
|||
# if casas.has_key(eqp.casa_legislativa.id): |
|||
# casa = casas[eqp.casa_legislativa.id] |
|||
# else: |
|||
# casa = { |
|||
# 'nome': eqp.casa_legislativa.nome + ', ' + eqp.casa_legislativa.municipio.uf.sigla, |
|||
# 'icon': 'mapmarker', |
|||
# 'lat': str(eqp.casa_legislativa.municipio.latitude), |
|||
# 'lng': str(eqp.casa_legislativa.municipio.longitude), |
|||
# 'info': [] |
|||
# } |
|||
# casas[eqp.casa_legislativa.id] = casa |
|||
# |
|||
# casa['info'].append('Equipada pelo %s em %s' % (eqp.projeto.sigla, eqp.data_termo_aceite)) |
|||
#------------------------------------------------------------------------------------------------------------------------------- |
|||
|
|||
return HttpResponse(simplejson.dumps(casas), mimetype="application/json") |
@ -0,0 +1,76 @@ |
|||
{% extends "admin/index.html" %} |
|||
{% load adminmedia %} |
|||
|
|||
{% block title %}SIGI{% endblock %} |
|||
|
|||
{% block extrahead %} |
|||
{{ block.super }} |
|||
<script type="text/javascript" src="{% admin_media_prefix %}js/core.js"></script> |
|||
<script type="text/javascript" src="{% admin_media_prefix %}js/jquery.min.js"></script> |
|||
<script type="text/javascript" src="{% admin_media_prefix %}js/jquery.init.js"></script> |
|||
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false"></script> |
|||
<script type="text/javascript" src="{{ MEDIA_URL }}js/metas/mapa.js"></script> |
|||
{% endblock %} |
|||
|
|||
{% block content %} |
|||
<div id="map" style="width:100%; height: 800px; float: left;"> |
|||
<!-- google map --> |
|||
</div> |
|||
{% endblock %} |
|||
|
|||
{% block sidebar %} |
|||
<form id="filter_form" method="post" action=""> |
|||
<div id="content-related"> |
|||
<div class="module" id="filters"> {% comment %} Adicione style="overflow: auto; height: 800px;" para rolar apenas na caixa de filtros {% endcomment %} |
|||
<h2>Filtros</h2> |
|||
<input type="submit" value="Filtrar"/> |
|||
<h3>Por Serviços SEIT</h3> |
|||
<ul> |
|||
{% for s in servico_choices %} |
|||
<li><input type="checkbox" name="seit" value="{{ s.sigla }}" |
|||
{% if s.sigla in seit %} checked="checked" {% endif %}/> |
|||
{{ s.nome }} |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
<h3>Por Casas conveniadas</h3> |
|||
<ul> |
|||
{% for p in projeto_choices %} |
|||
<li><input type="checkbox" name="convenios" value="{{ p.sigla }}" {% if p.sigla in convenios %}checked="checked" {% endif %}/> |
|||
ao {{ p.sigla }}</li> |
|||
{% endfor %} |
|||
</ul> |
|||
<h3>Por Casas equipadas</h3> |
|||
<ul> |
|||
{% for p in projeto_choices %} |
|||
<li><input type="checkbox" name="equipadas" value="{{ p.sigla }}" {% if p.sigla in equipadas %}checked="checked" {% endif %}/> |
|||
pelo {{ p.sigla }}</li> |
|||
{% endfor %} |
|||
</ul> |
|||
<h3>Por Diagnósticos</h3> |
|||
<ul> |
|||
<li><input type="checkbox" name="diagnosticos" value="A" {% if "A" in diagnosticos %}checked="checked" {% endif %}/> |
|||
Em andamento</li> |
|||
<li><input type="checkbox" name="diagnosticos" value="P" {% if "P" in diagnosticos %}checked="checked" {% endif %}/> |
|||
Publicados</li> |
|||
</ul> |
|||
<h3>Por região</h3> |
|||
<ul> |
|||
{% for r in regiao_choices %} |
|||
<li><input type="checkbox" name="regioes" value="{{ r.0 }}" {% if r.0 in regioes %}checked="checked"{% endif %}/> {{ r.1 }}</li> |
|||
{% endfor %} |
|||
</ul> |
|||
<h3>Por Estado</h3> |
|||
<ul> |
|||
{% for e in estado_choices %} |
|||
<li><input type="checkbox" name="estados" value="{{ e.sigla }}" |
|||
{% if e.sigla in estados %} checked="checked" {% endif %}/> |
|||
{{ e.nome }} |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
<input type="submit" value="Filtrar"/> |
|||
</div> |
|||
</div> |
|||
</form> |
|||
{% endblock %} |
Loading…
Reference in new issue