/** * Title: PluginI3Geo * * i3GEO.pluginI3geo * * Implementa os plugins do i3Geo que adicionam camadas especiais ao mapa, * normalmente dados vetoriais processados no navegador Web. * * Arquivo: * * i3geo/classesjs/classe_plugini3geo.js * * Licença: * * GPL2 * * i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet * * Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente * Brasil Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com * * Este programa é software livre; você pode redistribuí-lo * e/ou modificá-lo sob os termos da Licença Pública Geral * GNU conforme publicada pela Free Software Foundation; * * Este programa é distribuído na expectativa de que seja * útil, porém, SEM NENHUMA GARANTIA; nem mesmo a garantia * implícita de COMERCIABILIDADE OU ADEQUACÃO A UMA FINALIDADE * ESPECÍFICA. Consulte a Licença Pública Geral do GNU para * mais detalhes. Você deve ter recebido uma cópia da * Licença Pública Geral do GNU junto com este programa; se * não, escreva para a Free Software Foundation, Inc., no endereço * 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ if (typeof (i3GEO) === 'undefined') { var i3GEO = {}; } i3GEO.pluginI3geo = { OBJETOS : {}, /** * Lista de plugins * * Utilizado no editor de mapfiles do sistema de administracao */ PLUGINS : [ { "classe" : "heatmap", // namespace da classe "nome" : "Mapa de calor", // tituo do plugin "editor" : true // inclui no editor de mapfiles }, { "classe" : "markercluster", "nome" : "Agrupamento de pontos (cluster)", "editor" : true }, { "classe" : "layerkml", "nome" : "Camada Kml", "editor" : true }, { "classe" : "parametrossql", "nome" : "SQL parametrizado", "editor" : true } ], /** * Inicia a execucao de um plugin * * Camada e um objeto gerado pelo i3Geo quando uma camada e adicionada * ao mapa O objeto i3GEO.arvoreDeCamadas.CAMADAS guarda todas as * camadas adicionadas ao mapa Ao adicionar uma camada pelo catalogo, o * i3Geo verifica se a camada possui plugin e direciona para ca Os * plugins sao definidos como metadados em cada mapfile de cada tema * * Veja em i3geo/classesphp/classe_mapa.php funcao parametrostemas */ inicia : function(camada) { if (i3GEO.janela) { i3GEO.janela.AGUARDEMODAL = true; i3GEO.janela.abreAguarde( "aguardePlugin", "Plugin..."); i3GEO.janela.AGUARDEMODAL = false; } // chama a funcao conforme o tipo de plugin e a interface atual // para cada plugin deve haver um objeto com as funcoes especificas // para // cada interface i3GEO.pluginI3geo[camada.plugini3geo.plugin][i3GEO.Interface.ATUAL].inicia(camada); }, /** * Retorna o HTML com o formulario para editar os parametros do plugin */ formAdmin : function(plugin, configString) { return i3GEO.pluginI3geo[plugin].formAdmin(configString); }, linkAjuda : function(plugin) { return i3GEO.pluginI3geo[plugin].linkAjuda(); }, ligaCamada : function(nomecamada) { if (i3GEO.pluginI3geo.OBJETOS[nomecamada] && i3GEO.pluginI3geo.OBJETOS[nomecamada].ligaCamada) { i3GEO.pluginI3geo.OBJETOS[nomecamada].ligaCamada(); return true; } return false; }, desligaCamada : function(nomecamada) { if (i3GEO.pluginI3geo.OBJETOS[nomecamada] && i3GEO.pluginI3geo.OBJETOS[nomecamada].desLigaCamada) { i3GEO.pluginI3geo.OBJETOS[nomecamada].desLigaCamada(); return true; } return false; }, removeCamada : function(nomecamada) { if (i3GEO.pluginI3geo.OBJETOS[nomecamada] && i3GEO.pluginI3geo.OBJETOS[nomecamada].removeCamada) { i3GEO.pluginI3geo.OBJETOS[nomecamada].removeCamada(); delete (i3GEO.pluginI3geo.OBJETOS[nomecamada]); return true; } return false; }, atualizaCamada : function(nomecamada) { if (i3GEO.pluginI3geo.OBJETOS[nomecamada] && i3GEO.pluginI3geo.OBJETOS[nomecamada].atualizaCamada) { i3GEO.pluginI3geo.OBJETOS[nomecamada].atualizaCamada(); return true; } return false; }, existeObjeto : function(nomecamada) { if (i3GEO.pluginI3geo.OBJETOS[nomecamada] && i3GEO.pluginI3geo.OBJETOS[nomecamada].atualizaCamada) { return true; } return false; }, /** * Aplica as propriedades em um objeto do tipo tema * * tema e fornecido por i3GEO.arvoreDeCamadas o ajuste das propriedades * e necessario para que as propriedades aparecam de forma correta na * arvore de camadas */ aplicaPropriedades : function(camada) { if (camada.plugini3geo && camada.plugini3geo != "") { camada = i3GEO.pluginI3geo[camada.plugini3geo.plugin][i3GEO.Interface.ATUAL].aplicaPropriedades(camada); } return camada; }, /** * Function: heatmap * * Mapa de calor * * Gera um layer do tipo mapa de calor e adiciona ao mapa * * As dependências em javascript sao carregadas via script tag por * meio de ferramentas/heatmap * * Esse programa também obtém os dados necessários * ao plugin * * O layer existente no mapfile deve conter um metadata chamado * PLUGINI3GEO * * Esse matadado deve conter uma string que será transformada em * um objeto javascript para uso no plugin * * Exemplo: * * "PLUGINI3GEO" '{"plugin":"heatmap","parametros":{"tipoGradiente": * "default","coluna":"teste","max":"10","radius":"15"}}' * * Coluna é a que contém os dados numéricos que * definem a quantidade de uma medida em cada ponto e é usada * para gerar a representação. Se for vazia, considera-se * o valor como 1 * * As cores das classes existentes no LAYER serão utilizadas para * calcular as cores do mapa de calor. Se tipoGradiente for igual a * "default" será utilizado o gradiente padrĂ£o. * */ heatmap : { linkAjuda : function() { return i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=3&idajuda=121"; }, formAdmin : function(config) { // {"plugin":"heatmap","parametros":{"coluna":"","radius":15,"max":10}} var parametros, ins = "", configDefault = '{"plugin":"heatmap","parametros":{"tipoGradiente": "default","valorPonto":1,"coluna":"","radius":15}}'; if (config === "") { config = configDefault; } config = YAHOO.lang.JSON.parse(config); if (config.plugin != "heatmap") { config = YAHOO.lang.JSON.parse(configDefault); } parametros = config.parametros; ins += "" + "
Coluna que contém os dados:"
+ "
Ou valor numérico para cada ponto:"
+ "
Raio de cada ponto em pixels:"
+ "
Valor máximo em cada ponto:"
// + "
Tipo de gradiente (deixe vazio para utilizar as classes definidas no Layer ou escreva 'default' para usar o normal):"
+ "
Para definir os cortes no gradiente de cores utilize valores entre 0 e 1." + " As cores são definidas nas classes do LAYER, sendo que o nome define o valor superior do gradiente e COLOR define a cor." + " Veja o exemplo utilizado no tema _lmapadecalor.map
"; return ins; }, googlemaps : { aplicaPropriedades : function(camada) { camada.sel = "nao"; camada.download = "nao"; camada.AGUARDALEGENDA = false; camada.temporizador = ""; camada.copia = false; camada.procurar = false; camada.toponimia = false; camada.etiquetas = false; camada.tabela = false; camada.grafico = false; camada.destacar = false; camada.wms = false; camada.classe = "NAO"; return camada; }, inicia : function(camada) { var nomeScript = "heatmap_script", p = i3GEO.configura.locaplic + "/ferramentas/heatmap/googlemaps_js.php", carregaJs = "nao", criaLayer; criaLayer = function() { var heatmap, pontos; heatmap = new HeatmapOverlay( i3GeoMap, camada.name, { "radius" : camada.plugini3geo.parametros.radius, "visible" : true, "opacity" : camada.transparency, "gradient" : heatmap_config.gradient, "legend" : { "title" : camada.tema, "position" : "bl", "offset" : [ 5, 50 ] } }); // i3GeoMap.overlayMapTypes.insertAt(0, heatmap); pontos = { max : camada.plugini3geo.parametros.max, data : heatmap_dados }; i3GEO.janela.fechaAguarde("aguardePlugin"); heatmap.setDataSet(pontos); heatmap.ligaCamada = function() { this.liga(); }; heatmap.desLigaCamada = function() { this.desliga(); }; heatmap.removeCamada = function() { this.destroy(); }; heatmap.atualizaCamada = function() { this.draw(); }; i3GEO.pluginI3geo.OBJETOS[camada.name] = heatmap; heatmap_dados = null; }; // se o script nao existir carrega o codigo e os dados // caso contrario, carrega apenas os dados no script if (!$i(nomeScript)) { carregaJs = "sim"; } else { nomeScript = ""; } p += "?carregajs=" + carregaJs + "&layer=" + camada.name + "&coluna=" + camada.plugini3geo.parametros.coluna + "&tipoGradiente=" + camada.plugini3geo.parametros.tipoGradiente + "&g_sid=" + i3GEO.configura.sid + "&nomevariavel=heatmap_dados&nomevariavelConfig=heatmap_config"; i3GEO.util.scriptTag( p, criaLayer, nomeScript); } }, // // O script que adiciona a camada // define os eventos visibilitychanged, moveend e removed // A camada e adicionada como um objeto layer, permitindo que as // funcoes // do i3Geo operem normalmente, sem muitas modificacoes // openlayers : { aplicaPropriedades : function(camada) { camada.sel = "nao"; camada.download = "nao"; camada.AGUARDALEGENDA = false; camada.temporizador = ""; camada.copia = false; camada.procurar = false; camada.toponimia = false; camada.etiquetas = false; camada.tabela = false; camada.grafico = false; camada.destacar = false; camada.wms = false; camada.classe = "NAO"; return camada; }, inicia : function(camada, objMapa) { var nomeScript = "heatmap_script", p = i3GEO.configura.locaplic + "/ferramentas/heatmap/openlayers_js.php", carregaJs = "nao", criaLayer; criaLayer = function() { var temp, heatmap, transformedTestData = { max : 1, data : [] }, data = heatmap_dados, datalen = heatmap_dados.length, nudata = [], max = 0; // para uso com o mashup if (!objMapa) { objMapa = i3geoOL; } // in order to use the OpenLayers Heatmap Layer we have // to // transform our data into // { max:Distância máxima entre ponto em pixels:"
+ "
Tipo de estilos (deixe vazio para utilizar as classes definidas no Layer ou escreva 'default' para usar o normal):"
+ "
Os símbolos utilizados podem ser customizados alterando-se as classes do Mapfile
" + "Veja o exemplo utilizado no tema _lmapadecluster.map
"; return ins; }, googlemaps : { aplicaPropriedades : function(camada) { camada.sel = "nao"; camada.download = "nao"; camada.AGUARDALEGENDA = false; camada.temporizador = ""; camada.copia = false; camada.procurar = false; camada.toponimia = false; camada.etiquetas = false; camada.tabela = false; camada.grafico = false; camada.destacar = false; camada.wms = false; camada.classe = "NAO"; return camada; }, inicia : function(camada) { var nomeScript = "markercluster_script", p = i3GEO.configura.locaplic + "/ferramentas/markercluster/googlemaps_js.php", carregaJs = "nao", criaLayer; criaLayer = function() { var markercluster, marcas, latLng, marker, n, i; n = markercluster_dados.length; marcas = []; for (i = 0; i < n; i++) { latLng = new google.maps.LatLng( markercluster_dados[i].lat, markercluster_dados[i].lng); marker = new google.maps.Marker( { 'position' : latLng, icon : { url : markercluster_config.ponto.url, scaledSize : new google.maps.Size( markercluster_config.ponto.width, markercluster_config.ponto.height) } }); marcas.push(marker); } markercluster = new MarkerClusterer( i3GeoMap, marcas, { "gridSize" : parseInt( camada.plugini3geo.parametros.gridSize, 10), "visible" : true, "opacity" : camada.transparency, "name" : camada.name, "styles" : markercluster_config.estilos }); i3GEO.janela.fechaAguarde("aguardePlugin"); i3GEO.eventos.cliquePerm.ativo = false; markercluster.ligaCamada = function() { i3GEO.pluginI3geo.OBJETOS[camada.name].ready_ = true; i3GEO.pluginI3geo.OBJETOS[camada.name].redraw(); i3GEO.eventos.cliquePerm.ativo = false; }; markercluster.desLigaCamada = function() { i3GEO.pluginI3geo.OBJETOS[camada.name].resetViewport(true); i3GEO.pluginI3geo.OBJETOS[camada.name].ready_ = false; i3GEO.eventos.cliquePerm.ativo = true; }; markercluster.removeCamada = function() { i3GEO.pluginI3geo.OBJETOS[camada.name].clearMarkers(); i3GEO.eventos.cliquePerm.ativo = true; }; markercluster.atualizaCamada = function() { i3GEO.pluginI3geo.OBJETOS[camada.name].ready_ = true; i3GEO.pluginI3geo.OBJETOS[camada.name].redraw(); i3GEO.eventos.cliquePerm.ativo = false; }; i3GEO.pluginI3geo.OBJETOS[camada.name] = markercluster; markercluster_dados = null; }; // se o script nao existir carrega o codigo e os dados // caso contrario, carrega apenas os dados no script if (!$i(nomeScript)) { carregaJs = "sim"; } else { nomeScript = ""; } p += "?carregajs=" + carregaJs + "&layer=" + camada.name + "&g_sid=" + i3GEO.configura.sid + "&tipoEstilos=" + camada.plugini3geo.parametros.tipoEstilos + "&nomevariavel=markercluster_dados&nomevariavelConfig=markercluster_config"; i3GEO.util.scriptTag( p, criaLayer, nomeScript); } }, openlayers : { aplicaPropriedades : function(camada) { camada.sel = "nao"; camada.download = "nao"; camada.AGUARDALEGENDA = false; camada.temporizador = ""; camada.copia = false; camada.procurar = false; camada.toponimia = false; camada.etiquetas = false; camada.tabela = false; camada.grafico = false; camada.destacar = false; camada.wms = false; camada.classe = "NAO"; return camada; }, inicia : function(camada, objMapa) { var nomeScript = "markercluster_script", p = i3GEO.configura.locaplic + "/ferramentas/markercluster/openlayers_js.php", carregaJs = "nao", criaLayer; criaLayer = function() { var layerListeners, logMax, logMin, classes, min, max, markercluster, marcas, lonlat, n, i, style, nestilos, intervalo, regra, regras = []; nestilos = markercluster_config.estilos.length; n = markercluster_dados.length; classes = Array(); logMax = Math.log(n) / Math.LN10; // max decimal logarithm (or base // 10) logMin = Math.log(1) / Math.LN10; intervalo = (logMax - logMin) / nestilos; // we compute log bounds for (i = 0; i < nestilos; i++) { if (i == 0) { classes[i] = logMin; } else { classes[i] = classes[i - 1] + intervalo; } } // we compute antilog classes = classes.map(function(x) { return Math.pow( 10, x); }); // and we finally add max value classes.push(n); // ponto sozinho regra = new OpenLayers.Rule( { filter : new OpenLayers.Filter.Comparison( { type : OpenLayers.Filter.Comparison.LESS_THAN, property : "count", value : 2 }), symbolizer : { externalGraphic : markercluster_config.ponto.url, graphicWidth : markercluster_config.ponto.width, graphicHeight : markercluster_config.ponto.height, graphicYOffset : (markercluster_config.ponto.height / 2) * -1 } }); regras.push(regra); min = 2; for (i = 0; i < nestilos; i++) { max = classes[i + 1]; regra = new OpenLayers.Rule( { filter : new OpenLayers.Filter.Comparison( { type : OpenLayers.Filter.Comparison.BETWEEN, property : "count", lowerBoundary : min, upperBoundary : max }), symbolizer : { externalGraphic : markercluster_config.estilos[i].url, graphicWidth : markercluster_config.estilos[i].width, graphicHeight : markercluster_config.estilos[i].height, label : "${count}", labelOutlineWidth : 1, fontColor : "#000000", fontOpacity : 1, fontSize : "12px" } }); regras.push(regra); min = max; } // Create a Style that uses the three previous rules style = new OpenLayers.Style( null, { rules : regras }); // para uso com o mashup if (!objMapa) { objMapa = i3geoOL; } layerListeners = { featureclick : function(e) { if (e.feature.cluster.length > 1) { objMapa.setCenter( [ e.feature.geometry.x, e.feature.geometry.y ], objMapa.getZoom() + 1, false, false); // objMapa.zoomIn(); } return false; } }; markercluster = new OpenLayers.Layer.Vector( camada.name, { renderers : [ 'Canvas', 'SVG' ], strategies : [ new OpenLayers.Strategy.AnimatedCluster( { distance : parseInt( camada.plugini3geo.parametros.gridSize, 10) }) ], styleMap : new OpenLayers.StyleMap( style), eventListeners : layerListeners }); objMapa.addLayer(markercluster); marcas = []; for (i = 0; i < n; i++) { lonlat = new OpenLayers.LonLat( markercluster_dados[i].lng, markercluster_dados[i].lat); if (i3GEO.Interface.openlayers.googleLike === true) { lonlat.transform( new OpenLayers.Projection( "EPSG:4326"), new OpenLayers.Projection( "EPSG:900913")); } marcas.push(new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Point( lonlat.lon, lonlat.lat))); } markercluster.addFeatures(marcas); i3GEO.janela.fechaAguarde("aguardePlugin"); i3GEO.eventos.cliquePerm.ativo = false; markercluster.ligaCamada = function() { i3GEO.eventos.cliquePerm.ativo = false; }; markercluster.desLigaCamada = function() { i3GEO.eventos.cliquePerm.ativo = true; }; markercluster.removeCamada = function() { i3GEO.eventos.cliquePerm.ativo = true; }; markercluster.atualizaCamada = function() { i3GEO.eventos.cliquePerm.ativo = false; }; i3GEO.pluginI3geo.OBJETOS[camada.name] = markercluster; markercluster_dados = null; }; // se o script nao existir carrega o codigo e os dados // caso contrario, carrega apenas os dados no script if (!$i(nomeScript)) { carregaJs = "sim"; } else { nomeScript = ""; } p += "?carregajs=" + carregaJs + "&layer=" + camada.name + "&g_sid=" + i3GEO.configura.sid + "&tipoEstilos=" + camada.plugini3geo.parametros.tipoEstilos + "&nomevariavel=markercluster_dados&nomevariavelConfig=markercluster_config"; i3GEO.util.scriptTag( p, criaLayer, nomeScript); } } }, /** * Function: layerkml * * Adiciona ao mapa uma camada vetorial baseada em um arquivo Kml * * As dependências em javascript sao carregadas via script tag por * meio de ferramentas/markercluster * * Esse programa também obtém os dados necessários * ao plugin * * O layer existente no mapfile deve conter um metadata chamado * PLUGINI3GEO * * Esse matadado deve conter uma string que será transformada em * um objeto javascript para uso no plugin * * Exemplo: * * "PLUGINI3GEO" '{"plugin":"layerkml","parametros":{"url":"teste"}}' * */ layerkml : { linkAjuda : function() { return i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=3&idajuda=121"; // http://localhost/i3geo/aplicmap/dados/sundials.kml // http://dev.openlayers.org/examples/kml/sundials.kml }, formAdmin : function(config) { var parametros, ins = "", configDefault = '{"plugin":"layerkml","parametros":{"url": ""}}'; if (config === "") { config = configDefault; } config = YAHOO.lang.JSON.parse(config); if (config.plugin != "layerkml") { config = YAHOO.lang.JSON.parse(configDefault); } parametros = config.parametros; ins += "Url do arquivo Kml:
Veja o exemplo utilizado no tema _lmapakml.map
"; return ins; }, googlemaps : { aplicaPropriedades : function(camada) { camada.sel = "nao"; camada.download = "nao"; camada.AGUARDALEGENDA = false; camada.temporizador = ""; camada.copia = false; camada.procurar = false; camada.toponimia = false; camada.etiquetas = false; camada.tabela = false; camada.grafico = false; camada.destacar = false; camada.wms = false; camada.classe = "NAO"; return camada; }, inicia : function(camada) { var layerkml = new google.maps.KmlLayer( camada.plugini3geo.parametros.url, { map : i3GeoMap, preserveViewport : true, name : camada.name }); i3GEO.janela.fechaAguarde("aguardePlugin"); layerkml.ligaCamada = function() { i3GEO.pluginI3geo.OBJETOS[camada.name].setMap(i3GeoMap); }; layerkml.desLigaCamada = function() { i3GEO.pluginI3geo.OBJETOS[camada.name].setMap(null); }; layerkml.removeCamada = function() { i3GEO.pluginI3geo.OBJETOS[camada.name].setMap(null); i3GEO.pluginI3geo.OBJETOS[camada.name].resetViewport(true); }; layerkml.atualizaCamada = function() { i3GEO.pluginI3geo.OBJETOS[camada.name].setMap(null); i3GEO.pluginI3geo.OBJETOS[camada.name].resetViewport(true); i3GEO.pluginI3geo.OBJETOS[camada.name].setMap(i3GeoMap); }; i3GEO.pluginI3geo.OBJETOS[camada.name] = layerkml; } }, openlayers : { aplicaPropriedades : function(camada) { camada.sel = "nao"; camada.download = "nao"; camada.AGUARDALEGENDA = false; camada.temporizador = ""; camada.copia = false; camada.procurar = false; camada.toponimia = false; camada.etiquetas = false; camada.tabela = false; camada.grafico = false; camada.destacar = false; camada.wms = false; camada.classe = "NAO"; return camada; }, inicia : function(camada, objMapa) { var layerkml; url = i3GEO.configura.locaplic + "/classesphp/proxy.php?url=" + camada.plugini3geo.parametros.url; layerkml = new OpenLayers.Layer.Vector( camada.name, { displayOutsideMaxExtent : true, displayInLayerSwitcher : false, visibility : true, strategies : [ new OpenLayers.Strategy.Fixed() ], protocol : new OpenLayers.Protocol.HTTP( { url : url, format : new OpenLayers.Format.KML( { extractStyles : true, extractAttributes : true, maxDepth : 5 }) }) }); i3geoOL.addLayer(layerkml); if (!objMapa) { objMapa = i3geoOL; } layerkml.div.onclick = function(e) { var targ = "", id, temp, features, n, i, j = "", html = ""; if (!e) { e = window.event; } if (e.target) { targ = e.target; } else if (e.srcElement) { targ = e.srcElement; } if (targ.id) { temp = targ.id.split("_Point"); if (temp[0] === "OpenLayers_Geometry") { id = targ.id; temp = i3geoOL.getLayer(this.id); features = temp.features; n = features.length; for (i = 0; i < n; i++) { if (features[i].geometry.id === id) { for (j in features[i].attributes) { html += j + ": " + features[i].attributes[j]; } g = features[i].geometry; i3geoOL.addPopup(new OpenLayers.Popup.FramedCloud( "kml", new OpenLayers.LonLat( g.x, g.y), null, html, null, true)); } } } } }; i3GEO.janela.fechaAguarde("aguardePlugin"); i3GEO.eventos.cliquePerm.ativo = false; layerkml.ligaCamada = function() { i3GEO.eventos.cliquePerm.ativo = false; }; layerkml.desLigaCamada = function() { i3GEO.eventos.cliquePerm.ativo = true; }; layerkml.removeCamada = function() { i3GEO.eventos.cliquePerm.ativo = true; }; layerkml.atualizaCamada = function() { i3GEO.eventos.cliquePerm.ativo = false; }; i3GEO.pluginI3geo.OBJETOS[camada.name] = layerkml; } } }, /** * Function: parametrossql * * Adiciona ao mapa uma camada vetorial baseada em um arquivo mapfile * normal porém permite substituir parâmetros no item DATA * do LAYER * * Com o plugin, o i3GEO irá mostrar um formulário com * parâmetros quando o usuário adicionar uma camada ao mapa * * O formulário colhe os valores que serão utilizados para * substituir chaves inseridas no SQL * * O layer existente no mapfile deve conter um metadata chamado * PLUGINI3GEO * * Esse matadado deve conter uma string que será transformada em * um objeto javascript para uso no plugin * * Exemplo: * * "PLUGINI3GEO" * '{"plugin":"parametrossql","parametros":{[{"titulo":"","tipo":"input|select","valores":[],"chave":""}]}}' * */ parametrossql : { linkAjuda : function() { // TODO return i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=3&idajuda=121"; }, formAdmin : function(config) { var n, i, parametros, ins = "", configDefault = '{"plugin":"parametrossql","parametros":[{"titulo":"","tipo":"input","valores":[],"chave":""},{"titulo":"","tipo":"input","valores":[],"chave":""},{"titulo":"","tipo":"input","valores":[],"chave":""},{"titulo":"","tipo":"input","valores":[],"chave":""}]}'; if (config === "") { config = configDefault; } config = YAHOO.lang.JSON.parse(config); if (config.plugin != "parametrossql") { config = YAHOO.lang.JSON.parse(configDefault); } parametros = config.parametros; n = parametros.length; ins += "Título | Chave | Tipo (input ou select) | Valores |
" + " | " + " | " + " |
As chaves são palavras que devem existir no SQL definido em DATA."
+ "
O usuário irá fornecer os valores que serão então utilizados para substituir as chaves de forma dinâmica"
+ "
Será mostrado ao usuário um formulário com opções. Cada opção conterá um título e um campo de formulário"
+ "
Cada campo de formulário pode ser dos tipos input (para digitar um valor) ou select (caixa de opções)."
+ "
Em valores deve ser definida a lista ou o valor default que será mostrado. No caso de listas, utilize vírgula para separar os valores.";
return ins;
},
// pega os valores do formulario quando e aberto no sistema de
// administracao
// ver i3geo/admin/editormapfile.js funcao salvarDadosEditorPlugin
parametrosFormAdmin : function(onde) {
var campo = 0,nlinhas = 4, ncampos = 4, campos = onde.getElementsByTagName("input"), par = [], temp = [], i, j;
for (j = 0; j < nlinhas; j++) {
temp = [];
for (i = 0; i < ncampos; i++) {
if(campos[campo]){
temp.push('"'+campos[campo].name
+ '" : "'
+ campos[campo].value
+ '"');
}
campo++;
}
par.push("{"
+ temp.join(",")
+ "}");
}
return '{"plugin":"parametrossql","parametros":['
+ par.join(",")
+ ']}';
},
inicia : function(camada) {
i3GEO.janela.fechaAguarde("aguardePlugin");
var iniciaform = function() {
i3GEOF.parametrossql.iniciaJanelaFlutuante(camada);
};
i3GEO.util.scriptTag(
(i3GEO.configura.locaplic + "/ferramentas/parametrossql/dependencias.php"),
iniciaform,
"parametrossql_script");
},
googlemaps : {
inicia : function(camada) {
i3GEO.pluginI3geo.parametrossql.inicia(camada);
},
aplicaPropriedades : function(camada) {
return camada;
}
},
openlayers : {
inicia : function(camada) {
i3GEO.pluginI3geo.parametrossql.inicia(camada);
},
aplicaPropriedades : function(camada) {
return camada;
}
}
}
};