/**
* Title: Gráfico interativo 1
*
* Representação gráfica de dados. O gráfico é construído tendo como base os atributos de um tema
* e é modificado conforme o usuário navega pelo mapa. A renderização do gráfico é feito pelo
* navegador por meio do aplicativo openflashchart. Os dados que serão utilizados no gráfico são baseados em um
* elemento TABLE. Esse elemento pode ser montado com base na tabela de atributos e editada pelo usuário. Os dados podem
* também ser inseridos como parâmetros na inicialização da ferramenta, permitindo que o gráfico seja
* utilizado por outras ferramentas.
*
* Gráficos podem ser salvos no mapa. Veja a função compactaConfig que gera uma string em base64 com as
* configurações em JSON de todos os gráficos abertos no mapa
*
* Os gráficos podem ser restaurados usando-se a função restauraGraficos
*
* Veja:
*
*
*
* Arquivo:
*
* i3geo/ferramentas/graficointerativo1/index.js.php
*
* Licenca:
*
* GPL2
*
* i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
*
* Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
*
* Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença
* Pública Geral GNU conforme publicada pela Free Software Foundation;
*
* Este programa é distribuído na expectativa de que seja útil, porém, SEM NENHUMA GARANTIA; nem mesmo a
* garantia implícita de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença
* Pública Geral do GNU para mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral do
* GNU junto com este programa; se não, escreva para a Free Software Foundation, Inc., no endereço 59 Temple Street, Suite
* 330, Boston, MA 02111-1307 USA.
*/
if (typeof (i3GEOF) === 'undefined') {
var i3GEOF = {};
}
/**
* Classe: i3GEOF.graficointerativo1
*
*/
i3GEOF.graficointerativo1 =
{
/**
* Controla se o evento de atualizacao da lista de registros esta ativo ou nao
* E utilizado quando os graficos sao recuperados de um mapa que foi salvo
*/
LISTAREGATIVO: true,
/**
* Array com os ids das janelas ja criadas
*/
janelas : [],
propJanelas : {},
/**
* Template no formato mustache E preenchido na carga do javascript com o programa dependencias.php
*/
MUSTACHE : "",
/**
* Susbtitutos para o template
*/
mustacheHash : function(idjanela) {
var dicionario = i3GEO.idioma.objetoIdioma(i3GEOF.graficointerativo1.dicionario);
dicionario["idjanela"] = idjanela;
dicionario["idjanelaA"] = '"'+idjanela+'"';
dicionario["locaplic"] = i3GEO.configura.locaplic;
dicionario["prop"] = $trad('p13');
dicionario["asp"] = '"';
return dicionario;
},
/**
* Propriedade: dados
*
* Dados que serao utilizados. Pode ser passado como parametro.
*
* Default: {false}
*/
dados : false,
/**
* Propriedade: titulo
*
* Título do gráfico. Se for vazio, será obtido do nome do tema selecionado
*/
titulo : "",
/**
* Propriedade: tipo
*
* Tipo de gráfico escolhido pelo usuário.
*/
tipo : "",
/**
* Propriedade: acumula
*
* Acumula os valores ao gerar o gráfico
*
* Type: {boolean}
*
* Default: {false}
*/
acumula : false,
/**
* Propriedade: relativa
*
* Utiliza valores relativos ao criar o gráfico
*
* Type: {boolean}
*
* Default: {false}
*/
relativa : false,
/**
* Propriedade: dadospuros
*
* Não faz nenhum tipo de processamento nos dados antes de gerar o gráfico
*
* Type: {boolean}
*
* Default: {false}
*/
dadospuros : false,
w: "460px",
h: "400px",
/**
* Configura o grafico conforme um objeto contendo parametros e opcionalmente os dados Alguns parametros possuem definicoes padrao,
* usadas quando o valor nao e passado
*
* Qualquer outro campo de formulario pode ter seu valor passado como parametro, desde que use o mesmo ID, excluindo-se do nome do
* ID o prefixo (codigo da janela)
*
* parametros {objeto} com os seguintes elementos:
*
* idjanela - id do grafico. Usado como prefixo para inserir os identificadores dos elementos DOM que fazem parte da interface do
* grafico. Se existir um elemento dom esse id, o grafico sera inserido nesse elemento
*
* tema - codigo do tema existente no mapa e que sera a fonte para os dados
*
* atualiza true|false - a janela sera atualizada na navegacao do mapa ou nao
*
* dados - dados que comporao o mapa. Caso nao existam, serao obtidos de tema
*
* acumula true|false - acumula os valores de cada elemento do grafico
*
* relativa true|false - utiliza valores relativos nos eixos
*
* dadospuros true|false - realiza ou nao processos de adequacao dos dados
*/
configura : function(parametros) {
var idjanela;
if (!parametros.idjanela) {
idjanela = "graficoi" + parseInt(Math.random() * 1000000, 10);
} else {
idjanela = parametros.idjanela;
}
i3GEOF.graficointerativo1.janelas.push(idjanela);
if (parametros) {
i3GEOF.graficointerativo1.propJanelas[idjanela] = parametros;
} else {
i3GEOF.graficointerativo1.propJanelas[idjanela] = {};
}
if (!parametros.tema || parametros.tema == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].tema = "";
}
if (!parametros.dadosComboItens || parametros.dadosComboItens == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].dadosComboItens = "";
}
if (!parametros.atualiza || parametros.atualiza == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].atualiza = true;
}
// guarda para esse grafico alguns valores default obtidos dos
// parametros gerais da ferramenta
if (!parametros.acumula || parametros.acumula == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].acumula = i3GEOF.graficointerativo1.acumula;
}
if (!parametros.relativa || parametros.relativa == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].relativa = i3GEOF.graficointerativo1.relativa;
}
if (!parametros.dadospuros || parametros.dadospuros == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].dadospuros = i3GEOF.graficointerativo1.dadospuros;
}
if (!parametros.w || parametros.w == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].w = i3GEOF.graficointerativo1.w;
}
if (!parametros.h || parametros.h == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].h = i3GEOF.graficointerativo1.h;
}
if (!parametros.tipo || parametros.tipo == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].tipo = i3GEOF.graficointerativo1.tipo;
}
//comp guarda a lista de diferentes graficos que formam composicoes
if (!parametros.comp || parametros.comp == undefined) {
i3GEOF.graficointerativo1.propJanelas[idjanela].comp = [];
}
return idjanela;
},
/**
* Aplica ao grafico os parametros de configuracao definidos para cada interface que controla o grafico Os parametros de
* configuracao sao obtidos na inicializacao, passados como parametros Essa funcao deve ser executada apos os elementos html terem
* sido renderizados
*/
aplicaConfig : function(idjanela) {
var config, atualizaConfigGr, f, nomesIds;
config = i3GEOF.graficointerativo1.propJanelas[idjanela];
nomesIds = i3GEO.util.listaChaves(config);
atualizaConfigGr = function() {
var i, o, n, j;
n = nomesIds.length;
for (j = 0; j < n; j++) {
i = nomesIds[j];
if(config[i]){
o = $i(i);
//if(o && o.style)
//o.style.color = "red"
if (o && o.type) {
if (o.type.toLowerCase() === "radio" || o.type.toLowerCase() === "checkbox") {
o.checked = config[i];
} else {
//alert(idjanela+" - "+config[i])
o.value = config[i];
}
}
}
}
};
// preenche os campos existentes
atualizaConfigGr();
// ativa o tipo de grafico
if (config.tema) {
i3GEOF.graficointerativo1.ativaTipo("", idjanela);
i3GEOF.graficointerativo1.comboTemas(idjanela);
// cria as entradas de parametros para o eixo y
// quando o grafico esta sendo restaurado do mapa
if (config.valoresCombosItens && config.valoresCombosItens.selects.length > 0) {
n = config.valoresCombosItens.selects.length;
f = function(){
var i, c, objs;
atualizaConfigGr();
//cria as demais entradas de Y
for (i = 0; i < n; i++) {
// cria o combo, para cada combo sao adicionados um input para o nome e um input para a cor
$i(idjanela + "i3GEOgraficointerativo1ComboYid").onchange.call();
}
//
// restaura os valores dos inputs criados conforme os parametros que haviam sido salvos
//
c = $i(idjanela + "i3GEOgraficointerativo1ComboYlinha");
objs = c.getElementsByTagName("select");
for (i = 0; i < n; i++) {
objs[i].value = config.valoresCombosItens.selects[i];
}
objs = c.getElementsByTagName("input");
n = config.valoresCombosItens.inputs.length;
for (i = 0; i < n; i++) {
if(objs[i]){
objs[i].value = config.valoresCombosItens.inputs[i];
}
}
atualizaConfigGr();
if (i3GEOF.graficointerativo1.propJanelas[idjanela].dados == "") {
i3GEOF.graficointerativo1.obterDados(idjanela);
}
};
//cria o combo para X e um combo para Y
i3GEOF.graficointerativo1.comboItensSel(idjanela,f);
}
else{
// atualiza novamente os campos criados
atualizaConfigGr();
if (i3GEOF.graficointerativo1.propJanelas[idjanela].dados == "") {
i3GEOF.graficointerativo1.obterDados(idjanela);
}
}
}
},
/**
* Obtem os parametros de cada janela e converte em base64. Cada janela e inserida como um item em um objeto A compactacao e
* utilizada para salvar as configuracoes no mapfile atual
*/
compactaConfig : function() {
var c, g, par, janelas, i, n, novoid;
par = [];
janelas = i3GEOF.graficointerativo1.janelas;
n = janelas.length;
for (i = 0; i < n; i++) {
novoid = window.prompt($trad('idDoGrafico',i3GEOF.graficointerativo1.dicionario),janelas[i]);
c = i3GEOF.graficointerativo1.retornaConfig(janelas[i],novoid);
par.push(c);
}
g = YAHOO.lang.JSON.stringify(par);
return i3GEO.util.base64encode(g);
},
restauraGraficos : function(par) {
i3GEOF.graficointerativo1.LISTAREGATIVO = false;
var n, i;
par = i3GEO.util.base64decode(par);
//console.info(par);
par = YAHOO.lang.JSON.parse(par);
n = par.length;
for (i = 0; i < n; i++) {
i3GEOF.graficointerativo1.iniciaJanelaFlutuante(par[i]);
}
},
/**
* Retorna um objeto contendo os valores de todos os parametros utilizados no grafico de tal forma que um grafico possa ser
* renderizado novamente
*
* A funcao i3GEO.php.salvaMapaBanco utiliza retornaConfig e cria um objeto que ira armazenar os parametros de cada janela
*/
retornaConfig : function(idjanela,novoid) {
// as chaves do objeto correspondem ao ID de cada elemento
var tmpid,d, c, par, objs, obj = "", valoresCombosItens = {};
par = i3GEOF.graficointerativo1.propJanelas[idjanela];
c = $i(idjanela);
if(!novoid){
novoid = idjanela;
}
// pega todos os elementos do tipo input
objs = c.getElementsByTagName("input");
for (obj in objs) {
// nao inclui agora os dados e cores
if (objs[obj].id && objs[obj].id != "" && objs[obj].id.search(idjanela + "i3GEOgraficointerativo1Dados") < 0) {
tmpid = objs[obj].id.replace(idjanela,novoid);
if (objs[obj].type === "text") {
par[tmpid] = objs[obj].value;
} else {
par[tmpid] = objs[obj].checked;
}
}
}
// pega todos os elementos do tipo select
objs = c.getElementsByTagName("select");
for (obj in objs) {
if (objs[obj].id && objs[obj].id != "") {
tmpid = objs[obj].id.replace(idjanela,novoid);
par[tmpid] = objs[obj].value;
}
}
// se a janela esta marcada para ser atualizada ao navegar, os dados nao devem ser incluidos
if (i3GEOF.graficointerativo1.propJanelas[idjanela].atualiza === false) {
// inclui a tabela com os dados
d = $i(idjanela + "i3GEOgraficointerativo1Dados");
objs = d.getElementsByTagName("input");
for (obj in objs) {
if (objs[obj].id) {
tmpid = objs[obj].id.replace(idjanela,novoid);
par[tmpid] = objs[obj].value;
}
}
} else {
par.dados = "";
}
//combos do eixo y
valoresCombosItens = {
"selects" : [],
"inputs" : []
};
d = $i(idjanela + "i3GEOgraficointerativo1ComboYlinha");
objs = d.getElementsByTagName("select");
for (obj in objs) {
if (objs[obj].value && objs[obj].value != "") {
valoresCombosItens.selects.push(objs[obj].value);
}
}
valoresCombosItens.selects = valoresCombosItens.selects.getUnique();
objs = d.getElementsByTagName("input");
for (obj in objs) {
//if (objs[obj].value && objs[obj].value != "") {
valoresCombosItens.inputs.push(objs[obj].value);
//}
}
par["valoresCombosItens"] = valoresCombosItens;
par["idjanela"] = novoid;
par["w"] = c.style.width;
par["h"] = c.style.height;
return par;
},
/**
* Function: inicia
*
* Inicia a ferramenta. É chamado por criaJanelaFlutuante
*
* Parametros:
*
* iddiv {String} - id do div que receberá o conteudo HTML da ferramenta
*
* dados {JSON} - dados para o gráfico (opcional) exemplo
* ["n;x","'Argentina';33796870","'Paraguay';4773464","'Brazil';151525400","'Chile';13772710"]
*/
inicia : function(iddiv, idjanela) {
var b;
$i(iddiv).innerHTML += i3GEOF.graficointerativo1.html(idjanela);
$i(idjanela + "i3GEOgraficointerativo1Acumula").checked = i3GEOF.graficointerativo1.propJanelas[idjanela].acumula;
$i(idjanela + "i3GEOgraficointerativo1Relativa").checked = i3GEOF.graficointerativo1.propJanelas[idjanela].relativa;
$i(idjanela + "i3GEOgraficointerativo1DadosPuros").checked = i3GEOF.graficointerativo1.propJanelas[idjanela].dadospuros;
// tipos de graficos
$i(idjanela + "i3GEOgraficointerativo1guia1").onclick = function() {
i3GEO.guias.mostraGuiaFerramenta(idjanela + "i3GEOgraficointerativo1guia1", idjanela + "i3GEOgraficointerativo1guia");
$i(idjanela + "i3GEOgraficointerativo1Grafico").style.display = "none";
};
// dados para o grafico
$i(idjanela + "i3GEOgraficointerativo1guia2").onclick = function() {
if (i3GEOF.graficointerativo1.tipo == "" && i3GEOF.graficointerativo1.propJanelas[idjanela].tipo && i3GEOF.graficointerativo1.propJanelas[idjanela].tipo === "") {
alert($trad("escolhatipo", i3GEOF.graficointerativo1.dicionario));
return;
}
if (i3GEOF.graficointerativo1.propJanelas[idjanela].tipo == undefined || i3GEOF.graficointerativo1.propJanelas[idjanela].tipo === "") {
i3GEOF.graficointerativo1.propJanelas[idjanela].tipo = i3GEOF.graficointerativo1.tipo;
}
i3GEO.guias.mostraGuiaFerramenta(idjanela + "i3GEOgraficointerativo1guia2", idjanela + "i3GEOgraficointerativo1guia");
i3GEOF.graficointerativo1.configuraDados(idjanela);
$i(idjanela + "i3GEOgraficointerativo1Grafico").style.display = "none";
};
// propriedades adicionais
$i(idjanela + "i3GEOgraficointerativo1guia3").onclick = function() {
i3GEO.guias.mostraGuiaFerramenta(idjanela + "i3GEOgraficointerativo1guia3", idjanela + "i3GEOgraficointerativo1guia");
$i(idjanela + "i3GEOgraficointerativo1Grafico").style.display = "none";
};
// mostra o grafico
$i(idjanela + "i3GEOgraficointerativo1guia4").onclick = function() {
var t;
if (i3GEOF.graficointerativo1.propJanelas[idjanela].tipo === "") {
alert($trad("escolhatipo", i3GEOF.graficointerativo1.dicionario));
return;
}
if ($i(idjanela + "i3GEOgraficointerativo1Dados").innerHTML === "") {
return;
}
i3GEO.guias.mostraGuiaFerramenta(idjanela + "i3GEOgraficointerativo1guia4", idjanela + "i3GEOgraficointerativo1guia");
t = $i(idjanela + "i3GEOgraficointerativo1Grafico");
t.style.display = "block";
t.style.position = "relative";
t.style.top = "-5px";
t.visibility = "visible";
i3GEOF.graficointerativo1.tabela2grafico(idjanela);
};
$i(idjanela + "i3GEOgraficointerativo1guia5").onclick =
function() {
if (i3GEOF.graficointerativo1.propJanelas[idjanela].tipo === "") {
alert($trad("escolhatipo", i3GEOF.graficointerativo1.dicionario));
return;
}
if ($i(idjanela + "i3GEOgraficointerativo1Dados").innerHTML === "") {
return;
}
i3GEO.guias.mostraGuiaFerramenta(idjanela + "i3GEOgraficointerativo1guia5", idjanela + "i3GEOgraficointerativo1guia");
$i(idjanela + "i3GEOgraficointerativo1Grafico").style.display = "none";
$i(idjanela + "i3GEOgraficointerativo1guia5obj").innerHTML =
"";
};
$i(idjanela + "i3GEOgraficointerativo1guia6").onclick =
function() {
if (i3GEOF.graficointerativo1.propJanelas[idjanela].tipo === "") {
alert($trad("escolhatipo", i3GEOF.graficointerativo1.dicionario));
return;
}
if ($i(idjanela + "i3GEOgraficointerativo1Dados").innerHTML === "") {
return;
}
var w, h, form = $i(idjanela + "i3GEOgraficointerativo1PNG"), isvg = form.getElementsByTagName("input")[0], svg =
$i(idjanela + "i3GEOgraficointerativo1guia4objCanvas").firstChild;
h = svg.getAttributeNS(null, 'height');
w = svg.getAttributeNS(null, 'width');
if (typeof XMLSerializer != "undefined") {
svg = (new XMLSerializer()).serializeToString(svg);
} else {
svg = svg.html();
}
isvg.value = svg;
form.action = form.action + "?" + "w=" + w + "&h=" + h;
form.submit();
};
$i(idjanela + "i3GEOgraficointerativo1guia7").onclick =
function() {
i3GEOF.graficointerativo1.composicao.html(idjanela);
i3GEO.guias.mostraGuiaFerramenta(idjanela + "i3GEOgraficointerativo1guia7", idjanela + "i3GEOgraficointerativo1guia");
};
i3GEOF.graficointerativo1.ativaFoco(idjanela);
i3GEOF.graficointerativo1.comboTemas(idjanela);
b = new YAHOO.widget.Button(idjanela + "i3GEOgraficointerativo1botao1", {
onclick : {
fn : function() {
i3GEOF.graficointerativo1.obterDados(idjanela);
}
}
});
b.addClass("rodar");
if (i3GEOF.graficointerativo1.propJanelas[idjanela].dados != "") {
i3GEOF.graficointerativo1.montaTabelaDados(idjanela, i3GEOF.graficointerativo1.propJanelas[idjanela].dados);
$i(idjanela + "i3GEOgraficointerativo1guia4").onclick.call();
} else {
i3GEO.guias.mostraGuiaFerramenta(idjanela + "i3GEOgraficointerativo1guia1", idjanela + "i3GEOgraficointerativo1guia");
}
//
// Apos todos os elementos HTML da ferramenta terem sido renderizados
// aplicam-se os parametros armazenados nas propriedades da janela atual
// Isso e necessario pois os parametros podem ter sido enviados na inicializacao da ferramenta,
// por exemplo, quando um mapa e salvo, os parametros sao armazenados e depois recuperados
//
i3GEOF.graficointerativo1.aplicaConfig(idjanela);
},
/**
* Function: html
*
* Gera o código html para apresentação das opções da ferramenta
*
* Retorno:
*
* String com o código html
*/
html : function(idjanela) {
var ins = Mustache.render(i3GEOF.graficointerativo1.MUSTACHE, i3GEOF.graficointerativo1.mustacheHash(idjanela));
return ins;
},
/**
* Function: iniciaJanelaFlutuante
*
* Cria a janela flutuante para controle da ferramenta.
*
* Parametro:
*
* parametros {obj} - parametros para o gráfico. Contem parametros utilizados para configurar o grafico e tambem pode conter
* os dados. Para compatibilidade, se nao contiver o item com chave chamada dados, sera considerado como sendo um objeto com apenas
* os dados estatisticos
*
*/
iniciaJanelaFlutuante : function(parametros) {
var duplica, minimiza, cabecalho, janela, divid, temp, titulo, idjanela;
//
// verifica se parametros contem dados, caso contrario compatibiliza o objeto
// com a versao 6.0 do i3Geo
//
if (!parametros) {
parametros = {
"dados" : ""
};
} else if (parametros.dados == undefined) {
parametros = {
"dados" : parametros
};
}
//
// configura o grafico baseado no objeto parametros
// se em parametros existir um idjanela, o mesmo e retornado, caso contrario, e criado
//
idjanela = i3GEOF.graficointerativo1.configura(parametros);
//
// se existir um elemento HTML com o mesmo ID da janela, a renderizacao ocorrera
// nesse elemento, caso contrario, sera criada uma janela flutuante
//
if (!$i(idjanela) && !$i(idjanela+"_corpo")) {
// cria a janela flutuante
cabecalho = function() {
i3GEOF.graficointerativo1.ativaFoco(idjanela);
};
minimiza = function() {
i3GEO.janela.iconiza(idjanela,120,"i3GEOFgraficoRodape" + idjanela);
};
mudaTamanhoGrafico = function() {
var t = $i(idjanela + "i3GEOgraficointerativo1Grafico");
if (t.style.display === "block") {
i3GEOF.graficointerativo1.tabela2grafico(idjanela);
}
};
duplica = function() {
i3GEOF.graficointerativo1.iniciaJanelaFlutuante();
};
titulo =
""
+ "
";
} else {
// guarda o valor para reuso
i3GEOF.graficointerativo1.propJanelas[idjanela].dadosComboItens = retorno;
//para escolher o item de Y
var temp = retorno.dados.replace(idjanela + "i3GEOgraficointerativo1ComboXid",idjanela + "i3GEOgraficointerativo1ComboYid");
$i(idjanela + "i3GEOgraficointerativo1ComboY").innerHTML =
"
" + temp + " "
+ ""
+ "
";
i3GEO.util.aplicaAquarela(idjanela + "i3GEOgraficointerativo1ComboY");
//para escolher o item de X
$i(idjanela + "i3GEOgraficointerativo1ComboX").innerHTML =
"
" + retorno.dados + "
";
if ($i(idjanela + "i3GEOgraficointerativo1ComboYid")) {
adicionaFilho =
function() {
var no = document.createElement("div"), id = "CorG" + parseInt(Math.random() * 100000, 10), novoselect;
no.innerHTML = ""
+ retorno.dados
+ "
"
+ "
"
+ " ";
novoselect = no.getElementsByTagName("select")[0];
novoselect.id = "";
novoselect.onchange = adicionaFilho;
$i(idjanela + "i3GEOgraficointerativo1ComboY").appendChild(document.createElement("br"));
$i(idjanela + "i3GEOgraficointerativo1ComboY").appendChild(no);
i3GEO.util.aplicaAquarela(no.id);
};
$i(idjanela + "i3GEOgraficointerativo1ComboYid").onchange = adicionaFilho;
}
}
//executa uma funcao que foi enviada como parametros. Usado ao restaurar um grafico
if(funcaoFinaliza){
funcaoFinaliza.call();
}
};
//o primeiro combo gerado contem o id Xid
if (i3GEOF.graficointerativo1.propJanelas[idjanela].dadosComboItens == "") {
i3GEO.util.comboItens(idjanela + "i3GEOgraficointerativo1ComboXid", tema, geraCombo, idjanela
+ "i3GEOgraficointerativo1ComboX", "", "", "float:left;");
} else {
geraCombo(i3GEOF.graficointerativo1.propJanelas[idjanela].dadosComboItens);
}
},
/**
* Atualiza as janelas obtendo os dados conforme a navegacao ocorre
*/
atualizaListaDeRegistros : function() {
if(i3GEOF.graficointerativo1.LISTAREGATIVO === true){
var i, janelas = i3GEOF.graficointerativo1.janelas, propJanelas = i3GEOF.graficointerativo1.propJanelas, n = janelas.length;
for (i = 0; i < n; i++) {
if (propJanelas[janelas[i]].atualiza === true) {
i3GEOF.graficointerativo1.obterDados(janelas[i]);
i3GEOF.graficointerativo1.propJanelas[janelas[i]].aguarde.visibility = "hidden";
}
}
}
},
/**
* Function: obterDados
*
* Obtém os dados que serão utilizados no gráfico
*
* Veja:
*
*
*/
contadorDados: 0,
janelasEsperando: [],
obterDados : function(idjanela) {
if (!i3GEO.Interface) {
return;
}
if (i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility === "visible") {
return;
}
var tema, excluir, cp, tipo, ordenax, monta, p, x, y, i, n, temp;
tema = $i(idjanela + "i3GEOgraficointerativo1ComboTemasId");
if (!tema) {
return;
} else {
tema = tema.value;
}
i3GEOF.graficointerativo1.contadorDados++;
excluir = $i(idjanela + "i3GEOgraficointerativo1excluir").value;
cp = new cpaint();
tipo = $i(idjanela + "i3GEOgraficointerativo1TipoAgregacao").value;
ordenax = "sim";
// pega os itens
temp = $i(idjanela + "i3GEOgraficointerativo1ComboX");
x = temp.getElementsByTagName("select");
if (x.length > 0) {
x = x[0].value;
} else {
x = "";
}
temp = $i(idjanela + "i3GEOgraficointerativo1ComboY");
temp = temp.getElementsByTagName("select");
n = temp.length;
if (n === 1) {
y = temp[0].value;
} else {
y = [];
for (i = 0; i < n; i++) {
if (temp[i].value != "") {
y.push(temp[i].value);
}
}
//y = y.getUnique();
y = y.join(",");
}
p =
i3GEO.configura.locaplic + "/ferramentas/graficointerativo1/exec.php?g_sid=" + i3GEO.configura.sid
+ "&funcao=graficoSelecao&tema=" + tema + "&itemclasses=" + x + "&itemvalores=" + y + "&exclui=" + excluir + "&ext="
+ i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten);
if ($i(idjanela + "i3GEOgraficointerativo1DadosPuros").checked) {
tipo = "nenhum";
} else {
if (x === y) {
tipo = "conta";
}
}
if (!$i(idjanela + "i3GEOgraficointerativo1OrdenaX").checked) {
ordenax = "nao";
}
if (tema === "") {
//pode ser que os dados tenham vindo de outra fonte
if($i(idjanela + "i3GEOgraficointerativo1Dados").innerHTML === ""){
i3GEO.janela.tempoMsg($trad('selecionaTema', i3GEOF.graficointerativo1.dicionario));
}
return;
}
if (x === "") {
i3GEO.janela.tempoMsg($trad('selecionaItemX', i3GEOF.graficointerativo1.dicionario));
return;
}
if (y === "") {
i3GEO.janela.tempoMsg($trad('selecionaItemY', i3GEOF.graficointerativo1.dicionario));
return;
}
monta = function(retorno) {
//o contador e utilizado para disparar processos apenas quando todas as operacoes tiverem terminado
i3GEOF.graficointerativo1.contadorDados--;
i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility = "hidden";
i3GEOF.graficointerativo1.montaTabelaDados(idjanela, retorno);
i3GEOF.graficointerativo1.janelasEsperando.push(idjanela);
if(i3GEOF.graficointerativo1.contadorDados === 0){
var n = i3GEOF.graficointerativo1.janelasEsperando.length,
i;
for(i=0;i" + $trad('tabelaGrafico', i3GEOF.graficointerativo1.dicionario) + "
");
// pega os nomes das colunas
colunas = i3GEOF.graficointerativo1.nomesColunas(idjanela)[0];
ncolunas = colunas.length;
for (i = 0; i < ncolunas; i++) {
ins
.push("
");
n = dados.length;
for (i = 1; i < n; i++) {
v = dados[i].split(";");
// ins += v[0]+" "+v[1];
id = idjanela + "i3GEOgraficointerativo1Dados" + i; // layer+indice da classe
ins.push("
");
if ($i(idjanela + "i3GEOgraficointerativo1CoresA").checked) {
cor = i3GEO.util.rgb2hex(i3GEO.util.randomRGB());
}
// verifica se no objeto com os dados existe um terceiro
// valor com
// as cores
if (v[ncolunas + 1]) {
cor = i3GEO.util.rgb2hex(v[ncolunas + 1]);
}
ins.push($inputText("", "", id + "_cor", "", 12, cor, $trad('cor', i3GEOF.graficointerativo1.dicionario)));
ins.push("
");
ins.push("");
ins.push("
");
}
ins.push("
");
$i(idjanela + "i3GEOgraficointerativo1Dados").innerHTML = ins.join("");
},
/**
* Function: tabela2csv
*
* Obtém os dados da tabela em CSV
*/
tabela2csv : function(idjanela) {
var colunas = i3GEOF.graficointerativo1.nomesColunas(idjanela), ncolunas = colunas[0].length, inputs =
$i(idjanela + "i3GEOgraficointerativo1Dados").getElementsByTagName("input"), ninputs = inputs.length, i, j, temp, csv = [];
csv.push(colunas[0].join(";"));
for (i = 0; i < ninputs; i = (i + 1 + ncolunas)) {
temp = [];
for (j = 0; j < ncolunas; j++) {
temp.push(inputs[i + j].value);
}
csv.push(temp.join(";"));
}
return csv;
},
tabela2grafico: function(idjanela){
if (i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility === "visible") {
return;
}
i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility = "visible";
var legendaX = "",
legendaY = "",
dados = {},
xInclinado = false;
dados = i3GEOF.graficointerativo1.tabela2dados(idjanela);
xInclinado = $i(idjanela + "i3GEOgraficointerativo1xInclinado").checked;
/*
if ($i(idjanela + "i3GEOgraficointerativo1ComboTemasId")) {
titulo =
$i(idjanela + "i3GEOgraficointerativo1ComboTemasId").options[$i(idjanela + "i3GEOgraficointerativo1ComboTemasId").options.selectedIndex].text;
}
if (i3GEOF.graficointerativo1.titulo != "") {
titulo = i3GEOF.graficointerativo1.titulo;
}
*/
if ($i(idjanela + "i3GEOgraficointerativo1ComboXid")) {
legendaX = $i(idjanela + "i3GEOgraficointerativo1ComboXidTitulo").value;
}
if ($i(idjanela + "i3GEOgraficointerativo1ComboYid")) {
legendaY = $i(idjanela + "i3GEOgraficointerativo1ComboYidTitulo").value;
}
if (legendaX == legendaY && (legendaX != "" && legendaY != "")) {
legendaX += " (" + $trad('casos', i3GEOF.graficointerativo1.dicionario) + ")";
legendaY += " (" + $trad('numeroCasos', i3GEOF.graficointerativo1.dicionario) + ")";
}
switch (i3GEOF.graficointerativo1.propJanelas[idjanela].tipo) {
case "bar_1":
legendaX = "";
i3GEOF.graficointerativo1.barras(idjanela, dados["dados"], dados["maior"], dados["cores"], legendaY, legendaX, xInclinado, "vertical");
break;
case "bar_2":
legendaX = "";
i3GEOF.graficointerativo1.barras(idjanela, dados["dados"], dados["maior"], dados["cores"], legendaY, legendaX, xInclinado, "horizontal");
break;
case "linha_1":
legendaX = "";
i3GEOF.graficointerativo1.linhas(idjanela, dados["dados"], dados["maior"], dados["cores"], legendaY, legendaX, xInclinado);
break;
case "pizza_1":
legendaX = "";
i3GEOF.graficointerativo1.pizzas(idjanela, dados["dados"], dados["maior"], dados["cores"], legendaY, legendaX);
break;
case "ponto_1":
i3GEOF.graficointerativo1.pontos(idjanela, dados["dados"], dados["maior"], dados["cores"], legendaY, legendaX);
break;
case "area_1":
legendaX = "";
i3GEOF.graficointerativo1.areas(idjanela, dados["dados"], dados["maior"], dados["cores"], legendaY, legendaX, xInclinado);
break;
case "arvore_1":
i3GEOF.graficointerativo1.arvores(idjanela, dados["dados"], dados["maior"], dados["cores"], legendaY, legendaX);
break;
default:
// alert($trad("escolhatipo", i3GEOF.graficointerativo1.dicionario));
}
},
/**
* Function: tabela2dados
*
* Obtém os dados da tabela para compor o gráfico
*/
tabela2dados : function(idjanela) {
var colunas = i3GEOF.graficointerativo1.nomesColunas(idjanela),
ncolunas = colunas[0].length,
temp = 0,
ultimo = 0,
inputs = $i(idjanela + "i3GEOgraficointerativo1Dados").getElementsByTagName("input"),
ninputs = inputs.length,
tipoColuna = "String",
metadados = [],
i,
j,
acumulado = [],
acum,
cores = [],
par = [],
total = 0,
menor = 0,
maior = 0,
dados = {};
if (ninputs > 0) {
menor = inputs[1].value * 1;
}
if (ncolunas === 2) {
for (i = 0; i < ninputs; i = i + 3) {
temp = inputs[i + 1].value * 1;
total += temp;
cores.push(inputs[i + 2].value);
}
for (i = 0; i < ninputs; i = (i + 1 + ncolunas)) {
temp = inputs[i + 1].value * 1;
acum = ultimo + temp;
acumulado.push(acum);
ultimo = ultimo + temp;
if (temp > maior) {
maior = temp;
}
if (temp < menor) {
menor = temp;
}
temp = inputs[i + 1].value * 1;
if ($i(idjanela + "i3GEOgraficointerativo1Acumula").checked) {
temp = acum;
}
if ($i(idjanela + "i3GEOgraficointerativo1Relativa").checked) {
temp = (temp * 100) / total;
}
par.push([
inputs[i].value + "",
temp
]);
}
if ($i(idjanela + "i3GEOgraficointerativo1Acumula").checked) {
maior = 0;
}
} else {
total = 0;
for (i = 0; i < ninputs; i = (i + 1 + ncolunas)) {
temp = [];
for (j = 0; j < ncolunas; j++) {
temp.push(inputs[i + j].value);
}
par.push(temp);
}
cores = colunas[2];
}
for (j = 0; j < ncolunas; j++) {
metadados.push({
"colIndex" : j,
"colType" : tipoColuna,
"colName" : colunas[1][j]
});
tipoColuna = "Numeric";
}
dados = {
"resultset" : par,
"metadata" : metadados
};
return {
"dados": dados,
"cores": cores,
"menor": menor,
"maior": maior
};
},
/**
* Function: excluilinha
*
* Exclui uma linha da tabela de dados
*/
excluilinha : function(celula) {
var p = celula.parentNode.parentNode;
do {
p.removeChild(p.childNodes[0]);
} while (p.childNodes.length > 0);
p.parentNode.removeChild(p);
},
/**
* Function: corj
*
* Abre a janela para o usuário selecionar uma cor interativamente
*/
corj : function(obj) {
i3GEO.util.abreCor("", obj, "hex");
},
/**
* Function: ordenaColuna
*
* Ordena uma coluna da tabela
*/
ordenaColuna : function(coluna, cid) {
var tabela = $i(idjanela + "i3GEOgraficointerativo1Dados").getElementsByTagName("table")[0], trs, ntrs = 0, psort = [], t = 0, ins =
"", p = 0, e, temp, chaves = [], numero = false;
trs = tabela.getElementsByTagName("tr");
ntrs = trs.length;
function sortNumber(a, b) {
return a - b;
}
for (t = 1; t < ntrs; t++) {
temp = trs[t].childNodes[cid];
if (temp) {
psort.push(temp.childNodes[0].value);
chaves[temp.childNodes[0].value] = t;
if (temp.childNodes[0].value * 1) {
numero = true;
}
}
}
// recosntroi a tabela
if (numero === true) {
psort = psort.sort(sortNumber);
} else {
psort = psort.sort();
}
ins = "
" + trs[0].innerHTML + "
";
for (p = 0; p < psort; p++) {
e = chaves[psort[p]];
if (trs[e] !== undefined) {
ins += "
" + trs[e].innerHTML + "
";
}
}
tabela.innerHTML = ins;
},
configDefault : function(idjanela, dados, maior, cores, legendaY, legendaX) {
if($i(idjanela)){
$i(idjanela).style.visibility = "hidden";
}
var temp, config = {
canvas : idjanela + "i3GEOgraficointerativo1guia4objCanvas",
height : parseInt($i(idjanela + "_corpo").style.height, 10) - 80,
orthoAxisTitle : legendaY,
valuesFont : 'normal 9px sans-serif ',
baseAxisTitle : legendaX,
baseAxisTitleAlign : 'center',
tooltipEnabled : true,
tooltipArrowVisible : true,
tooltipFade : false,
tooltipFollowMouse : false,
tooltipFormat : function(scene) {
var cat = this.scene.datum.atoms['category'].value, val = this.scene.datum.atoms['value'].value;
return "" + cat + " " + format("#.###,", val);
},
clickAction : function(scene) {
var funcao1 = function(){
var filtro,coluna = $i(idjanela + "i3GEOgraficointerativo1ComboXid").value,
val = scene.atoms.category.value;
if (val*1){
filtro = "(["+coluna+"] = "+val+")";
}
else{
filtro = "(|["+coluna+"]| = |"+i3GEO.util.trim(val)+"|)";
}
i3GEOF.graficointerativo1.filtraCamada(idjanela,filtro);
};
var funcao2 = function(){
var filtro,coluna = scene.datum.atoms['series'].value,
val = scene.datum.atoms['value'].value;
if (val*1){
filtro = "(["+coluna+"] < "+val+")";
}
else{
filtro = "(|["+coluna+"]| < |"+i3GEO.util.trim(val)+"|)";
}
i3GEOF.graficointerativo1.filtraCamada(idjanela,filtro);
};
i3GEO.janela.confirma("Filtra a camada?",350,"Com base em X","Menor que Y",funcao1,funcao2);
},
baseAxisTitleFont : '9px sans-serif',
yAxisTickFormatter : function(valor) {
valor = valor + "";
return format("#.###,", valor);
},
valueFormat : function(valor) {
valor = valor + "";
return format("#.###,", valor);
},
valuesAnchor : 'top',
valuesVisible : false,
orthoAxisOriginIsZero : false,
titleAlign : 'center',
titleFont : 'bold 14px sans-serif',
baseAxisTitleFont : '12px sans-serif',
orthoAxisTitleFont : '12px sans-serif',
titlePosition : "top",
orientation : 'vertical',
baseAxisTicks : true,
stacked : false,
animate : true,
hoverable : false,
axisGrid : true,
contentMargins : 5,
axisOffset : 0.02,
panelSizeRatio : 0.8,
orthoAxisLabelSpacingMin : 2,
selectable : false,
clickable : true,
extensionPoints : {
continuousAxisTicks_strokeStyle : 'gray',
axisGrid_strokeStyle : 'lightgray',
xAxisLabel_textStyle : 'black',
label_textBaseline : "bottom",
xAxisLabel_font : 'normal 10px sans-serif'
}
};
if (maior > 0) {
config.orthoAxisFixedMax = maior;
}
if ($i(idjanela + "i3GEOgraficointerativo1Titulo").value != "") {
config.title = $i(idjanela + "i3GEOgraficointerativo1Titulo").value;
}
if ($i(idjanela + "i3GEOgraficointerativo1TituloX").value != "") {
config.baseAxisTitle = $i(idjanela + "i3GEOgraficointerativo1TituloX").value;
}
if ($i(idjanela + "i3GEOgraficointerativo1TituloY").value != "") {
config.orthoAxisTitle = $i(idjanela + "i3GEOgraficointerativo1TituloY").value;
}
temp = $i(idjanela + "i3GEOgraficointerativo1FatorTamanho");
if (temp && temp.value > 0 && dados.resultset) {
config.width = dados.resultset.length * temp.value;
} else {
config.width = parseInt($i(idjanela).style.width, 10) - 20;
}
return config;
},
barras : function(idjanela, dados, maior, cores, legendaY, legendaX, xInclinado, tipo) {
var ct = true, sr = false, config = i3GEOF.graficointerativo1.configDefault(idjanela, dados, maior, cores, legendaY, legendaX);
if (tipo === "horizontal") {
config.orientation = 'horizontal';
}
if (xInclinado == true) {
config.extensionPoints.xAxisLabel_textAngle = -Math.PI / 3;
config.extensionPoints.xAxisLabel_textBaseline = 'top';
config.extensionPoints.xAxisLabel_textAlign = 'right';
}
config.colors = cores;
//
//pega os parametros de graficos que fazem composicao com este
//
dados = i3GEOF.graficointerativo1.composicao.incluiDados(idjanela,dados);
config = i3GEOF.graficointerativo1.composicao.incluiConfig(idjanela,config);
if (dados.resultset && dados.resultset[0] && dados.resultset[0].length > 2) {
config.stacked = $i(idjanela + "i3GEOFgraficointerativo1ativaStacked").checked;
config.legend = true;
ct = true;
sr = $i(idjanela + "i3GEOFgraficointerativo1ativaRowsInColumns").checked;
}
else if (cores != "") {
config.extensionPoints.bar_fillStyle = function(d) {
return config.colors[this.index];
};
}
new pvc.BarChart(config).setData(dados, {
crosstabMode : ct,
seriesInRows : sr
}).render();
i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility = "hidden";
if($i(idjanela)){
$i(idjanela).style.visibility = "visible";
}
},
linhas : function(idjanela, dados, maior, cores, legendaY, legendaX, xInclinado, tipo) {
var ct = false, sr = false, config = i3GEOF.graficointerativo1.configDefault(idjanela, dados, maior, cores, legendaY, legendaX);
if (xInclinado == true) {
config.extensionPoints.xAxisLabel_textAngle = -Math.PI / 3;
config.extensionPoints.xAxisLabel_textBaseline = 'top';
config.extensionPoints.xAxisLabel_textAlign = 'right';
}
config.dotsVisible = true;
//
//pega os parametros de graficos que fazem composicao com este
//
dados = i3GEOF.graficointerativo1.composicao.incluiDados(idjanela,dados);
config = i3GEOF.graficointerativo1.composicao.incluiConfig(idjanela,config);
if (dados.resultset && dados.resultset[0] && dados.resultset[0].length > 2) {
config.stacked = $i(idjanela + "i3GEOFgraficointerativo1ativaStacked").checked;
config.legend = true;
ct = true;
sr = $i(idjanela + "i3GEOFgraficointerativo1ativaRowsInColumns").checked;
config.colors = cores;
}
new pvc.LineChart(config).setData(dados, {
crosstabMode : ct,
seriesInRows : sr
}).render();
i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility = "hidden";
if($i(idjanela)){
$i(idjanela).style.visibility = "visible";
}
},
areas : function(idjanela, dados, maior, cores, legendaY, legendaX, xInclinado, tipo) {
var ct = false, sr = false, config = i3GEOF.graficointerativo1.configDefault(idjanela, dados, maior, cores, legendaY, legendaX);
if (xInclinado == true) {
config.extensionPoints.xAxisLabel_textAngle = -Math.PI / 3;
config.extensionPoints.xAxisLabel_textBaseline = 'top';
config.extensionPoints.xAxisLabel_textAlign = 'right';
}
config.dotsVisible = true;
config.areasVisible = true;
//
//pega os parametros de graficos que fazem composicao com este
//
dados = i3GEOF.graficointerativo1.composicao.incluiDados(idjanela,dados);
config = i3GEOF.graficointerativo1.composicao.incluiConfig(idjanela,config);
if (dados.resultset && dados.resultset[0] && dados.resultset[0].length > 2) {
config.stacked = $i(idjanela + "i3GEOFgraficointerativo1ativaStacked").checked;
config.legend = true;
ct = true;
sr = $i(idjanela + "i3GEOFgraficointerativo1ativaRowsInColumns").checked;
config.colors = cores;
}
new pvc.LineChart(config).setData(dados, {
crosstabMode : ct,
seriesInRows : sr
}).render();
i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility = "hidden";
if($i(idjanela)){
$i(idjanela).style.visibility = "visible";
}
},
arvores : function(idjanela, dados, maior, cores, legendaY, legendaX, tipo) {
config = {
canvas : idjanela + "i3GEOgraficointerativo1guia4objCanvas",
title : legendaY,
titleFont : 'italic 14px sans-serif',
selectable : true,
hoverable : true,
legend : false,
tooltipEnabled : true,
legendPosition : 'right',
rootCategoryLabel : legendaX,
tooltipFormat : function(scene) {
var cat = this.scene.datum.atoms['category'].value, val = this.scene.datum.atoms.size.value;
return "" + cat + " " + format("#.###,", val);
}
};
//
//pega os parametros de graficos que fazem composicao com este
//
dados = i3GEOF.graficointerativo1.composicao.incluiDados(idjanela,dados);
config = i3GEOF.graficointerativo1.composicao.incluiConfig(idjanela,config);
if (cores != "") {
config.colors = cores;
}
new pvc.TreemapChart(config).setData(dados, {
crosstabMode : false
}).render();
i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility = "hidden";
if($i(idjanela)){
$i(idjanela).style.visibility = "visible";
}
},
pizzas : function(idjanela, dados, maior, cores, legendaY, legendaX, tipo) {
config = i3GEOF.graficointerativo1.configDefault(idjanela, dados, maior, cores, legendaY, legendaX);
var config = {
canvas : idjanela + "i3GEOgraficointerativo1guia4objCanvas",
animate : true,
selectable : true,
hoverable : true,
valuesVisible : true,
valuesLabelStyle : 'inside',
valuesMask : "{category}",
tooltipFormat : function(scene) {
var cat = this.scene.datum.atoms['category'].value, val = this.scene.datum.atoms['value'].value;
return "" + cat + " " + format("#.###,", val);
},
extensionPoints : {
slice_strokeStyle : 'white'
}
};
//
//pega os parametros de graficos que fazem composicao com este
//
dados = i3GEOF.graficointerativo1.composicao.incluiDados(idjanela,dados);
config = i3GEOF.graficointerativo1.composicao.incluiConfig(idjanela,config);
if (cores != "") {
config.colors = cores;
}
new pvc.PieChart(config).setData(dados, {
crosstabMode : false
}).render();
i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility = "hidden";
if($i(idjanela)){
$i(idjanela).style.visibility = "visible";
}
},
pontos : function(idjanela, dados, maior, cores, legendaY, legendaX, tipo) {
config = i3GEOF.graficointerativo1.configDefault(idjanela, dados, maior, cores, legendaY, legendaX);
var config = {
canvas : idjanela + "i3GEOgraficointerativo1guia4objCanvas",
animate : true,
selectable : true,
hoverable : true,
valuesVisible : false,
orthoAxisTitle : legendaY,
valuesFont : 'normal 9px sans-serif ',
baseAxisTitle : legendaX,
yAxisTickFormatter : function(valor) {
valor = valor + "";
return format("#.###,", valor);
},
valueFormat : function(valor) {
valor = valor + "";
return format("#.###,", valor);
},
tooltipFormat : function(scene) {
var cat = this.scene.datum.atoms['category'].value, val = this.scene.datum.atoms['value'].value;
return "X: " + cat + " Y: " + format("#.###,", val);
}
};
//
//pega os parametros de graficos que fazem composicao com este
//
dados = i3GEOF.graficointerativo1.composicao.incluiDados(idjanela,dados);
config = i3GEOF.graficointerativo1.composicao.incluiConfig(idjanela,config);
if (cores != "") {
config.colors = cores;
}
new pvc.DotChart(config).setData(dados, {
crosstabMode : false
}).render();
i3GEOF.graficointerativo1.propJanelas[idjanela].aguarde.visibility = "hidden";
if($i(idjanela)){
$i(idjanela).style.visibility = "visible";
}
},
/**
* Gerencia a sobreposicao de graficos em um unico
* i3GEOF.graficointerativo1.propJanelas[idjanela].comp
*/
composicao: {
/**
* Parametros do grafico sobreposto
* E armazenado quando a janela sobreposta e fechada
* Utilizado para recalcular o grafico quando a janela sobreposta for fechada
*/
parametros: {},
/**
* Remove uma sobreposicao e atualiza o grafico
* "s" e o codigo da janela do grafico sobreposto
*/
remove: function(idjanela,s){
var c = i3GEOF.graficointerativo1.propJanelas[idjanela].comp;
c.remove(s);
i3GEOF.graficointerativo1.composicao.listaComp(idjanela);
},
/**
* Adiciona ao grafico uma nova sobreposicao
*/
adiciona: function(idjanela,s){
if(s === ""){
return;
}
var c = i3GEOF.graficointerativo1.propJanelas[idjanela].comp;
c.remove(s);
c.push(s);
i3GEOF.graficointerativo1.composicao.listaComp(idjanela);
},
/**
* HTML com o formulario para adicionar sobreposicoes
*/
html: function(idjanela){
i3GEOF.graficointerativo1.composicao.combojanelas(idjanela);
i3GEOF.graficointerativo1.composicao.listaComp(idjanela);
},
/**
* Verifica todas as sobreposicoes e as aplica ao grafico
* A aplicacao e feita sobre o objeto de dados antes de ser renderizado
* Verifica se a janela com o grafico esta aberta ou se devem ser usados os parametros
* guardados
*/
incluiDados: function(idjanela,dados){
try{
var c = i3GEOF.graficointerativo1.propJanelas[idjanela].comp,
n = c.length,
i,
nmeta,
dadosNovos,
metaNovos,
rsNovos,
rs,
a = {},
b = {},
e = [],
d = "",
j,
nj;
if(n > 0){
for(i=0;i 0){
for(i=0;i"
+ " X"
+ "";
}
$i(idjanela + "Composicoes").innerHTML = ins;
},
/**
* Lista as janelas de graficos abertas
*/
combojanelas: function(idjanela){
var n = i3GEOF.graficointerativo1.janelas.length,
ins = "",
i;
ins += "";
$i(idjanela + "ComboJanelasGr").innerHTML = ins;
},
/**
* Verifica se o grafico dessa janela tem sobreposicao
*/
existe: function(idjanela){
},
/**
* Guarda os parametros do grafico correspondente a uma sobreposicao
*/
guardaParametros: function(idjanela){
}
},
filtraCamada: function(idjanela,filtro){
var p, cp, temp,tema = i3GEOF.graficointerativo1.propJanelas[idjanela].tema;
p = i3GEO.configura.locaplic+"/ferramentas/filtro/exec.php?base64=sim&g_sid="+i3GEO.configura.sid+"&funcao=inserefiltro&filtro="+i3GEO.util.base64encode(filtro);
cp = new cpaint();
cp.set_response_type("JSON");
cp.set_transfer_mode('POST');
temp = function(retorno){
i3GEO.Interface.atualizaTema(retorno,tema);
};
cp.call(p,"insereFiltro",temp,"tema="+tema);
},
limparFiltros: function(){
var i, p, cp, temp,tema,
n = i3GEOF.graficointerativo1.janelas.length;
p = i3GEO.configura.locaplic+"/ferramentas/filtro/exec.php?base64=sim&g_sid="+i3GEO.configura.sid+"&funcao=inserefiltro";
cp = new cpaint();
cp.set_response_type("JSON");
cp.set_transfer_mode('POST');
for(i=0;i