From 6af0c9999500ceb0641c93223282192e85ab2280 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 28 Jan 2013 19:41:34 +0000 Subject: [PATCH] Inclusão de opções de download de dados em CSV --- admin/index.html | 4 ++-- admin/js/estat_editor.js | 51 ++++++++++++++++++++++++++++++++++++++++++++------- admin/php/classe_metaestat.php | 21 ++++++++++++++++----- admin/php/metaestat.php | 12 +++++++++++- 4 files changed, 73 insertions(+), 15 deletions(-) diff --git a/admin/index.html b/admin/index.html index 6d32f9d..bbf950b 100644 --- a/admin/index.html +++ b/admin/index.html @@ -186,9 +186,9 @@
Cadastro de fontes de informação - +
- Upload e download de dados + Upload de dados
diff --git a/admin/js/estat_editor.js b/admin/js/estat_editor.js index 94c62e5..65f0f2d 100644 --- a/admin/js/estat_editor.js +++ b/admin/js/estat_editor.js @@ -86,11 +86,32 @@ i3GEOadmin.editor = { temp += core_comboObjeto(dados,"tabela","tabela"); temp += ""; temp += "" + - "

" + - "" + - "" + - ""; + "

" + + "" + + "" + + "" + + ""; $i(i3GEOadmin.editor.tabela.onde).innerHTML = temp+""; + new YAHOO.widget.Button( + "i3GEOadmintabelaMostrar", + {onclick:{fn: i3GEOadmin.editor.tabela.mostrar}} + ); + new YAHOO.widget.Button( + "i3GEOadmintabelaCsv", + {onclick:{fn: i3GEOadmin.editor.tabela.csv}} + ); + new YAHOO.widget.Button( + "i3GEOadmintabelaCriar", + {onclick:{fn: i3GEOadmin.editor.tabela.criar}} + ); + new YAHOO.widget.Button( + "i3GEOadmintabelaAlterarNome", + {onclick:{fn: i3GEOadmin.editor.tabela.alterarNome }} + ); + new YAHOO.widget.Button( + "i3GEOadmintabelaCopiar", + {onclick:{fn: i3GEOadmin.editor.tabela.copiar }} + ); core_carregando("desativa"); $i(i3GEOadmin.editor.coluna.onde).innerHTML = ""; } @@ -242,7 +263,15 @@ i3GEOadmin.editor = { }, nomeEsquema = $i("i3GEOadminesquema").value; core_carregando("obtendo dados..."); - 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); + 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); + }, + csv: function(){ + if($i("i3GEOadmintabela").value == ""){ + alert("Escolha a tabela"); + return; + } + nomeEsquema = $i("i3GEOadminesquema").value; + 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); }, verificaExiste: function(valor){ var combo = $i("i3GEOadmintabela"), @@ -268,9 +297,17 @@ i3GEOadmin.editor = { temp += core_comboObjeto(dados,"",""); temp += ""; temp += "" + - "

" + - ""; + "

" + + ""; $i(i3GEOadmin.editor.coluna.onde).innerHTML = temp+""; + new YAHOO.widget.Button( + "i3GEOadmincolunaCriar", + {onclick:{fn: i3GEOadmin.editor.coluna.criar}} + ); + new YAHOO.widget.Button( + "i3GEOadmincolunaAlterarNome", + {onclick:{fn: i3GEOadmin.editor.coluna.alterarNome}} + ); core_carregando("desativa"); } catch(e){core_handleFailure(e,o.responseText);} diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index 8ff9a89..7b5de6b 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -1611,18 +1611,29 @@ class Metaestat{ function descreveColunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){ 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"); } - function obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela){ - $colunas = $this->descreveColunasTabela($codigo_estat_conexao, $nome_esquema, $nome_tabela); - $dados = $this->execSQLDB($codigo_estat_conexao,"SELECT * from ".$nome_esquema.".".$nome_tabela ); + function obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo="nao"){ + $desccolunas = $this->descreveColunasTabela($codigo_estat_conexao, $nome_esquema, $nome_tabela); + $colunas = array(); + foreach($desccolunas as $d){ + if($geo == "sim"){ + $colunas[] = $d["field"]; + } + else{ + if($d["type"] != "geometry" && $d["type"] != "geography"){ + $colunas[] = $d["field"]; + } + } + } + $dados = $this->execSQLDB($codigo_estat_conexao,"SELECT ".implode(",",$colunas)." from ".$nome_esquema.".".$nome_tabela ); $linhas = array(); foreach($dados as $d){ $l = array(); foreach($colunas as $c){ - $l[] = $d[$c["field"]]; + $l[] = $d[$c]; } $linhas[] = $l; } - return array("colunas"=>$colunas,"linhas"=>$linhas); + return array("nomescolunas"=>$colunas,"colunas"=>$desccolunas,"linhas"=>$linhas); } function relatorioCompleto($codigo_variavel="",$dadosGerenciais="nao"){ $dados = array(); diff --git a/admin/php/metaestat.php b/admin/php/metaestat.php index dd31d58..a3009f1 100644 --- a/admin/php/metaestat.php +++ b/admin/php/metaestat.php @@ -1326,7 +1326,17 @@ switch (strtoupper($funcao)) break; case "OBTEMDADOSTABELADB": $m = new Metaestat(); - retornaJSON($m->obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela)); + if($formato == "json"){ + retornaJSON($m->obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo)); + } + if($formato == "csv"){ + $dados = $m->obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo); + require_once(__DIR__."/../../pacotes/parsecsv/parsecsv.lib.php"); + $csv = new parseCSV(); + //$csv->encoding('UTF-16', 'UTF-8'); + $csv->titles = $dados["nomescolunas"]; + $csv->output(true, 'mvar'.$nome_tabela.'_'.date('dmY').'.csv', $dados["linhas"]); + } exit; break; /* -- libgit2 0.21.2