diff --git a/admin/js/estat_editor.js b/admin/js/estat_editor.js index 2ca5ef6..a44303a 100644 --- a/admin/js/estat_editor.js +++ b/admin/js/estat_editor.js @@ -45,18 +45,33 @@ i3GEOadmin.editor = { }, esquema: { onde: "i3GEOadminEditorEsquema", - lista: function(){ + lista: function(selecao){ var callback = { success:function(o){ try { var dados = YAHOO.lang.JSON.parse(o.responseText), - temp = "

Escolha um esquema: "; - temp += "

"; + temp = "

Escolha um esquema: " + + "

" + + "

" + + " 

"; + $i(i3GEOadmin.editor.esquema.onde).innerHTML = temp+"
"; + if(selecao){ + $i("i3GEOadminesquema").value = selecao; + i3GEOadmin.editor.tabela.lista(); + } core_carregando("desativa"); $i(i3GEOadmin.editor.tabela.onde).innerHTML = ""; + new YAHOO.widget.Button( + "i3GEOadminesquemaCriar", + {onclick:{fn: i3GEOadmin.editor.esquema.criar}} + ); + new YAHOO.widget.Button( + "i3GEOadminesquemaAlterarNome", + {onclick:{fn: i3GEOadmin.editor.esquema.alterarNome}} + ); } catch(e){core_handleFailure(e,o.responseText);} }, @@ -73,6 +88,68 @@ i3GEOadmin.editor = { core_carregando("buscando dados..."); core_makeRequest("../php/metaestat.php?funcao=esquemasConexao&formato=json&codigo_estat_conexao="+codigo_estat_conexao,callback); }, + criar: function(){ + var callback = { + success:function(o){ + try { + core_carregando("desativa"); + i3GEOadmin.editor.esquema.lista(novoEsquema); + } + catch(e){core_handleFailure(e,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }, + novoEsquema = window.prompt("Novo nome:",""); + if (novoEsquema != null && novoEsquema != ""){ + if(i3GEOadmin.editor.esquema.verificaExiste(novoEsquema) == false){ + core_carregando("adicionando..."); + core_makeRequest("../php/metaestat.php?funcao=criaEsquemaDB&formato=json&nome_esquema="+novoEsquema+"&codigo_estat_conexao="+$i("i3GEOadmincodigo_estat_conexao").value,callback); + } + else{ + alert("Esquema ja existe"); + } + } + }, + alterarNome: function(){ + if($i("i3GEOadminesquema").value == ""){ + alert("Escolha o esquema"); + return; + } + var callback = { + success:function(o){ + try { + core_carregando("desativa"); + i3GEOadmin.editor.esquema.lista(); + } + catch(e){core_handleFailure(e,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }, + nomeEsquema = $i("i3GEOadminesquema").value; + novoEsquema = window.prompt("Novo nome:",""); + if (novoEsquema != null && novoEsquema != ""){ + if(i3GEOadmin.editor.esquema.verificaExiste(novoEsquema) == false){ + core_carregando("adicionando..."); + core_makeRequest("../php/metaestat.php?funcao=alteraNomeEsquemaDB&formato=json&nome_esquema="+nomeEsquema+"&novonome_esquema="+novoEsquema+"&codigo_estat_conexao="+$i("i3GEOadmincodigo_estat_conexao").value,callback); + } + else{ + alert("Esquema ja existe"); + } + } + }, + verificaExiste: function(valor){ + var combo = $i("i3GEOadminesquema"), + n = combo.options.length, + i; + for(i=0;iexecSQLDB($codigo_estat_conexao,"ALTER TABLE ".$nome_esquema.".".$nome_tabela." RENAME TO ".$novonome_tabela ); + /* $tabela = $this->execSQLDB($codigo_estat_conexao,"SELECT table_name FROM information_schema.tables where table_name = '$novonome_tabela' and table_schema = '$nome_esquema'"); if(count($tabela) > 0){ $sql = "UPDATE i3geoestat_medida_variavel SET tabela = '$novonome_tabela' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela'"; @@ -2018,6 +2019,7 @@ class Metaestat{ $sql = "UPDATE i3geoestat_tipo_regiao SET tabela = '$novonome_tabela' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela'"; $this->execSQL($sql,"",false); } + */ return $res; } /** @@ -2031,6 +2033,17 @@ class Metaestat{ function copiaTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$novonome_tabela){ return $this->execSQLDB($codigo_estat_conexao,"CREATE TABLE ".$nome_esquema.".".$novonome_tabela." AS select * from ".$nome_esquema.".".$nome_tabela ); } + /** + * ALtera o nome de um esquema + * @param codigo da conexao + * @param nome do esquema + * @param novo nome do esquema + * @return execSQLDB + */ + function alteraNomeEsquemaDB($codigo_estat_conexao,$nome_esquema,$novonome_esquema){ + $res = $this->execSQLDB($codigo_estat_conexao,"ALTER SCHEMA ".$nome_esquema." RENAME TO ".$novonome_esquema ); + return $res; + } /** * Lista as colunas de uma tabela e seus metadados * @param codigo da conexao diff --git a/admin/php/metaestat.php b/admin/php/metaestat.php index 69de5ae..a6d139a 100644 --- a/admin/php/metaestat.php +++ b/admin/php/metaestat.php @@ -75,7 +75,9 @@ $funcoesEdicao = array( "EXCLUIRCLASSECLASSIFICACAO", "EXCLUIRLINKMEDIDA", "CRIATABELADB", + "CRIAESQUEMADB", "ALTERANOMETABELADB", + "ALTERANOMEESQUEMADB", "COPIATABELADB", "CRIACOLUNADB", "ALTERANOMECOLUNADB", @@ -1306,6 +1308,11 @@ switch (strtoupper($funcao)) retornaJSON($m->criaTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela)); exit; break; + case "CRIAESQUEMADB": + $m = new Metaestat(); + retornaJSON($m->criaEsquemaDB($codigo_estat_conexao,$nome_esquema)); + exit; + break; case "ALTERANOMETABELADB": $m = new Metaestat(); if($nome_esquema != "i3geo_metaestat"){ @@ -1315,6 +1322,11 @@ switch (strtoupper($funcao)) retornaJSON($m->alteraNomeTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$novonome_tabela)); exit; break; + case "ALTERANOMEESQUEMADB": + $m = new Metaestat(); + retornaJSON($m->alteraNomeEsquemaDB($codigo_estat_conexao,$nome_esquema,$novonome_esquema)); + exit; + break; case "COPIATABELADB": $m = new Metaestat(); if($nome_esquema != "i3geo_metaestat"){ -- libgit2 0.21.2