Commit 96380b0706fc42629e24b05fd25bb5f1cf8c30b8
1 parent
41d56aca
Exists in
master
and in
7 other branches
--no commit message
Showing
8 changed files
with
297 additions
and
255 deletions
Show diff stats
admin/admin.db
No preview for this file type
classesjs/classe_analise.js
| ... | ... | @@ -50,6 +50,14 @@ i3GEO.analise = { |
| 50 | 50 | */ |
| 51 | 51 | dialogo:{ |
| 52 | 52 | /* |
| 53 | + Function: saiku | |
| 54 | + | |
| 55 | + Abre a janela de dialogo da ferramenta SAIKU | |
| 56 | + */ | |
| 57 | + saiku: function(){ | |
| 58 | + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.saiku()","saiku","saiku"); | |
| 59 | + }, | |
| 60 | + /* | |
| 53 | 61 | Function: graficoInterativo |
| 54 | 62 | |
| 55 | 63 | Abre a janela de dialogo da ferramenta graficointerativo versao flash | ... | ... |
classesjs/dicionario_ajuda.js
| ... | ... | @@ -978,6 +978,15 @@ g_traducao_ajuda = { |
| 978 | 978 | //tela:"ferramentas/upload/exemplo.htm", |
| 979 | 979 | apijs:"" |
| 980 | 980 | }, |
| 981 | + "117": { | |
| 982 | + titulo: "SAIKU", | |
| 983 | + diretorio:"i3geo/ferramentas/saiku", | |
| 984 | + categoria:"5", | |
| 985 | + pt:"Abre o sistema Saiku que permite o cruzamento de variáveis estatísticas. O Saiku utiliza o sistema de metadados estatísticos para gerar cubos tridimensionais que permitem ao cruzamento de dados tabulares, geração de gráficos e relatórios. O usuário deve adicionar ao mapa pelo menos uma camada com localidades originadas do sistema de metadados. Os elementos dessa camada que estiverem selecionados serão utilizados como filtro no Saiku.", | |
| 986 | + complemento:"", | |
| 987 | + //tela:"ferramentas/upload/exemplo.htm", | |
| 988 | + apijs:"" | |
| 989 | + } | |
| 981 | 990 | } |
| 982 | 991 | }; |
| 983 | 992 | ... | ... |
ferramentas/metaestat/index.js
| ... | ... | @@ -1360,7 +1360,7 @@ i3GEOF.metaestat = { |
| 1360 | 1360 | return ""; |
| 1361 | 1361 | } |
| 1362 | 1362 | //se tiver parametro e todos estiverem vazios, aborta |
| 1363 | - var i,n,c,j,k,val, | |
| 1363 | + var i,n,c,j,val, | |
| 1364 | 1364 | t=[], |
| 1365 | 1365 | dados = i3GEOF.metaestat.parametros.dados; |
| 1366 | 1366 | n = dados.length; | ... | ... |
ferramentas/saiku/Settings.js
| ... | ... | @@ -1,157 +0,0 @@ |
| 1 | -/* | |
| 2 | - * Copyright 2012 OSBI Ltd | |
| 3 | - * | |
| 4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | |
| 5 | - * you may not use this file except in compliance with the License. | |
| 6 | - * You may obtain a copy of the License at | |
| 7 | - * | |
| 8 | - * http://www.apache.org/licenses/LICENSE-2.0 | |
| 9 | - * | |
| 10 | - * Unless required by applicable law or agreed to in writing, software | |
| 11 | - * distributed under the License is distributed on an "AS IS" BASIS, | |
| 12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 13 | - * See the License for the specific language governing permissions and | |
| 14 | - * limitations under the License. | |
| 15 | - */ | |
| 16 | - | |
| 17 | -/** | |
| 18 | - * Change settings here | |
| 19 | - */ | |
| 20 | -var Settings = { | |
| 21 | - VERSION: "Saiku 2.5", | |
| 22 | - BIPLUGIN: false, | |
| 23 | - BASE_URL: "", | |
| 24 | - TOMCAT_WEBAPP: "/saiku", | |
| 25 | - REST_MOUNT_POINT: "/rest/saiku/", | |
| 26 | - DIMENSION_PREFETCH: true, | |
| 27 | - ERROR_LOGGING: false, | |
| 28 | - // number of erroneous ajax calls in a row before UI cant recover | |
| 29 | - ERROR_TOLERANCE: 3, | |
| 30 | - QUERY_PROPERTIES: { | |
| 31 | - 'saiku.olap.query.automatic_execution': 'true', | |
| 32 | - 'saiku.olap.query.nonempty': 'true', | |
| 33 | - 'saiku.olap.query.nonempty.rows': 'true', | |
| 34 | - 'saiku.olap.query.nonempty.columns': 'true', | |
| 35 | - 'saiku.ui.render.mode' : 'table' | |
| 36 | - }, | |
| 37 | - /* Valid values for CELLSET_FORMATTER: | |
| 38 | - * 1) flattened | |
| 39 | - * 2) flat | |
| 40 | - */ | |
| 41 | - CELLSET_FORMATTER: "flattened", | |
| 42 | - // limits the number of rows in the result | |
| 43 | - // 0 - no limit | |
| 44 | - RESULT_LIMIT: 0, | |
| 45 | - MEMBERS_FROM_RESULT: true, | |
| 46 | - PLUGINS: [ | |
| 47 | - "Chart" | |
| 48 | - ], | |
| 49 | - TELEMETRY_SERVER: 'http://telemetry.analytical-labs.com:7000', | |
| 50 | - LOCALSTORAGE_EXPIRATION: 10 * 60 * 60 * 1000 /* 10 hours, in ms */ | |
| 51 | -}; | |
| 52 | - | |
| 53 | -/** | |
| 54 | - * Extend settings with query parameters | |
| 55 | - */ | |
| 56 | -Settings.GET = function () { | |
| 57 | - var qs = document.location.search; | |
| 58 | - qs = qs.split("+").join(" "); | |
| 59 | - var params = {}, | |
| 60 | - tokens, | |
| 61 | - re = /[?&]?([^=]+)=([^&]*)/g; | |
| 62 | - | |
| 63 | - while (tokens = re.exec(qs)) { | |
| 64 | - var value = decodeURIComponent(tokens[2]); | |
| 65 | - if (! isNaN(value)) value = parseInt(value); | |
| 66 | - if (value === "true") value = true; | |
| 67 | - if (value === "false") value = false; | |
| 68 | - params[decodeURIComponent(tokens[1]).toUpperCase()] | |
| 69 | - = value; | |
| 70 | - } | |
| 71 | - | |
| 72 | - return params; | |
| 73 | -}(); | |
| 74 | -_.extend(Settings, Settings.GET); | |
| 75 | - | |
| 76 | -Settings.REST_URL = Settings.BASE_URL | |
| 77 | - + Settings.TOMCAT_WEBAPP | |
| 78 | - + Settings.REST_MOUNT_POINT; | |
| 79 | - | |
| 80 | -// lets assume we dont need a min width/height for table mode | |
| 81 | -if (Settings.MODE == "table") { | |
| 82 | - Settings.DIMENSION_PREFETCH = false; | |
| 83 | - $('body, html').css('min-height',0); | |
| 84 | - $('body, html').css('min-width',0); | |
| 85 | - | |
| 86 | -} | |
| 87 | - | |
| 88 | - | |
| 89 | -/** | |
| 90 | - * < IE9 doesn't support Array.indexOf | |
| 91 | - */ | |
| 92 | -if (!Array.prototype.indexOf) | |
| 93 | -{ | |
| 94 | - Array.prototype.indexOf = function(elt /*, from*/) | |
| 95 | - { | |
| 96 | - var len = this.length >>> 0; | |
| 97 | - | |
| 98 | - var from = Number(arguments[1]) || 0; | |
| 99 | - from = (from < 0) | |
| 100 | - ? Math.ceil(from) | |
| 101 | - : Math.floor(from); | |
| 102 | - if (from < 0) | |
| 103 | - from += len; | |
| 104 | - | |
| 105 | - for (; from < len; from++) | |
| 106 | - { | |
| 107 | - if (from in this && | |
| 108 | - this[from] === elt) | |
| 109 | - return from; | |
| 110 | - } | |
| 111 | - return -1; | |
| 112 | - }; | |
| 113 | -} | |
| 114 | - | |
| 115 | -var tagsToReplace = { | |
| 116 | - '&': '&', | |
| 117 | - '<': '<', | |
| 118 | - '>': '>' | |
| 119 | -}; | |
| 120 | - | |
| 121 | -function replaceTag(tag) { | |
| 122 | - return tagsToReplace[tag] || tag; | |
| 123 | -} | |
| 124 | - | |
| 125 | -function safe_tags_replace(str) { | |
| 126 | - return str.replace(/[&<>]/g, replaceTag); | |
| 127 | -} | |
| 128 | - | |
| 129 | -if ($.blockUI) { | |
| 130 | - $.blockUI.defaults.css = {}; | |
| 131 | - $.blockUI.defaults.overlayCSS = {}; | |
| 132 | - $.blockUI.defaults.blockMsgClass = 'processing'; | |
| 133 | - $.blockUI.defaults.fadeOut = 0; | |
| 134 | - $.blockUI.defaults.fadeIn = 0; | |
| 135 | - $.blockUI.defaults.ignoreIfBlocked = false; | |
| 136 | - | |
| 137 | -} | |
| 138 | -//original alterado por Edmar Moretti | |
| 139 | -/* | |
| 140 | -if (window.location.hostname && (window.location.hostname == "dev.analytical-labs.com" || window.location.hostname == "demo.analytical-labs.com" )) { | |
| 141 | - Settings.USERNAME = "admin"; | |
| 142 | - Settings.PASSWORD = "admin"; | |
| 143 | -} | |
| 144 | -*/ | |
| 145 | -Settings.USERNAME = "admin"; | |
| 146 | -Settings.PASSWORD = "admin"; | |
| 147 | - | |
| 148 | -var isIE = (function(){ | |
| 149 | - var undef, v = 3, div = document.createElement('div'); | |
| 150 | - | |
| 151 | - while ( | |
| 152 | - div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->', | |
| 153 | - div.getElementsByTagName('i')[0] | |
| 154 | - ); | |
| 155 | - | |
| 156 | - return v> 4 ? v : false; | |
| 157 | -}()); |
| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | +//+$trad(1,i3GEOF.saiku.dicionario)+ | |
| 2 | +i3GEOF.saiku.dicionario = { | |
| 3 | + 1: [{ | |
| 4 | + pt:"Você pode selecionar elementos de camadas com localidades e que tenham origem no sistema de metadados estatísticos. Caso essa camada não possua nenhum elemento selecionado, todos serão considerados. Para adicionar uma camada desse tipo utilize a opção <i>Limites e localidades</i> existente no catálogo de temas.", | |
| 5 | + en:"", | |
| 6 | + es:"", | |
| 7 | + it:"" | |
| 8 | + }], | |
| 9 | + 2: [{ | |
| 10 | + pt:"Abrir o Saiku em uma nova janela", | |
| 11 | + en:"", | |
| 12 | + es:"", | |
| 13 | + it:"" | |
| 14 | + }] | |
| 15 | +}; | ... | ... |
ferramentas/saiku/esquemaxml.php
| 1 | 1 | <?php |
| 2 | -var_dump($_COOKIE);exit; | |
| 3 | 2 | include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); |
| 4 | 3 | $m = new Metaestat(); |
| 5 | - | |
| 4 | +$selecaoRegiao = array(); | |
| 5 | +//pega o filtro da sessao PHP aberta pelo i3Geo | |
| 6 | +if(!empty($_COOKIE["i3GeoPHP"])){ | |
| 7 | + include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); | |
| 8 | + session_name("i3GeoPHP"); | |
| 9 | + session_id($_COOKIE["i3GeoPHP"]); | |
| 10 | + session_start(); | |
| 11 | + //obtem os layers que sao do sistema metaestat, sao regioes e que possuem selecao | |
| 12 | + $map_file = $_SESSION["map_file"]; | |
| 13 | + $mapa = ms_newMapObj($map_file); | |
| 14 | + $c = $mapa->numlayers; | |
| 15 | + for ($i=0;$i < $c;++$i){ | |
| 16 | + $l = $mapa->getlayer($i); | |
| 17 | + $registros = array(); | |
| 18 | + $codigo_tipo_regiao = $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO"); | |
| 19 | + if($codigo_tipo_regiao != "" && $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL") == ""){ | |
| 20 | + //verifica se tem selecao | |
| 21 | + $qyfile = dirname($map_file)."/".$l->name.".php"; | |
| 22 | + if(file_exists($qyfile)){ | |
| 23 | + //pega os registros | |
| 24 | + $shapes = retornaShapesSelecionados($l,$map_file,$mapa); | |
| 25 | + //pega o nome da coluna que identifica cada registro | |
| 26 | + $regiao = $m->listaTipoRegiao($codigo_tipo_regiao); | |
| 27 | + $item = $regiao["identificador"]; | |
| 28 | + foreach($shapes as $shape){ | |
| 29 | + $registros[] = $shape->values[$item]; | |
| 30 | + } | |
| 31 | + $reg = $item." IN ('".implode("','",$registros)."') "; | |
| 32 | + $selecaoRegiao[$codigo_tipo_regiao] = array( | |
| 33 | + "item" => $item, | |
| 34 | + "sql" => $reg | |
| 35 | + ); | |
| 36 | + } | |
| 37 | + else{ | |
| 38 | + $selecaoRegiao[$codigo_tipo_regiao] = ""; | |
| 39 | + } | |
| 40 | + } | |
| 41 | + } | |
| 42 | + $regiao = ""; | |
| 43 | + $item = ""; | |
| 44 | + $registros = ""; | |
| 45 | +} | |
| 46 | +//echo "<pre>".var_dump($_SESSION);exit; | |
| 6 | 47 | $regioes = $m->listaTipoRegiao(); |
| 7 | 48 | $xml = "<Schema name='i3Geo Metaestat'>"; |
| 8 | -/* | |
| 9 | -echo "<pre>"; | |
| 10 | -foreach($regioes as $regiao){ | |
| 11 | - echo $regiao["codigo_tipo_regiao"]."<br>"; | |
| 12 | - $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]); | |
| 13 | - var_dump($caminho); | |
| 14 | -} | |
| 15 | -exit; | |
| 16 | -*/ | |
| 17 | - | |
| 18 | 49 | //cria as dimensoes de tipo temporal |
| 19 | 50 | $sqlAno = "select nu_ano from i3geo_metaestat.dim_tempo group by nu_ano order by nu_ano"; |
| 20 | 51 | $sqlMes = "select nu_ano,nu_mes,ds_mes_abreviado as mes,nu_ano::text||'-'||nu_mes::text as nu_anomes from i3geo_metaestat.dim_tempo group by nu_ano,nu_mes,mes,nu_anomes order by nu_ano,nu_mes"; |
| ... | ... | @@ -35,98 +66,89 @@ $xml .= " |
| 35 | 66 | "; |
| 36 | 67 | foreach($regioes as $regiao){ |
| 37 | 68 | $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]); |
| 38 | - // | |
| 39 | - //verifica se a regiao tem hierarquia | |
| 40 | - if(empty($caminho)){ | |
| 41 | - $xml .= " | |
| 42 | - <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde: ".converte($regiao["nome_tipo_regiao"])."'> | |
| 43 | - <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'> | |
| 44 | - <Table name='".$regiao["tabela"]."' schema='".$regiao["esquemadb"]."' /> | |
| 45 | - <Level name='Nome - ".converte($regiao["nome_tipo_regiao"])."' column='".$regiao["colunanomeregiao"]."' uniqueMembers='true'/> | |
| 46 | - </Hierarchy> | |
| 47 | - </Dimension> | |
| 69 | + $xml .= " | |
| 70 | + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde:".converte($regiao["nome_tipo_regiao"])."'> | |
| 71 | + <Hierarchy hasAll='true' primaryKey='codigo'> | |
| 72 | + "; | |
| 73 | + //cria uma view juntando as tabelas da hierarquia de regioes | |
| 74 | + $n = count($caminho); | |
| 75 | + $colunas = array(); | |
| 76 | + $niveis = array(); | |
| 77 | + $sql = "SELECT __COLUNAS__ FROM {$regiao['esquemadb']}.{$regiao['tabela']} AS regiao "; | |
| 78 | + $colunas[] = "regiao.{$regiao['identificador']} AS codigo "; | |
| 79 | + $colunas[] = "regiao.{$regiao['colunanomeregiao']} AS nome"; | |
| 80 | + $tabelaAnt = "regiao"; | |
| 81 | + for($i=0;$i<$n;$i++){ | |
| 82 | + $r = $m->listaTipoRegiao($caminho[$i]); | |
| 83 | + $colunas[] = "j$i.{$r['colunanomeregiao']} AS j$i{$r['colunanomeregiao']}"; | |
| 84 | + $colunas[] = "j$i.{$r['identificador']} AS j$i{$r['identificador']}"; | |
| 85 | + $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']} | |
| 86 | + AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text | |
| 48 | 87 | "; |
| 49 | - } | |
| 50 | - else{ | |
| 51 | - $xml .= " | |
| 52 | - <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde: ".converte($regiao["nome_tipo_regiao"])."'> | |
| 53 | - <Hierarchy hasAll='true' primaryKey='codigo'> | |
| 88 | + $tabelaAnt = "j".$i; | |
| 89 | + $niveis[] = " | |
| 90 | + <Level name='".converte($r["nome_tipo_regiao"])."' | |
| 91 | + column='j$i{$r['identificador']}' | |
| 92 | + nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/> | |
| 54 | 93 | "; |
| 55 | - //cria uma view juntando as tabelas da hierarquia de regioes | |
| 56 | - $n = count($caminho); | |
| 57 | - $colunas = array(); | |
| 58 | - $niveis = array(); | |
| 59 | - $sql = "SELECT __COLUNAS__ FROM {$regiao['esquemadb']}.{$regiao['tabela']} AS regiao "; | |
| 60 | - $colunas[] = "regiao.{$regiao['identificador']} AS codigo "; | |
| 61 | - $colunas[] = "regiao.{$regiao['colunanomeregiao']} AS nome"; | |
| 62 | - $tabelaAnt = "regiao"; | |
| 63 | - for($i=0;$i<$n;$i++){ | |
| 64 | - $r = $m->listaTipoRegiao($caminho[$i]); | |
| 65 | - $colunas[] = "j$i.{$r['colunanomeregiao']} AS j$i{$r['colunanomeregiao']}"; | |
| 66 | - $colunas[] = "j$i.{$r['identificador']} AS j$i{$r['identificador']}"; | |
| 67 | - $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']} | |
| 68 | - AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text | |
| 69 | - "; | |
| 70 | - $tabelaAnt = "j".$i; | |
| 71 | - $niveis[] = " | |
| 72 | - <Level name='".converte($r["nome_tipo_regiao"])."' | |
| 73 | - column='j$i{$r['identificador']}' | |
| 74 | - nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/> | |
| 75 | - "; | |
| 94 | + } | |
| 95 | + $niveis[] = " | |
| 96 | + <Level name='".converte($regiao["nome_tipo_regiao"])."' | |
| 97 | + column='codigo' | |
| 98 | + nameColumn='nome' uniqueMembers='true'> | |
| 99 | + "; | |
| 76 | 100 | |
| 101 | + //verifica outras colunas | |
| 102 | + $vis = $regiao['colunasvisiveis']; | |
| 103 | + if($vis != ""){ | |
| 104 | + $vis = str_replace(";",",",$vis); | |
| 105 | + $vis = str_replace(",,",",",$vis); | |
| 106 | + $vis = explode(",",$vis); | |
| 107 | + foreach($vis as $v){ | |
| 108 | + $colunas[] = "regiao.".$v." as ".$v; | |
| 77 | 109 | } |
| 78 | - $niveis[] = " | |
| 79 | - <Level name='".converte($regiao["nome_tipo_regiao"])."' | |
| 80 | - column='codigo' | |
| 81 | - nameColumn='nome' uniqueMembers='true'> | |
| 82 | - "; | |
| 110 | + $colunas = array_unique($colunas); | |
| 111 | + } | |
| 112 | + $colunas = implode($colunas,","); | |
| 113 | + $sql = str_replace("__COLUNAS__",$colunas,$sql); | |
| 114 | + //inclui a selecao se houver | |
| 115 | + if(!empty($selecaoRegiao[$regiao["codigo_tipo_regiao"]])) | |
| 116 | + $rs = $selecaoRegiao[$regiao["codigo_tipo_regiao"]]; | |
| 117 | + $pos = strpos($sql, "regiao.".$rs["item"]." "); | |
| 118 | + if($rs != "" || !$pos === false){ | |
| 119 | + $sql .= " WHERE regiao.".$rs["sql"]; | |
| 120 | + } | |
| 83 | 121 | |
| 84 | - //verifica outras colunas | |
| 85 | - $vis = $regiao['colunasvisiveis']; | |
| 86 | - if($vis != ""){ | |
| 87 | - $vis = str_replace(";",",",$vis); | |
| 88 | - $vis = str_replace(",,",",",$vis); | |
| 89 | - $vis = explode(",",$vis); | |
| 90 | - foreach($vis as $v){ | |
| 91 | - //if($v != $regiao['colunanomeregiao'] && $v != $regiao['identificador']){ | |
| 92 | - $colunas[] = "regiao.".$v." as ".$v; | |
| 93 | - //} | |
| 94 | - } | |
| 95 | - $colunas = array_unique($colunas); | |
| 122 | + $xml .= " | |
| 123 | + <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' ><SQL dialect='generic' >$sql</SQL></view> | |
| 124 | + "; | |
| 125 | + $xml .= implode(" ",$niveis); | |
| 126 | + //verifica se existem propriedades (colunas adicionais) | |
| 127 | + if($vis != ""){ | |
| 128 | + //apelidos | |
| 129 | + $apelidos = $regiao['apelidos']; | |
| 130 | + if($apelidos != ""){ | |
| 131 | + $apelidos = str_replace(";",",",$apelidos); | |
| 132 | + $apelidos = str_replace(",,",",",$apelidos); | |
| 133 | + $apelidos = converte($apelidos); | |
| 134 | + $apelidos = explode(",",$apelidos); | |
| 96 | 135 | } |
| 97 | - $colunas = implode($colunas,","); | |
| 98 | - $sql = str_replace("__COLUNAS__",$colunas,$sql); | |
| 99 | - $xml .= " | |
| 100 | - <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' ><SQL dialect='generic' >$sql</SQL></view> | |
| 101 | - "; | |
| 102 | - $xml .= implode(" ",$niveis); | |
| 103 | - //verifica se existem propriedades (colunas adicionais) | |
| 104 | - if($vis != ""){ | |
| 105 | - //apelidos | |
| 106 | - $apelidos = $regiao['apelidos']; | |
| 107 | - if($apelidos != ""){ | |
| 108 | - $apelidos = str_replace(";",",",$apelidos); | |
| 109 | - $apelidos = str_replace(",,",",",$apelidos); | |
| 110 | - $apelidos = converte($apelidos); | |
| 111 | - $apelidos = explode(",",$apelidos); | |
| 112 | - } | |
| 113 | - else{ | |
| 114 | - $apelidos = $vis; | |
| 115 | - } | |
| 116 | - $nvis = count($vis); | |
| 117 | - for($i = 0; $i < $nvis; $i++){ | |
| 118 | - $xml .= " | |
| 119 | - <Property name='{$apelidos[$i]}' column='{$vis[$i]}'/> | |
| 120 | - "; | |
| 121 | - } | |
| 136 | + else{ | |
| 137 | + $apelidos = $vis; | |
| 138 | + } | |
| 139 | + $nvis = count($vis); | |
| 140 | + for($i = 0; $i < $nvis; $i++){ | |
| 141 | + $xml .= " | |
| 142 | + <Property name='{$apelidos[$i]}' column='{$vis[$i]}'/> | |
| 143 | + "; | |
| 122 | 144 | } |
| 123 | - //fecha os elementos. LEVEL deve ser fechado pois o ultimo recebe as propriedades | |
| 124 | - $xml .= " | |
| 125 | - </Level> | |
| 126 | - </Hierarchy> | |
| 127 | - </Dimension> | |
| 128 | - "; | |
| 129 | 145 | } |
| 146 | + //fecha os elementos. LEVEL deve ser fechado pois o ultimo recebe as propriedades | |
| 147 | + $xml .= " | |
| 148 | + </Level> | |
| 149 | + </Hierarchy> | |
| 150 | + </Dimension> | |
| 151 | + "; | |
| 130 | 152 | } |
| 131 | 153 | //junta as medidas conforme o nome da tabela utilizada |
| 132 | 154 | $medidas = $m->listaMedidaVariavel(); |
| ... | ... | @@ -183,7 +205,7 @@ foreach($tbs as $tb){ |
| 183 | 205 | //echo "<pre>";var_dump($parametro);exit; |
| 184 | 206 | } |
| 185 | 207 | $xml .= " |
| 186 | - <Cube name='{$c["esquemadb"]}{$c["tabela"]}'>"; | |
| 208 | + <Cube cache='false' name='{$c["esquemadb"]}{$c["tabela"]}'>"; | |
| 187 | 209 | $sql = "select * from {$c["esquemadb"]}.{$c["tabela"]}"; |
| 188 | 210 | if(count($parComposto) > 0){ |
| 189 | 211 | $sql = "select *,".implode("||'-'||",$parComposto)." as ".implode("_",$parComposto)." from {$c["esquemadb"]}.{$c["tabela"]}"; | ... | ... |
| ... | ... | @@ -0,0 +1,145 @@ |
| 1 | +/* | |
| 2 | +Title: Saiku | |
| 3 | + | |
| 4 | +Formulario para obtencao de parametros para abertura do SAIKU | |
| 5 | + | |
| 6 | +Veja: | |
| 7 | + | |
| 8 | +<i3GEO.analise.dialogo.saiku> | |
| 9 | + | |
| 10 | +Arquivo: | |
| 11 | + | |
| 12 | +i3geo/ferramentas/saiku/index.js | |
| 13 | + | |
| 14 | +Licenca: | |
| 15 | + | |
| 16 | +GPL2 | |
| 17 | + | |
| 18 | +i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet | |
| 19 | + | |
| 20 | +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil | |
| 21 | +Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com | |
| 22 | + | |
| 23 | +Este programa é software livre; você pode redistribuí-lo | |
| 24 | +e/ou modificá-lo sob os termos da Licença Pública Geral | |
| 25 | +GNU conforme publicada pela Free Software Foundation; | |
| 26 | + | |
| 27 | +Este programa é distribuído na expectativa de que seja útil, | |
| 28 | +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | |
| 29 | +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | |
| 30 | +Consulte a Licença Pública Geral do GNU para mais detalhes. | |
| 31 | +Você deve ter recebido uma cópia da Licença Pública Geral do | |
| 32 | +GNU junto com este programa; se não, escreva para a | |
| 33 | +Free Software Foundation, Inc., no endereço | |
| 34 | +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | |
| 35 | +*/ | |
| 36 | +if(typeof(i3GEOF) === 'undefined'){ | |
| 37 | + var i3GEOF = {}; | |
| 38 | +} | |
| 39 | +/* | |
| 40 | +Classe: i3GEOF.saiku | |
| 41 | + | |
| 42 | +*/ | |
| 43 | +i3GEOF.saiku = { | |
| 44 | + /* | |
| 45 | + Variavel: aguarde | |
| 46 | + | |
| 47 | + Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. | |
| 48 | + */ | |
| 49 | + aguarde: "", | |
| 50 | + /* | |
| 51 | + Para efeitos de compatibilidade antes da versão 4.7 que não tinha dicionário | |
| 52 | + */ | |
| 53 | + criaJanelaFlutuante: function(){ | |
| 54 | + i3GEOF.saiku.iniciaDicionario(); | |
| 55 | + }, | |
| 56 | + /* | |
| 57 | + Function: iniciaDicionario | |
| 58 | + | |
| 59 | + Carrega o dicionário e chama a função que inicia a ferramenta | |
| 60 | + | |
| 61 | + O Javascript é carregado com o id i3GEOF.nomedaferramenta.dicionario_script | |
| 62 | + */ | |
| 63 | + iniciaDicionario: function(){ | |
| 64 | + if(typeof(i3GEOF.saiku.dicionario) === 'undefined'){ | |
| 65 | + i3GEO.util.scriptTag( | |
| 66 | + i3GEO.configura.locaplic+"/ferramentas/saiku/dicionario.js", | |
| 67 | + "i3GEOF.saiku.iniciaJanelaFlutuante()", | |
| 68 | + "i3GEOF.saiku.dicionario_script" | |
| 69 | + ); | |
| 70 | + } | |
| 71 | + else{ | |
| 72 | + i3GEOF.saiku.iniciaJanelaFlutuante(); | |
| 73 | + } | |
| 74 | + }, | |
| 75 | + /* | |
| 76 | + Function: inicia | |
| 77 | + | |
| 78 | + Inicia a ferramenta. É chamado por criaJanelaFlutuante | |
| 79 | + | |
| 80 | + Parametro: | |
| 81 | + | |
| 82 | + iddiv {String} - id do div que receberá o conteudo HTML da ferramenta | |
| 83 | + */ | |
| 84 | + inicia: function(iddiv){ | |
| 85 | + try{ | |
| 86 | + $i(iddiv).innerHTML += i3GEOF.saiku.html(); | |
| 87 | + new YAHOO.widget.Button( | |
| 88 | + "i3GEOFsaikubotao1", | |
| 89 | + {onclick:{fn: i3GEOF.saiku.aplicar}} | |
| 90 | + ); | |
| 91 | + } | |
| 92 | + catch(erro){i3GEO.janela.tempoMsg(erro);} | |
| 93 | + }, | |
| 94 | + /* | |
| 95 | + Function: html | |
| 96 | + | |
| 97 | + Gera o código html para apresentação das opções da ferramenta | |
| 98 | + | |
| 99 | + Retorno: | |
| 100 | + | |
| 101 | + String com o código html | |
| 102 | + */ | |
| 103 | + html:function(){ | |
| 104 | + var ins = "<p class=paragrafo >Saiku: <a href=http://meteorite.bi/saiku target=_blank >http://meteorite.bi/saiku</a></p>" + | |
| 105 | + "<p class=paragrafo >" + $trad(1,i3GEOF.saiku.dicionario) + "<p>" + | |
| 106 | + "<input id=i3GEOFsaikubotao1 size=20 type=button value='"+$trad(2,i3GEOF.saiku.dicionario)+"' />"; | |
| 107 | + | |
| 108 | + return ins; | |
| 109 | + }, | |
| 110 | + /* | |
| 111 | + Function: iniciaJanelaFlutuante | |
| 112 | + | |
| 113 | + Cria a janela flutuante para controle da ferramenta. | |
| 114 | + */ | |
| 115 | + iniciaJanelaFlutuante: function(){ | |
| 116 | + var janela,divid,titulo,cabecalho,minimiza; | |
| 117 | + cabecalho = function(){}; | |
| 118 | + minimiza = function(){ | |
| 119 | + i3GEO.janela.minimiza("i3GEOF.saiku"); | |
| 120 | + }; | |
| 121 | + //cria a janela flutuante | |
| 122 | + titulo = "Saiku <a class=ajuda_usuario target=_blank href='" + i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=4&idajuda=117' > </a>"; | |
| 123 | + janela = i3GEO.janela.cria( | |
| 124 | + "300px", | |
| 125 | + "200px", | |
| 126 | + "", | |
| 127 | + "", | |
| 128 | + "", | |
| 129 | + titulo, | |
| 130 | + "i3GEOF.saiku", | |
| 131 | + false, | |
| 132 | + "hd", | |
| 133 | + cabecalho, | |
| 134 | + minimiza | |
| 135 | + ); | |
| 136 | + divid = janela[2].id; | |
| 137 | + $i("i3GEOF.saiku_corpo").style.backgroundColor = "white"; | |
| 138 | + $i("i3GEOF.saiku_corpo").style.textAlign = "left"; | |
| 139 | + i3GEOF.saiku.aguarde = $i("i3GEOF.saiku_imagemCabecalho").style; | |
| 140 | + i3GEOF.saiku.inicia(divid); | |
| 141 | + }, | |
| 142 | + aplicar: function(){ | |
| 143 | + window.open("http://localhost:9090"); | |
| 144 | + } | |
| 145 | +}; | ... | ... |