(function($) {
var map; // O mapa - Será carregado assim que o documento estiver pronto
var municipiosArray = {};
$(document).ready(function($) {
$("input[type='checkbox']").change( filter );
$("#changelist-search").submit( search );
$("#closeiwlink").click( closeAllInfowindows );
$("#summary_report").click( open_report );
$("#list_report").click( open_report );
$("#list_csv").click( open_report );
var latlng = new google.maps.LatLng(-14.2350040, -51.925280);
var myOptions = {
scrollwheel: false,
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), myOptions);
ajax_submit();
})
function ajax_submit(event) {
$.ajax({
url: "/dashboard/mapdata/",
type: 'GET',
cache: true,
success: function(return_data) {
// Delete all markers
for (i in municipiosArray) {
municipiosArray[i].setMap(null);
}
municipiosArray = {}
// Create new markers
for (var i in return_data) {
var municipio = return_data[i];
var markData = {
map: null, // Just create the mark, dont plot it
position: new google.maps.LatLng(parseFloat(municipio.lat), parseFloat(municipio.lng)),
title: municipio.nome,
icon: '/static/img/mapmarker.png'
}
var mark = new google.maps.Marker(markData);
var iwcontent = '' + municipio.nome + '
' +
municipio.info;
if (municipio.thumb != '') {
iwcontent = iwcontent + '
' +
'' +
'';
}
var infoWin = new google.maps.InfoWindow({content: iwcontent });
linkMarkMessage(mark, infoWin, map);
municipio['mapmark'] = mark;
municipio['infowindow'] = infoWin;
municipiosArray[i] = municipio;
}
filter(null);
}});
return false;
}
function linkMarkMessage(mark, infoWin, map) {
google.maps.event.addListener(mark, 'click', function() {infoWin.open(map, mark);});
}
function closeAllInfowindows() {
for (var i in municipiosArray) {
municipiosArray[i]['infowindow'].close();
}
}
function filter(event) {
var data = $("#filter_form").serializeArray();
var estados = [];
var regioes = [];
$(".totalizador").text("0");
for (var i in data) {
var name = data[i].name, value = data[i].value;
if (name == 'estados') {
estados.push(value);
delete data[i];
} else if (name == 'regioes') {
regioes.push(value);
delete data[i];
}
}
for (var i in municipiosArray) {
var municipio = municipiosArray[i];
municipio['infowindow'].close();
var aparece = false;
if (regioes.indexOf(municipio.regiao) == -1 && estados.indexOf(municipio.estado) == -1) {
aparece = false;
} else {
for (var j in data) {
if (data[j]) {
var name = data[j].name, value = data[j].value;
idx = municipio[name].indexOf(value);
if (idx != -1) {
aparece = true;
break;
}
}
}
}
if (aparece) {
if (municipio.mapmark.map == null) {
municipio.mapmark.setMap(map);
}
var qtde = $("#" + municipio.regiao + ".totalizador").text();
qtde = parseInt(qtde);
qtde++;
$("#" + municipio.regiao + ".totalizador").text(qtde);
qtde = parseInt($("#" + municipio.estado + ".totalizador").text());
$("#" + municipio.estado + ".totalizador").text(++qtde);
for (var j in municipio.seit) {
qtde = parseInt($("#" + municipio.seit[j] + ".totalizador").text());
$("#" + municipio.seit[j] + ".totalizador").text(++qtde);
}
for (var j in municipio.convenios) {
qtde = parseInt($("#convenio_" + municipio.convenios[j] + ".totalizador").text());
$("#convenio_" + municipio.convenios[j] + ".totalizador").text(++qtde);
}
for (var j in municipio.equipadas) {
qtde = parseInt($("#equip_" + municipio.equipadas[j] + ".totalizador").text());
$("#equip_" + municipio.equipadas[j] + ".totalizador").text(++qtde);
}
for (var j in municipio.diagnosticos) {
qtde = parseInt($("#diagnostico_" + municipio.diagnosticos[j] + ".totalizador").text());
$("#diagnostico_" + municipio.diagnosticos[j] + ".totalizador").text(++qtde);
}
} else {
if (municipio.mapmark.map != null) {
municipio.mapmark.setMap(null);
}
}
}
}
function search(event) {
$.ajax({
url: "/dashboard/mapsearch/",
type: 'GET',
data: $("#changelist-search").serializeArray(),
cache: true,
success: function(return_data) {
if (return_data.result == 'NOT_FOUND') {
$("#search-panel").html('Nenhum município encontrado.');
return;
}
if (return_data.ids.length == 1) {
$("#search-panel").html('um município encontrado.');
} else {
$("#search-panel").html(return_data.ids.length + ' municípios encontrados.');
}
var total = 0;
for (var i in return_data.ids) {
var municipio = municipiosArray[return_data.ids[i]];
if (typeof(municipio) != 'undefined') {
if (municipio.mapmark.map == null) {
municipio.mapmark.setMap(map);
}
google.maps.event.trigger(municipio.mapmark, 'click');
total = total + 1;
}
}
if (total == 0) {
$("#search-panel").html('Nenhum município encontrado.');
return;
}
if (total == 1) {
$("#search-panel").html('um município encontrado.');
} else {
$("#search-panel").html(total + ' municípios encontrados.');
}
}});
return false;
}
function open_report(event) {
var data = $("#filter_form").serialize();
var href = this.href;
if (href.indexOf("?") < 0) {
href = href + "?" + data
} else {
href = href + "&" + data
}
var win = window.open(href, '', '');
win.focus();
return false;
}
})(django.jQuery);