Commit 6af0c9999500ceb0641c93223282192e85ab2280

Authored by Edmar Moretti
1 parent c235e40e

Inclusão de opções de download de dados em CSV

admin/index.html
... ... @@ -186,9 +186,9 @@
186 186 <td><div class=aplicar></div></td>
187 187 <td>Cadastro de fontes de informa&ccedil;&atilde;o</td>
188 188 </tr>
189   - <tr onclick="abre('estat_uploaddados.html')">
  189 + <tr onclick="abre('html/estat_uploaddados.html')">
190 190 <td><div class=aplicar></div></td>
191   - <td>Upload e download de dados</td>
  191 + <td>Upload de dados</td>
192 192 </tr>
193 193 <tr onclick="abre('html/estat_editor.html')">
194 194 <td><div class=aplicar></div></td>
... ...
admin/js/estat_editor.js
... ... @@ -86,11 +86,32 @@ i3GEOadmin.editor = {
86 86 temp += core_comboObjeto(dados,"tabela","tabela");
87 87 temp += "</select>";
88 88 temp += "" +
89   - "<p><input type=button value='Mostrar os dados' id='i3GEOadmintabelaMostrar' onclick='i3GEOadmin.editor.tabela.mostrar()'/>" +
90   - "<input type=button value='Criar uma nova tabela' id='i3GEOadmintabelaCriar' onclick='i3GEOadmin.editor.tabela.criar()'/>" +
91   - "<input type=button value='Alterar nome atual' id='i3GEOadmintabelaAlterarNome' onclick='i3GEOadmin.editor.tabela.alterarNome()'/>" +
92   - "<input type=button value='Copiar para' id='i3GEOadmintabelaCopiar' onclick='i3GEOadmin.editor.tabela.copiar()'/>";
  89 + "<p><input type=button value='Relat&oacute;rio' id='i3GEOadmintabelaMostrar' />" +
  90 + "<input type=button value='CSV' id='i3GEOadmintabelaCsv'/>" +
  91 + "<input type=button value='Criar uma nova tabela' id='i3GEOadmintabelaCriar' />" +
  92 + "<input type=button value='Alterar nome atual' id='i3GEOadmintabelaAlterarNome' />" +
  93 + "<input type=button value='Copiar para' id='i3GEOadmintabelaCopiar' />";
93 94 $i(i3GEOadmin.editor.tabela.onde).innerHTML = temp+"</fieldset>";
  95 + new YAHOO.widget.Button(
  96 + "i3GEOadmintabelaMostrar",
  97 + {onclick:{fn: i3GEOadmin.editor.tabela.mostrar}}
  98 + );
  99 + new YAHOO.widget.Button(
  100 + "i3GEOadmintabelaCsv",
  101 + {onclick:{fn: i3GEOadmin.editor.tabela.csv}}
  102 + );
  103 + new YAHOO.widget.Button(
  104 + "i3GEOadmintabelaCriar",
  105 + {onclick:{fn: i3GEOadmin.editor.tabela.criar}}
  106 + );
  107 + new YAHOO.widget.Button(
  108 + "i3GEOadmintabelaAlterarNome",
  109 + {onclick:{fn: i3GEOadmin.editor.tabela.alterarNome }}
  110 + );
  111 + new YAHOO.widget.Button(
  112 + "i3GEOadmintabelaCopiar",
  113 + {onclick:{fn: i3GEOadmin.editor.tabela.copiar }}
  114 + );
94 115 core_carregando("desativa");
95 116 $i(i3GEOadmin.editor.coluna.onde).innerHTML = "";
96 117 }
... ... @@ -242,7 +263,15 @@ i3GEOadmin.editor = {
242 263 },
243 264 nomeEsquema = $i("i3GEOadminesquema").value;
244 265 core_carregando("obtendo dados...");
245   - core_makeRequest("../php/metaestat.php?funcao=obtemDadosTabelaDB&formato=json&nome_tabela="+$i("i3GEOadmintabela").value+"&nome_esquema="+nomeEsquema+"&codigo_estat_conexao="+$i("i3GEOadmincodigo_estat_conexao").value,callback);
  266 + core_makeRequest("../php/metaestat.php?funcao=obtemDadosTabelaDB&geo=nao&formato=json&nome_tabela="+$i("i3GEOadmintabela").value+"&nome_esquema="+nomeEsquema+"&codigo_estat_conexao="+$i("i3GEOadmincodigo_estat_conexao").value,callback);
  267 + },
  268 + csv: function(){
  269 + if($i("i3GEOadmintabela").value == ""){
  270 + alert("Escolha a tabela");
  271 + return;
  272 + }
  273 + nomeEsquema = $i("i3GEOadminesquema").value;
  274 + window.open("../php/metaestat.php?funcao=obtemDadosTabelaDB&geo=nao&formato=csv&nome_tabela="+$i("i3GEOadmintabela").value+"&nome_esquema="+nomeEsquema+"&codigo_estat_conexao="+$i("i3GEOadmincodigo_estat_conexao").value);
246 275 },
247 276 verificaExiste: function(valor){
248 277 var combo = $i("i3GEOadmintabela"),
... ... @@ -268,9 +297,17 @@ i3GEOadmin.editor = {
268 297 temp += core_comboObjeto(dados,"","");
269 298 temp += "</select>";
270 299 temp += "" +
271   - "<p><input type=button value='Adicionar uma nova coluna' id='i3GEOadmincolunaCriar' onclick='i3GEOadmin.editor.coluna.criar()'/>" +
272   - "<input type=button value='Alterar o nome atual' id='i3GEOadmincolunaAlterarNome' onclick='i3GEOadmin.editor.coluna.alterarNome()'/>";
  300 + "<p><input type=button value='Adicionar uma nova coluna' id='i3GEOadmincolunaCriar' />" +
  301 + "<input type=button value='Alterar o nome atual' id='i3GEOadmincolunaAlterarNome' />";
273 302 $i(i3GEOadmin.editor.coluna.onde).innerHTML = temp+"</fieldset>";
  303 + new YAHOO.widget.Button(
  304 + "i3GEOadmincolunaCriar",
  305 + {onclick:{fn: i3GEOadmin.editor.coluna.criar}}
  306 + );
  307 + new YAHOO.widget.Button(
  308 + "i3GEOadmincolunaAlterarNome",
  309 + {onclick:{fn: i3GEOadmin.editor.coluna.alterarNome}}
  310 + );
274 311 core_carregando("desativa");
275 312 }
276 313 catch(e){core_handleFailure(e,o.responseText);}
... ...
admin/php/classe_metaestat.php
... ... @@ -1611,18 +1611,29 @@ class Metaestat{
1611 1611 function descreveColunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){
1612 1612 return $this->execSQLDB($codigo_estat_conexao,"SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a.atttypmod AS lengthvar,a.attnotnull AS notnull,p.nspname as esquema FROM pg_class c,pg_attribute a,pg_type t,pg_namespace p WHERE c.relname = '$nome_tabela' and p.nspname = '$nome_esquema' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relnamespace = p.oid ORDER BY a.attname");
1613 1613 }
1614   - function obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela){
1615   - $colunas = $this->descreveColunasTabela($codigo_estat_conexao, $nome_esquema, $nome_tabela);
1616   - $dados = $this->execSQLDB($codigo_estat_conexao,"SELECT * from ".$nome_esquema.".".$nome_tabela );
  1614 + function obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo="nao"){
  1615 + $desccolunas = $this->descreveColunasTabela($codigo_estat_conexao, $nome_esquema, $nome_tabela);
  1616 + $colunas = array();
  1617 + foreach($desccolunas as $d){
  1618 + if($geo == "sim"){
  1619 + $colunas[] = $d["field"];
  1620 + }
  1621 + else{
  1622 + if($d["type"] != "geometry" && $d["type"] != "geography"){
  1623 + $colunas[] = $d["field"];
  1624 + }
  1625 + }
  1626 + }
  1627 + $dados = $this->execSQLDB($codigo_estat_conexao,"SELECT ".implode(",",$colunas)." from ".$nome_esquema.".".$nome_tabela );
1617 1628 $linhas = array();
1618 1629 foreach($dados as $d){
1619 1630 $l = array();
1620 1631 foreach($colunas as $c){
1621   - $l[] = $d[$c["field"]];
  1632 + $l[] = $d[$c];
1622 1633 }
1623 1634 $linhas[] = $l;
1624 1635 }
1625   - return array("colunas"=>$colunas,"linhas"=>$linhas);
  1636 + return array("nomescolunas"=>$colunas,"colunas"=>$desccolunas,"linhas"=>$linhas);
1626 1637 }
1627 1638 function relatorioCompleto($codigo_variavel="",$dadosGerenciais="nao"){
1628 1639 $dados = array();
... ...
admin/php/metaestat.php
... ... @@ -1326,7 +1326,17 @@ switch (strtoupper($funcao))
1326 1326 break;
1327 1327 case "OBTEMDADOSTABELADB":
1328 1328 $m = new Metaestat();
1329   - retornaJSON($m->obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela));
  1329 + if($formato == "json"){
  1330 + retornaJSON($m->obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo));
  1331 + }
  1332 + if($formato == "csv"){
  1333 + $dados = $m->obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo);
  1334 + require_once(__DIR__."/../../pacotes/parsecsv/parsecsv.lib.php");
  1335 + $csv = new parseCSV();
  1336 + //$csv->encoding('UTF-16', 'UTF-8');
  1337 + $csv->titles = $dados["nomescolunas"];
  1338 + $csv->output(true, 'mvar'.$nome_tabela.'_'.date('dmY').'.csv', $dados["linhas"]);
  1339 + }
1330 1340 exit;
1331 1341 break;
1332 1342 /*
... ...