Commit cef147ce72cd071a2b5918cf9390e9d518fcca46

Authored by Edmar Moretti
1 parent eb576060

--no commit message

Showing 1 changed file with 155 additions and 37 deletions   Show diff stats
ferramentas/graficointerativo/index.js.php
@@ -38,7 +38,7 @@ i3GEOF.graficointerativo = { @@ -38,7 +38,7 @@ i3GEOF.graficointerativo = {
38 */ 38 */
39 aguarde: "", 39 aguarde: "",
40 /* 40 /*
41 - Variavel: tipo 41 + Propriedade: tipo
42 42
43 Tipo de gráfico escolhido pelo usuário. 43 Tipo de gráfico escolhido pelo usuário.
44 */ 44 */
@@ -48,11 +48,13 @@ i3GEOF.graficointerativo = { @@ -48,11 +48,13 @@ i3GEOF.graficointerativo = {
48 48
49 Inicia a ferramenta. É chamado por criaJanelaFlutuante 49 Inicia a ferramenta. É chamado por criaJanelaFlutuante
50 50
51 - Parametro: 51 + Parametros:
52 52
53 iddiv {String} - id do div que receberá o conteudo HTML da ferramenta 53 iddiv {String} - id do div que receberá o conteudo HTML da ferramenta
  54 +
  55 + dados {JSON} - dados para o gráfico (opcional)
54 */ 56 */
55 - inicia: function(iddiv){ 57 + inicia: function(iddiv,dados){
56 try{ 58 try{
57 $i(iddiv).innerHTML += i3GEOF.graficointerativo.html(); 59 $i(iddiv).innerHTML += i3GEOF.graficointerativo.html();
58 i3GEO.guias.mostraGuiaFerramenta("i3GEOgraficointerativoguia1","i3GEOgraficointerativoguia"); 60 i3GEO.guias.mostraGuiaFerramenta("i3GEOgraficointerativoguia1","i3GEOgraficointerativoguia");
@@ -64,6 +66,9 @@ i3GEOF.graficointerativo = { @@ -64,6 +66,9 @@ i3GEOF.graficointerativo = {
64 i3GEO.guias.mostraGuiaFerramenta("i3GEOgraficointerativoguia2","i3GEOgraficointerativoguia"); 66 i3GEO.guias.mostraGuiaFerramenta("i3GEOgraficointerativoguia2","i3GEOgraficointerativoguia");
65 i3GEOF.graficointerativo.configuraDados(); 67 i3GEOF.graficointerativo.configuraDados();
66 }; 68 };
  69 + $i("i3GEOgraficointerativoguia3").onclick = function(){
  70 + i3GEO.guias.mostraGuiaFerramenta("i3GEOgraficointerativoguia3","i3GEOgraficointerativoguia");
  71 + };
67 $i("i3GEOgraficointerativoguia4").onclick = function(){ 72 $i("i3GEOgraficointerativoguia4").onclick = function(){
68 i3GEO.guias.mostraGuiaFerramenta("i3GEOgraficointerativoguia4","i3GEOgraficointerativoguia"); 73 i3GEO.guias.mostraGuiaFerramenta("i3GEOgraficointerativoguia4","i3GEOgraficointerativoguia");
69 var so = new SWFObject(i3GEO.configura.locaplic+"/pacotes/openflashchart/open-flash-chart.swf", "i3GEOgraficointerativoGrafico1", "95%", "88%", "9", "#ffffff"); 74 var so = new SWFObject(i3GEO.configura.locaplic+"/pacotes/openflashchart/open-flash-chart.swf", "i3GEOgraficointerativoGrafico1", "95%", "88%", "9", "#ffffff");
@@ -96,7 +101,13 @@ i3GEOF.graficointerativo = { @@ -96,7 +101,13 @@ i3GEOF.graficointerativo = {
96 new YAHOO.widget.Button( 101 new YAHOO.widget.Button(
97 "i3GEOgraficointerativobotao1", 102 "i3GEOgraficointerativobotao1",
98 {onclick:{fn: i3GEOF.graficointerativo.obterDados}} 103 {onclick:{fn: i3GEOF.graficointerativo.obterDados}}
99 - ); 104 + );
  105 + if(arguments.length === 2){
  106 + //i3GEOF.graficointerativo.tipo = "pizza2d";
  107 + //var retorno = {"attributes":{"id":""},"data":{"dados":["n;x","'4';3839572","'8';81710320","'7';24631314","'2';10967753","'1';24496400","'3';18752482","'5';13574480","'6';216507515"]}};
  108 + i3GEOF.graficointerativo.montaTabelaDados(dados);
  109 + $i("i3GEOgraficointerativoguia4").onclick.call();
  110 + }
100 } 111 }
101 catch(erro){alert(erro);} 112 catch(erro){alert(erro);}
102 }, 113 },
@@ -159,10 +170,13 @@ i3GEOF.graficointerativo = { @@ -159,10 +170,13 @@ i3GEOF.graficointerativo = {
159 ' </div>' + 170 ' </div>' +
160 ' <p class=paragrafo >Excluir o seguinte valor: ' + 171 ' <p class=paragrafo >Excluir o seguinte valor: ' +
161 $inputText("","","i3GEOgraficointerativoexcluir","",3,"") + 172 $inputText("","","i3GEOgraficointerativoexcluir","",3,"") +
  173 + ' <p class=paragrafo ><input type=checkbox style=cursor:pointer id=i3GEOgraficointerativoCoresA /> gera cores aleatórias</p>' +
162 ' <p class=paragrafo ><input id=i3GEOgraficointerativobotao1 type="buttom" value="Obter dados" /></p>'+ 174 ' <p class=paragrafo ><input id=i3GEOgraficointerativobotao1 type="buttom" value="Obter dados" /></p>'+
163 ' <div id=i3GEOgraficointerativoDados ></div>'+ 175 ' <div id=i3GEOgraficointerativoDados ></div>'+
164 '</div>' + 176 '</div>' +
165 '<div class=guiaobj id="i3GEOgraficointerativoguia3obj" style="left:1px;display:none;top:-5px">' + 177 '<div class=guiaobj id="i3GEOgraficointerativoguia3obj" style="left:1px;display:none;top:-5px">' +
  178 + ' <p class=paragrafo ><input style=cursor:pointer type=checkbox id=i3GEOgraficointerativoAcumula /> Utiliza valores acumulados</p>' +
  179 + ' <p class=paragrafo ><input style=cursor:pointer type=checkbox id=i3GEOgraficointerativoRelativa /> Utiliza valores relativos (%)</p>' +
166 '</div>'+ 180 '</div>'+
167 '<div class=guiaobj id="i3GEOgraficointerativoguia4obj" style="left:1px;display:none;top:-5px">' + 181 '<div class=guiaobj id="i3GEOgraficointerativoguia4obj" style="left:1px;display:none;top:-5px">' +
168 ' <div id="i3GEOgraficointerativoGrafico"></div>' + 182 ' <div id="i3GEOgraficointerativoGrafico"></div>' +
@@ -173,8 +187,12 @@ i3GEOF.graficointerativo = { @@ -173,8 +187,12 @@ i3GEOF.graficointerativo = {
173 Function: criaJanelaFlutuante 187 Function: criaJanelaFlutuante
174 188
175 Cria a janela flutuante para controle da ferramenta. 189 Cria a janela flutuante para controle da ferramenta.
  190 +
  191 + Parametro
  192 +
  193 + dados {JSON} - dados para o gráfico
176 */ 194 */
177 - criaJanelaFlutuante: function(){ 195 + criaJanelaFlutuante: function(dados){
178 var minimiza,cabecalho,janela,divid,temp,titulo; 196 var minimiza,cabecalho,janela,divid,temp,titulo;
179 //cria a janela flutuante 197 //cria a janela flutuante
180 cabecalho = function(){ 198 cabecalho = function(){
@@ -200,7 +218,10 @@ i3GEOF.graficointerativo = { @@ -200,7 +218,10 @@ i3GEOF.graficointerativo = {
200 divid = janela[2].id; 218 divid = janela[2].id;
201 i3GEOF.graficointerativo.aguarde = $i("i3GEOF.graficointerativo_imagemCabecalho").style; 219 i3GEOF.graficointerativo.aguarde = $i("i3GEOF.graficointerativo_imagemCabecalho").style;
202 $i("i3GEOF.graficointerativo_corpo").style.backgroundColor = "white"; 220 $i("i3GEOF.graficointerativo_corpo").style.backgroundColor = "white";
203 - i3GEOF.graficointerativo.inicia(divid); 221 + if(arguments.length === 0)
  222 + {i3GEOF.graficointerativo.inicia(divid);}
  223 + else
  224 + {i3GEOF.graficointerativo.inicia(divid,dados);}
204 }, 225 },
205 /* 226 /*
206 Function: ativaFoco 227 Function: ativaFoco
@@ -282,7 +303,6 @@ i3GEOF.graficointerativo = { @@ -282,7 +303,6 @@ i3GEOF.graficointerativo = {
282 obterDados: function(){ 303 obterDados: function(){
283 if(i3GEOF.graficointerativo.aguarde.visibility === "visible") 304 if(i3GEOF.graficointerativo.aguarde.visibility === "visible")
284 {return;} 305 {return;}
285 -  
286 var tema = $i("i3GEOgraficointerativoComboTemasId").value, 306 var tema = $i("i3GEOgraficointerativoComboTemasId").value,
287 x = $i("i3GEOgraficointerativoComboXid").value, 307 x = $i("i3GEOgraficointerativoComboXid").value,
288 y = $i("i3GEOgraficointerativoComboYid").value, 308 y = $i("i3GEOgraficointerativoComboYid").value,
@@ -301,50 +321,78 @@ i3GEOF.graficointerativo = { @@ -301,50 +321,78 @@ i3GEOF.graficointerativo = {
301 {alert("Escolha um item para Y");return;} 321 {alert("Escolha um item para Y");return;}
302 monta = function(retorno){ 322 monta = function(retorno){
303 i3GEOF.graficointerativo.aguarde.visibility = "hidden"; 323 i3GEOF.graficointerativo.aguarde.visibility = "hidden";
304 - var dados = retorno.data.dados,  
305 - n = dados.length,  
306 - v,  
307 - ins = [],  
308 - i,  
309 - id;  
310 - ins.push("<p class=paragrafo >Tabela de dados para o gráfico. Os valores podem ser editados</p><table class=lista4 id=i3GEOgraficointerativotabeladados ><tr><td></td><td style=background-color:yellow >nome</td><td style=background-color:yellow >valor</td><td style=background-color:yellow >cor</td><td></td></tr>");  
311 - for (i=1;i<n; i++){  
312 - v = dados[i].split(";");  
313 - v[0] = v[0].replace("'","");  
314 - v[0] = v[0].replace("'","");  
315 - //ins += v[0]+" "+v[1];  
316 - id = "i3GEOgraficointerativoDados"+i; //layer+indice da classe  
317 - ins.push("<tr><td>");  
318 - ins.push("<img style='cursor:pointer' title='clique para excluir' onclick='i3GEOF.graficointerativo.excluilinha(this)' src='"+i3GEO.configura.locaplic+"/imagens/x.gif' title='excluir' /></td>");  
319 - ins.push("</td><td>");  
320 - ins.push($inputText("","",id+"_nome","digite o novo nome",20,v[0],"nome"));  
321 - ins.push("</td><td>");  
322 - ins.push($inputText("","",id+"_valor","digite o novo valor",12,v[1],"valor"));  
323 - ins.push("</td><td>");  
324 - ins.push($inputText("","",id+"_cor","",12,"#d01f3c","cor"));  
325 - ins.push("</td><td>");  
326 - ins.push("<img alt='aquarela.gif' style=cursor:pointer src='"+i3GEO.configura.locaplic+"/imagens/aquarela.gif' onclick='i3GEOF.graficointerativo.corj(\""+id+"_cor\")' />");  
327 - ins.push("</td></tr>");  
328 - }  
329 - ins.push("</table><br>");  
330 - $i("i3GEOgraficointerativoDados").innerHTML = ins.join(""); 324 + i3GEOF.graficointerativo.montaTabelaDados(retorno);
  325 + $i("i3GEOgraficointerativoguia4").onclick.call();
331 }; 326 };
332 i3GEOF.graficointerativo.aguarde.visibility = "visible"; 327 i3GEOF.graficointerativo.aguarde.visibility = "visible";
333 cp.set_response_type("JSON"); 328 cp.set_response_type("JSON");
334 cp.call(p+"&tipo="+tipo,"graficoSelecao",monta); 329 cp.call(p+"&tipo="+tipo,"graficoSelecao",monta);
335 }, 330 },
336 /* 331 /*
  332 + Function: montaTabelaDados
  333 +
  334 + Monta a tabela com os dados que serão utilizados no gráfico
  335 +
  336 + Parametro:
  337 +
  338 + retorno {JSON} - dados no formato JSON
  339 + */
  340 + montaTabelaDados: function(retorno){
  341 + var dados = retorno.data.dados,
  342 + n = dados.length,
  343 + v,
  344 + ins = [],
  345 + i,
  346 + id,
  347 + cor = "#d01f3c";
  348 + ins.push("<p class=paragrafo >Tabela de dados para o gráfico. Os valores podem ser editados</p><table class=lista4 id=i3GEOgraficointerativotabeladados ><tr><td></td>");
  349 + ins.push("<td style=background-color:yellow >&nbsp;<img style=cursor:pointer onclick='i3GEOF.graficointerativo.ordenaColuna(this,1)' src='"+i3GEO.configura.locaplic+"/imagens/ordena1.gif' title='ordena' /> nome</td>");
  350 + ins.push("<td style=background-color:yellow >&nbsp;<img style=cursor:pointer onclick='i3GEOF.graficointerativo.ordenaColuna(this,2)' src='"+i3GEO.configura.locaplic+"/imagens/ordena1.gif' title='ordena' /> valor</td>");
  351 + ins.push("<td style=background-color:yellow >cor</td><td></td></tr>");
  352 + for (i=1;i<n; i++){
  353 + v = dados[i].split(";");
  354 + v[0] = v[0].replace("'","");
  355 + v[0] = v[0].replace("'","");
  356 + //ins += v[0]+" "+v[1];
  357 + id = "i3GEOgraficointerativoDados"+i; //layer+indice da classe
  358 + ins.push("<tr><td>");
  359 + ins.push("<img style='cursor:pointer' title='clique para excluir' onclick='i3GEOF.graficointerativo.excluilinha(this)' src='"+i3GEO.configura.locaplic+"/imagens/x.gif' title='excluir' /></td>");
  360 + ins.push("</td><td>");
  361 + ins.push($inputText("","",id+"_nome","digite o novo nome",20,v[0],"nome"));
  362 + ins.push("</td><td>");
  363 + ins.push($inputText("","",id+"_valor","digite o novo valor",12,v[1],"valor"));
  364 + ins.push("</td><td>");
  365 + if($i("i3GEOgraficointerativoCoresA").checked){
  366 + cor = i3GEO.util.rgb2hex(i3GEO.util.randomRGB());
  367 + }
  368 + //verifica se no objeto com os dados existe um terceiro valor com as cores
  369 + if(v[2]){
  370 + cor = v[2];
  371 + }
  372 + ins.push($inputText("","",id+"_cor","",12,cor,"cor"));
  373 + ins.push("</td><td>");
  374 + ins.push("<img alt='aquarela.gif' style=cursor:pointer src='"+i3GEO.configura.locaplic+"/imagens/aquarela.gif' onclick='i3GEOF.graficointerativo.corj(\""+id+"_cor\")' />");
  375 + ins.push("</td></tr>");
  376 + }
  377 + ins.push("</table><br>");
  378 + $i("i3GEOgraficointerativoDados").innerHTML = ins.join("");
  379 + },
  380 + /*
337 Function: tabela2dados 381 Function: tabela2dados
338 382
339 Obtém os dados da tabela para compor o gráfico 383 Obtém os dados da tabela para compor o gráfico
340 */ 384 */
341 tabela2dados: function(){ 385 tabela2dados: function(){
342 - var temp, 386 + try{
  387 + var temp = 0,
  388 + ultimo = 0,
343 inputs = $i("i3GEOgraficointerativoDados").getElementsByTagName("input"), 389 inputs = $i("i3GEOgraficointerativoDados").getElementsByTagName("input"),
344 ninputs = inputs.length, 390 ninputs = inputs.length,
  391 + n,
345 i, 392 i,
346 parametros, 393 parametros,
347 valores = [], 394 valores = [],
  395 + acumulado = [],
348 nomes = [], 396 nomes = [],
349 cores = [], 397 cores = [],
350 indice = $i("i3GEOgraficointerativoComboTemasId").options.selectedIndex, 398 indice = $i("i3GEOgraficointerativoComboTemasId").options.selectedIndex,
@@ -364,14 +412,20 @@ i3GEOF.graficointerativo = { @@ -364,14 +412,20 @@ i3GEOF.graficointerativo = {
364 corGrid = "#D7E4A3", 412 corGrid = "#D7E4A3",
365 divisoesY = 10, 413 divisoesY = 10,
366 rotacaoX = 270, 414 rotacaoX = 270,
367 - legendaX = $i("i3GEOgraficointerativoComboXid").value,  
368 - legendaY = $i("i3GEOgraficointerativoComboYid").value, 415 + legendaX = "",
  416 + legendaY = "",
369 fill = "#C4B86A"; 417 fill = "#C4B86A";
  418 + if($i("i3GEOgraficointerativoComboXid"))
  419 + {legendaX = $i("i3GEOgraficointerativoComboXid").value;}
  420 + if($i("i3GEOgraficointerativoComboYid"))
  421 + {legendaY = $i("i3GEOgraficointerativoComboYid").value;}
370 for(i=0;i<ninputs;i = i + 3){ 422 for(i=0;i<ninputs;i = i + 3){
371 nomes.push(inputs[i].value+" "); 423 nomes.push(inputs[i].value+" ");
372 cores.push(inputs[i+2].value); 424 cores.push(inputs[i+2].value);
373 temp = inputs[i+1].value * 1; 425 temp = inputs[i+1].value * 1;
374 valores.push(temp); 426 valores.push(temp);
  427 + acumulado.push(ultimo + temp);
  428 + ultimo = ultimo + temp;
375 soma += temp; 429 soma += temp;
376 if(temp > maior) 430 if(temp > maior)
377 {maior = temp;} 431 {maior = temp;}
@@ -379,6 +433,18 @@ i3GEOF.graficointerativo = { @@ -379,6 +433,18 @@ i3GEOF.graficointerativo = {
379 {menor = temp;} 433 {menor = temp;}
380 par.push({"value":inputs[i+1].value * 1,"label":inputs[i].value+" "}); 434 par.push({"value":inputs[i+1].value * 1,"label":inputs[i].value+" "});
381 } 435 }
  436 + if($i("i3GEOgraficointerativoAcumula").checked){
  437 + valores = acumulado;
  438 + maior = soma;
  439 + }
  440 + if($i("i3GEOgraficointerativoRelativa").checked){
  441 + n = valores.length;
  442 + for(i=0;i<n;i++){
  443 + valores[i] = (valores[i] * 100) / soma;
  444 + }
  445 + maior = 100;
  446 + menor = 0;
  447 + }
382 if(i3GEOF.graficointerativo.tipo === "pizza2d"){ 448 if(i3GEOF.graficointerativo.tipo === "pizza2d"){
383 parametros = { 449 parametros = {
384 "elements":[{ 450 "elements":[{
@@ -452,6 +518,7 @@ i3GEOF.graficointerativo = { @@ -452,6 +518,7 @@ i3GEOF.graficointerativo = {
452 }; 518 };
453 } 519 }
454 return JSON1.stringify(parametros); 520 return JSON1.stringify(parametros);
  521 + }catch(erro){alert(erro);}
455 }, 522 },
456 /* 523 /*
457 Function: excluilinha 524 Function: excluilinha
@@ -472,6 +539,57 @@ i3GEOF.graficointerativo = { @@ -472,6 +539,57 @@ i3GEOF.graficointerativo = {
472 */ 539 */
473 corj: function(obj) 540 corj: function(obj)
474 {i3GEO.util.abreCor("",obj,"hex");}, 541 {i3GEO.util.abreCor("",obj,"hex");},
  542 + /*
  543 + Function: ordenaColuna
  544 +
  545 + Ordena uma coluna da tabela
  546 + */
  547 + ordenaColuna: function(coluna,cid){
  548 + try{
  549 + var tabela = $i("i3GEOgraficointerativoDados").getElementsByTagName("table")[0],
  550 + trs = tabela.getElementsByTagName("tr"),
  551 + ntrs = trs.length,
  552 + cabecalhotr = trs[0],
  553 + psort = [],
  554 + t,
  555 + psortfim,
  556 + npsortfim,
  557 + ins,
  558 + p,
  559 + e,
  560 + temp,
  561 + chaves = [],
  562 + numero = false;
  563 + function sortNumber(a,b)
  564 + {return a - b;}
  565 + for (t=1;t<ntrs;t++)
  566 + {
  567 + temp = trs[t].childNodes[cid];
  568 + if (temp){
  569 + psort.push(temp.childNodes[0].value);
  570 + chaves[temp.childNodes[0].value] = t;
  571 + if(temp.childNodes[0].value *1)
  572 + {numero = true;}
  573 + }
  574 + }
  575 + //recosntroi a tabela
  576 + if(numero)
  577 + {psortfim = psort.sort(sortNumber);}
  578 + else
  579 + {psortfim = psort.sort();}
  580 + ins = "<tr>" + trs[0].innerHTML + "</tr>";;
  581 + npsortfim = psortfim.length;
  582 + for (p=0;p<npsortfim;p++)
  583 + {
  584 + e = chaves[psortfim[p]];
  585 + //e = psortfim[p].split("+")[1] * 1;
  586 + if (trs[e] !== undefined)
  587 + {ins += "<tr>" + trs[e].innerHTML + "</tr>";}
  588 + }
  589 + tabela.innerHTML = ins;
  590 + }
  591 + catch(e){}
  592 + }
475 }; 593 };
476 //pacotes/openflahchart/json2.js 594 //pacotes/openflahchart/json2.js
477 if (!this.JSON1) { 595 if (!this.JSON1) {