Commit a972231d2006fc4cffcf2fd12e99e1b06b70fb64
1 parent
6ce78a46
Exists in
master
and in
7 other branches
$1
Showing
14 changed files
with
1766 additions
and
47 deletions
Show diff stats
ferramentas/saiku/cartograma.php
... | ... | @@ -22,10 +22,14 @@ $opcoes = (array) json_decode($_POST["opcoes"],true); |
22 | 22 | $metadados = (array) json_decode($_POST["metadados"],true); |
23 | 23 | $nmetadados = count($metadados); |
24 | 24 | //pega o id da regiao (busca pelo posfixo geocod) |
25 | -$codigo_tipo_regiao = $metadados[0]["identificador"]; | |
26 | -$codigo_tipo_regiao = explode("].[",$codigo_tipo_regiao); | |
27 | -$codigo_tipo_regiao = str_replace(array("codigo_tipo_regiao_","[","_geocod"),"",$codigo_tipo_regiao[0]); | |
28 | - | |
25 | +$codigo_tipo_regiao = $metadados[0]["colName"]; | |
26 | +$codigo_tipo_regiao = explode("#",$codigo_tipo_regiao); | |
27 | +$codigo_tipo_regiao = $codigo_tipo_regiao[1]; | |
28 | +/* | |
29 | +echo "<pre>"; | |
30 | +var_dump($metadados); | |
31 | +echo $codigo_tipo_regiao;exit; | |
32 | +*/ | |
29 | 33 | if(empty($codigo_tipo_regiao)){ |
30 | 34 | echo "Nao foi possivel determinar o codigo da regiao ou localidade no sistema Metaestat"; |
31 | 35 | exit; |
... | ... | @@ -47,7 +51,7 @@ $srid = $meta["srid"]; |
47 | 51 | $colunastabela = $m->colunasTabela($meta["codigo_estat_conexao"],$meta["esquemadb"],$meta["tabela"],"geometry","!="); |
48 | 52 | $tipoLayer = "POLYGON"; |
49 | 53 | //define a coluna geo correta |
50 | -if($opcoes["tipo"] == "raiosProporcionais" || $opcoes["tipo"] == "circulosProporcionais"){ | |
54 | +if($opcoes["tipo"] == "mapaPizzas" || $opcoes["tipo"] == "mapaBarras" || $opcoes["tipo"] == "raiosProporcionais" || $opcoes["tipo"] == "circulosProporcionais"){ | |
51 | 55 | if($meta["colunacentroide"] != ""){ |
52 | 56 | $colunageo = $meta["colunacentroide"]; |
53 | 57 | $sqlColunaGeo = $meta["colunacentroide"]; |
... | ... | @@ -56,6 +60,9 @@ if($opcoes["tipo"] == "raiosProporcionais" || $opcoes["tipo"] == "circulosPropor |
56 | 60 | $sqlColunaGeo = "st_centroid(".$meta["colunageo"].")"; |
57 | 61 | } |
58 | 62 | $tipoLayer = "POINT"; |
63 | + if($opcoes["tipo"] == "mapaBarras" || $opcoes["tipo"] == "mapaPizzas"){ | |
64 | + $tipoLayer = "CHART"; | |
65 | + } | |
59 | 66 | } |
60 | 67 | //var_dump($metadados);exit; |
61 | 68 | //constroi um sql que retorna os dados na forma de uma tabela inline |
... | ... | @@ -115,19 +122,32 @@ $l[] = ' SAIKU "'.$opcoes["tipo"].'"'; |
115 | 122 | $l[] = ' TIP "'.$meta["colunanomeregiao"].','.implode(',',$nomesColunas).'"'; |
116 | 123 | $l[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"'; |
117 | 124 | $l[] = ' END '; |
118 | -$l = implode("",$l); | |
125 | + | |
126 | +$l = implode(PHP_EOL,$l); | |
127 | + | |
119 | 128 | if($opcoes["tipo"] == "raiosProporcionais"){ |
120 | - $l .= implode(" ",raiosProporcionais(1,$nomesColunas[1])); | |
129 | + $l .= implode(PHP_EOL,raiosProporcionais(1,$nomesColunas[1])); | |
121 | 130 | } |
122 | 131 | if($opcoes["tipo"] == "circulosProporcionais"){ |
123 | 132 | $l .= ' OPACITY 50'; |
124 | - $l .= implode(" ",circulosProporcionais(1,$nomesColunas[1])); | |
133 | + $l .= implode(PHP_EOL,circulosProporcionais(1,$nomesColunas[1])); | |
125 | 134 | } |
126 | 135 | if($opcoes["tipo"] == "coresChapadas"){ |
127 | 136 | $l .= ' OPACITY 50'; |
128 | - $l .= implode(" ",coresChapadas(1,$nomesColunas[1])); | |
137 | + $l .= implode(PHP_EOL,coresChapadas(1,$nomesColunas[1])); | |
138 | +} | |
139 | +if($opcoes["tipo"] == "mapaBarras"){ | |
140 | + $l .= PHP_EOL.' PROCESSING "CHART_SIZE='.$opcoes["size"].' '.$opcoes["size"].'"'; | |
141 | + $l .= PHP_EOL.' PROCESSING "CHART_TYPE=bar"'; | |
142 | + $l .= implode(PHP_EOL,mapaBarras($nomesColunas)); | |
129 | 143 | } |
130 | -$l .= 'END'; | |
144 | +if($opcoes["tipo"] == "mapaPizzas"){ | |
145 | + $l .= PHP_EOL.' PROCESSING "CHART_SIZE='.$opcoes["size"].' '.$opcoes["size"].'"'; | |
146 | + $l .= PHP_EOL.' PROCESSING "CHART_TYPE=pie"'; | |
147 | + $l .= implode(PHP_EOL,mapaBarras($nomesColunas)); | |
148 | +} | |
149 | +$l .= PHP_EOL.'END'; | |
150 | + | |
131 | 151 | //echo $l;exit; |
132 | 152 | $layer->updateFromString($l); |
133 | 153 | |
... | ... | @@ -146,6 +166,28 @@ if($opcoes["tipo"] == "coresChapadas"){ |
146 | 166 | |
147 | 167 | header("Location:".$opcoes["locaplic"]."/mashups/openlayers.php?temas=".$map_file."&DESLIGACACHE=sim&botoes=legenda,pan,zoombox,zoomtot,zoomin,zoomout,distancia,area,identifica&controles=navigation,layerswitcher,scaleline,mouseposition,overviewmap,keyboarddefaults&tiles=false&mapext=".$opcoes["mapext"]); |
148 | 168 | |
169 | +function mapaBarras($colunas){ | |
170 | + global $opcoes; | |
171 | + //$opcoes["coreshex"] = array_reverse($opcoes["coreshex"]); | |
172 | + //$valores = retornaDadosColuna($coluna); | |
173 | + //$cortes = quartis($valores,$nomeColuna); | |
174 | + //var_dump($opcoes["coreshex"]);exit; | |
175 | + $nclasses = count($colunas); | |
176 | + $classes = array(); | |
177 | + for($i=1;$i<$nclasses;$i++){ | |
178 | + $classes[] = PHP_EOL.'CLASS'; | |
179 | + $classes[] = ' NAME "'.$colunas[$i].'"'; | |
180 | + $classes[] = ' STYLE'; | |
181 | + $cor = $opcoes["outlinecolor"]; | |
182 | + $classes[] = ' OUTLINECOLOR '.$cor["red"].' '.$cor["green"].' '.$cor["blue"]; | |
183 | + $classes[] = ' SIZE ['.$colunas[$i].']'; | |
184 | + $classes[] = ' COLOR '.$opcoes["cores"][$i-1]; | |
185 | + $classes[] = ' END'; | |
186 | + $classes[] = 'END '; | |
187 | + } | |
188 | + return $classes; | |
189 | +} | |
190 | + | |
149 | 191 | function coresChapadas($coluna,$nomeColuna){ |
150 | 192 | global $opcoes; |
151 | 193 | $valores = retornaDadosColuna($coluna); |
... | ... | @@ -251,4 +293,21 @@ function retornaDadosColuna($coluna){ |
251 | 293 | } |
252 | 294 | return $valores; |
253 | 295 | } |
296 | +function cHexToDec ($hexStr, $returnAsString = true, $seperator = ' ') { | |
297 | + $hexStr = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr); // Gets a proper hex string | |
298 | + $rgbArray = array(); | |
299 | + if (strlen($hexStr) == 6) { //If a proper hex code, convert using bitwise operation. No overhead... faster | |
300 | + $colorVal = hexdec($hexStr); | |
301 | + $rgbArray['red'] = 0xFF & ($colorVal >> 0x10); | |
302 | + $rgbArray['green'] = 0xFF & ($colorVal >> 0x8); | |
303 | + $rgbArray['blue'] = 0xFF & $colorVal; | |
304 | + } elseif (strlen($hexStr) == 3) { //if shorthand notation, need some string manipulations | |
305 | + $rgbArray['red'] = hexdec(str_repeat(substr($hexStr, 0, 1), 2)); | |
306 | + $rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2)); | |
307 | + $rgbArray['blue'] = hexdec(str_repeat(substr($hexStr, 2, 1), 2)); | |
308 | + } else { | |
309 | + return false; //Invalid hex color code | |
310 | + } | |
311 | + return $returnAsString ? implode($seperator, $rgbArray) : $rgbArray; // returns the rgb string or the associative array | |
312 | +} | |
254 | 313 | ?> | ... | ... |
ferramentas/saiku/esquemaxml.php
... | ... | @@ -87,8 +87,8 @@ for ($i=0;$i < $c;++$i){ |
87 | 87 | } |
88 | 88 | } |
89 | 89 | if($codigo_tipo_regiao == ""){ |
90 | - echo "Nenhum tema com limites ou localidades foi encontrado"; | |
91 | - exit; | |
90 | + //echo "Nenhum tema com limites ou localidades foi encontrado"; | |
91 | + //exit; | |
92 | 92 | } |
93 | 93 | $regiao = ""; |
94 | 94 | $item = ""; |
... | ... | @@ -158,7 +158,7 @@ foreach($regioes as $regiao){ |
158 | 158 | nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/> |
159 | 159 | "; |
160 | 160 | $niveis2[] = " |
161 | - <Level name='".converte($r["nome_tipo_regiao"])." - GeoCod' | |
161 | + <Level name='".converte($r["nome_tipo_regiao"])." - GeoCod #{$caminho[$i]}' | |
162 | 162 | column='j$i{$r['identificador']}' |
163 | 163 | nameColumn='j$i{$r["identificador"]}' uniqueMembers='false'/> |
164 | 164 | "; |
... | ... | @@ -169,7 +169,7 @@ foreach($regioes as $regiao){ |
169 | 169 | nameColumn='nome' uniqueMembers='true' /> |
170 | 170 | "; |
171 | 171 | $niveis2[] = " |
172 | - <Level name='".converte($regiao["nome_tipo_regiao"])." - GeoCod' | |
172 | + <Level name='".converte($regiao["nome_tipo_regiao"])." - GeoCod #{$regiao["codigo_tipo_regiao"]}' | |
173 | 173 | column='codigo' |
174 | 174 | nameColumn='codigo' uniqueMembers='true' /> |
175 | 175 | "; |
... | ... | @@ -327,6 +327,9 @@ header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["l |
327 | 327 | |
328 | 328 | function converte($texto){ |
329 | 329 | $texto = str_replace("&","&",htmlentities($texto)); |
330 | + //$texto = htmlentities($texto); | |
331 | + //$texto = mb_convert_encoding($texto, 'UTF-8', mb_detect_encoding($texto)); | |
332 | + //$texto = utf8_encode($texto); | |
330 | 333 | return $texto; |
331 | 334 | } |
332 | 335 | ?> | ... | ... |
ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/index.html
... | ... | @@ -22,6 +22,7 @@ |
22 | 22 | |
23 | 23 | <!-- jQuery CSS --> |
24 | 24 | <link rel="stylesheet" href="css/jquery/jquery-ui.css" type="text/css" media="all" /> |
25 | +<link rel="stylesheet" href="js/jquery/jquery.colourPicker.css" type="text/css" media="all" /> | |
25 | 26 | |
26 | 27 | <link rel="stylesheet" href="js/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" /> |
27 | 28 | <link rel="stylesheet" href="js/jquery/jquery.contextMenu.css" type="text/css" media="screen" /> |
... | ... | @@ -56,6 +57,7 @@ |
56 | 57 | |
57 | 58 | |
58 | 59 | <script type="text/javascript" src="js/fancybox/jquery.fancybox-1.3.4.pack.js"></script> |
60 | + <script type="text/javascript" src="js/jquery/jquery.colourPicker.js"></script> | |
59 | 61 | |
60 | 62 | |
61 | 63 | <!-- Backbone.js and deps --> |
... | ... | @@ -108,10 +110,6 @@ |
108 | 110 | |
109 | 111 | <!-- Saiku plugins --> |
110 | 112 | |
111 | - | |
112 | - <!-- | |
113 | - <script type="text/javascript" src="js/saiku/plugins/Chart/plugin.js" defer></script> | |
114 | - --> | |
115 | 113 | <script type="text/javascript" src="js/saiku/plugins/Statistics/plugin.js" defer></script> |
116 | 114 | <script type="text/javascript" src="js/saiku/plugins/I18n/plugin.js" defer></script> |
117 | 115 | <script type="text/javascript" src="js/saiku/plugins/BIServer/plugin.js" defer></script> |
... | ... | @@ -125,28 +123,18 @@ |
125 | 123 | <script type="text/javascript" src="js/saiku/plugins/CCC_Chart/jquery.tipsy.js"></script> |
126 | 124 | <script type="text/javascript" src="js/saiku/plugins/CCC_Chart/tipsy.js"></script> |
127 | 125 | <link type="text/css" href="js/saiku/plugins/CCC_Chart/tipsy.css" rel="stylesheet" /> |
128 | - <!-- FUTURE FILES FOR CHART EDITOR | |
129 | - <script type="text/javascript" src="js/saiku/plugins/CCC_Chart/cccProperties.js"></script> | |
130 | - <script type="text/javascript" src="js/saiku/plugins/CCC_Chart/cccCharts.js"></script> | |
131 | - <script type="text/javascript" src="js/saiku/plugins/CCC_Chart/ChartEditor.js"></script> | |
132 | - --> | |
133 | 126 | <script type="text/javascript" src="js/saiku/plugins/CCC_Chart/plugin.js"></script> |
134 | 127 | |
135 | 128 | <script type="text/javascript" src="js/ace/ace.js" charset="utf-8"></script> |
136 | 129 | |
137 | - <!--start js SaikuChartPlus--> | |
138 | - <script type="text/javascript" src="js/saiku/plugins/SaikuChartPlus/plugin.js" defer></script> | |
139 | - <!--<script type="text/javascript" src="https://www.google.com/jsapi"></script> | |
140 | -<script type="text/javascript"> | |
141 | - google.load('visualization', '1.0', {'packages':['geochart','geomap']}); | |
142 | -</script> | |
143 | ---> | |
144 | - <!--end js SaikuChartPlus--> | |
130 | + <!--start js i3GeoMap--> | |
131 | + <script type="text/javascript" src="js/saiku/plugins/i3GeoMap/plugin.js" ></script> | |
132 | + <!--end js i3GeoMap--> | |
145 | 133 | |
146 | 134 | <!-- i3GEO obtem o parametro passado pela url e que contem o codigo da conexao que deve ser utilizada --> |
147 | 135 | <script> |
148 | -nomeConexao = window.location.search.replace("?",""); | |
149 | -</script> | |
136 | + nomeConexao = parametroUrl("nomeConexao"); | |
137 | + </script> | |
150 | 138 | <!-- Templates --> |
151 | 139 | <script type="text/x-jquery-tmpl" id="template-toolbar"> |
152 | 140 | <ul> | ... | ... |
ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/CCC_Chart/plugin.js
0 → 100755
... | ... | @@ -0,0 +1,705 @@ |
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 | + * Renders a chart for each workspace | |
19 | + */ | |
20 | +var Chart = Backbone.View.extend({ | |
21 | + | |
22 | + events: { | |
23 | + 'click .keep' : 'keepVisible' | |
24 | + }, | |
25 | + | |
26 | + cccOptions: { | |
27 | + type: "BarChart", | |
28 | + stacked: true | |
29 | + }, | |
30 | + | |
31 | + data: null, | |
32 | + hasProcessed: null, | |
33 | + | |
34 | + getChartProperties: function(chartName) { | |
35 | + var self = this; | |
36 | + var ret = []; | |
37 | + _.each(ChartProperties, function(property) { | |
38 | + if (property.ChartObject == chartName) { | |
39 | + ret.push(property); | |
40 | + } | |
41 | + | |
42 | + }); | |
43 | + return ret; | |
44 | + | |
45 | + }, | |
46 | + | |
47 | + initialize: function(args) { | |
48 | + | |
49 | + this.workspace = args.workspace; | |
50 | + | |
51 | + // Create a unique ID for use as the CSS selector | |
52 | + this.id = _.uniqueId("chart_"); | |
53 | + $(this.el).attr({ id: this.id }); | |
54 | + //$('<div id="nav_' + this.id + '">' + "<input type='submit' class='keep' value='keep only selected' />" + '</div>').appendTo($(this.el)); | |
55 | + $('<div class="canvas_wrapper" style="display:none;"><div id="canvas_' + this.id + '"></div></div>').appendTo($(this.el)); | |
56 | + | |
57 | + this.cccOptions.canvas = 'canvas_' + this.id; | |
58 | + this.cccOptions = this.getQuickOptions(this.cccOptions); | |
59 | + | |
60 | + this.data = null; | |
61 | + | |
62 | + // Bind table rendering to query result event | |
63 | + _.bindAll(this, "receive_data", "process_data", "show", "getData", "render_view", "render_chart", "render_chart_delayed", "getQuickOptions","exportChart","block_ui"); | |
64 | + var self = this; | |
65 | + this.workspace.bind('query:run', function() { | |
66 | + if (! $(self.workspace.querytoolbar.el).find('.render_chart').hasClass('on')) { | |
67 | + return false; | |
68 | + } | |
69 | + self.data = {}; | |
70 | + self.data.resultset = []; | |
71 | + self.data.metadata = []; | |
72 | + $(self.el).find('.canvas_wrapper').hide(); | |
73 | + return false; | |
74 | + }); | |
75 | + | |
76 | + this.workspace.bind('query:fetch', this.block_ui); | |
77 | + | |
78 | + this.workspace.bind('query:result', this.receive_data); | |
79 | + | |
80 | + var pseudoForm = "<div id='nav" + this.id + "' style='display:none' class='nav'><form id='svgChartPseudoForm' target='_blank' method='POST'>" + | |
81 | + "<input type='hidden' name='type' class='type'/>" + | |
82 | + "<input type='hidden' name='svg' class='svg'/>" + | |
83 | + "</form></div>"; | |
84 | + if (isIE) { | |
85 | + pseudoForm = "<div></div>"; | |
86 | + } | |
87 | + this.nav =$(pseudoForm); | |
88 | + | |
89 | + $(this.el).append(this.nav); | |
90 | + | |
91 | + /* | |
92 | + // Create navigation | |
93 | + var exportoptions = "<div><a class='hide' href='#charteditor' id='acharteditor' /><!--<a class='editor' href='#chart_editor'>Advanced Properties</a>-->Export to: " + | |
94 | + "<a class='export' href='#png' class='i18n'>PNG</a>, " + | |
95 | + "<a class='export' href='#pdf' class='i18n'>PDF</a>, " + | |
96 | + //"<a class='export' href='#tiff' class='i18n'>TIFF</a>, " + | |
97 | + "<a class='export' href='#svg' class='i18n'>SVG</a>, " + | |
98 | + "<a class='export' href='#jpg' class='i18n'>JPG</a>" + | |
99 | + "<form id='svgChartPseudoForm' target='_blank' method='POST'>" + | |
100 | + "<input type='hidden' name='type' class='type'/>" + | |
101 | + "<input type='hidden' name='svg' class='svg'/>" + | |
102 | + "</form>"; | |
103 | + | |
104 | + var chartnav = exportoptions + "</div>"; | |
105 | + if (typeof isIE !== "undefined") { | |
106 | + chartnav = "<div></div>"; | |
107 | + } | |
108 | + // Create navigation | |
109 | + this.nav = $(chartnav).css({ | |
110 | + 'padding-bottom': '10px' | |
111 | + }); | |
112 | + this.nav.find('a.type').css({ | |
113 | + color: '#666', | |
114 | + 'margin-right': '5px', | |
115 | + 'text-decoration': 'none', | |
116 | + 'border': '1px solid #ccc', | |
117 | + padding: '5px' | |
118 | + }); | |
119 | + | |
120 | + this.nav.find('a.export').click(this.exportChart); | |
121 | + | |
122 | + | |
123 | + this.nav.find('a').css({ | |
124 | + color: '#666', | |
125 | + 'margin-right': '5px', | |
126 | + 'text-decoration': 'none', | |
127 | + 'border': '1px solid #ccc', | |
128 | + padding: '5px' | |
129 | + }); | |
130 | + */ | |
131 | + /* XXX - enable again later | |
132 | + $(this.nav).append('<div style="display:none;"> <div id="charteditor" class="chart_editor"></div></div>'); | |
133 | + | |
134 | + this.editor = new ChartEditor({ workspace : this.workspace, | |
135 | + ChartProperties : ChartProperties, | |
136 | + ChartTypes: ChartTypes, | |
137 | + data : this.getData, | |
138 | + getChartProperties : this.getChartProperties}); | |
139 | + | |
140 | + $(this.nav).find('.chart_editor').append($(this.editor.el)); | |
141 | + */ | |
142 | + | |
143 | + }, | |
144 | + | |
145 | + | |
146 | + block_ui: function() { | |
147 | + if (! $(this.workspace.querytoolbar.el).find('.render_chart').hasClass('on')) { | |
148 | + return; | |
149 | + } | |
150 | + //Saiku.ui.block("Updating chart data...."); | |
151 | + }, | |
152 | + | |
153 | + exportChart: function(type) { | |
154 | + var svgContent = new XMLSerializer().serializeToString($('svg')[0]); | |
155 | + var rep = '<svg xmlns="http://www.w3.org/2000/svg" '; | |
156 | + if (svgContent.substr(0,rep.length) != rep) { | |
157 | + svgContent = svgContent.replace('<svg ', rep); | |
158 | + } | |
159 | + | |
160 | + var form = $('#svgChartPseudoForm'); | |
161 | + form.find('.type').val(type); | |
162 | + form.find('.svg').val(svgContent); | |
163 | + form.attr('action', Settings.REST_URL + this.workspace.query.url() + escape("/../../export/saiku/chart")); | |
164 | + form.submit(); | |
165 | + return false; | |
166 | + }, | |
167 | + | |
168 | + render_view: function() { | |
169 | + // Append chart to workspace | |
170 | + $(this.workspace.el).find('.workspace_results') | |
171 | + .prepend($(this.el).hide()); | |
172 | + }, | |
173 | + | |
174 | + getData: function() { | |
175 | + return this.data; | |
176 | + }, | |
177 | + | |
178 | + show: function(event, ui) { | |
179 | + /* | |
180 | + if ('MODE' in Settings && Settings.MODE == 'table') { | |
181 | + $(this.nav).hide(); | |
182 | + } else { | |
183 | + $(this.nav).show(); | |
184 | + } | |
185 | + | |
186 | + $('a#acharteditor').fancybox( | |
187 | + { | |
188 | + 'autoDimensions' : false, | |
189 | + 'autoScale' : false, | |
190 | + 'height' : ($("body").height() - 140), | |
191 | + 'width' : ($("body").width() - 100), | |
192 | + 'transitionIn' : 'none', | |
193 | + 'transitionOut' : 'none', | |
194 | + 'type' : 'inline' | |
195 | + } | |
196 | + ); | |
197 | + */ | |
198 | + if (this.cccOptions.width <= 0) { | |
199 | + this.cccOptions.width = $(this.workspace.el).find('.workspace_results').width() - 40; | |
200 | + } | |
201 | + if (this.cccOptions.height <= 0) { | |
202 | + this.cccOptions.height = $(this.workspace.el).find('.workspace_results').height() - 40; | |
203 | + } | |
204 | + | |
205 | + $(this.el).show(); | |
206 | + | |
207 | + var hasRun = this.workspace.query.result.hasRun(); | |
208 | + if (hasRun) { | |
209 | + this.process_data({ data: this.workspace.query.result.lastresult() }); | |
210 | + } | |
211 | + | |
212 | + }, | |
213 | + | |
214 | + chart_editor: function() { | |
215 | + $('a#acharteditor').click(); | |
216 | + return true; | |
217 | + }, | |
218 | + | |
219 | + export_button: function(event) { | |
220 | + var self = this; | |
221 | + $target = $(event.target).hasClass('button') ? $(event.target) : $(event.target).parent(); | |
222 | + | |
223 | + var self = this; | |
224 | + $body = $(document); | |
225 | + //$body.off('.contextMenu .contextMenuAutoHide'); | |
226 | + //$('.context-menu-list').remove(); | |
227 | + $.contextMenu('destroy', '.export_button'); | |
228 | + $.contextMenu({ | |
229 | + selector: '.export_button', | |
230 | + trigger: 'left', | |
231 | + ignoreRightClick: true, | |
232 | + callback: function(key, options) { | |
233 | + self.workspace.chart.exportChart(key); | |
234 | + }, | |
235 | + items: { | |
236 | + "png": {name: "PNG"}, | |
237 | + "jpg": {name: "JPEG"}, | |
238 | + "pdf": {name: "PDF"}, | |
239 | + "svg": {name: "SVG"} | |
240 | + } | |
241 | + }); | |
242 | + $target.contextMenu(); | |
243 | + }, | |
244 | + | |
245 | + button: function(event) { | |
246 | + $target = $(event.target).hasClass('button') ? $(event.target) : $(event.target).parent(); | |
247 | + if ($target.hasClass('chartoption')) { | |
248 | + $target.parent().siblings().find('.chartoption.on').removeClass('on'); | |
249 | + $target.addClass('on'); | |
250 | + if ($(this.workspace.querytoolbar.el).find('.render_chart').hasClass('on')) { | |
251 | + $(this.el).find('.canvas_wrapper').hide(); | |
252 | + } | |
253 | + | |
254 | + | |
255 | + } | |
256 | + return false; | |
257 | + }, | |
258 | + | |
259 | + stackedBar: function() { | |
260 | + this.workspace.query.setProperty('saiku.ui.render.type', 'stackedBar'); | |
261 | + var options = { | |
262 | + stacked: true, | |
263 | + type: "BarChart" | |
264 | + }; | |
265 | + this.cccOptions = this.getQuickOptions(options); | |
266 | + this.render_chart(); | |
267 | + }, | |
268 | + | |
269 | + bar: function() { | |
270 | + this.workspace.query.setProperty('saiku.ui.render.type', 'bar'); | |
271 | + var options = { | |
272 | + type: "BarChart" | |
273 | + }; | |
274 | + this.cccOptions = this.getQuickOptions(options); | |
275 | + this.render_chart(); | |
276 | + /* | |
277 | + this.cccOptions.multiChartIndexes = [1]; | |
278 | + this.cccOptions.dataMeasuresInColumns = true; | |
279 | + this.cccOptions.orientation = 'vertical'; | |
280 | + this.cccOptions.smallTitlePosition = 'left'; | |
281 | + //this.cccOptions.multiChartColumnsMax = 5; | |
282 | + this.cccOptions.smallWidth = 300; | |
283 | + this.cccOptions.smallHeight = 100; | |
284 | + */ | |
285 | + }, | |
286 | + | |
287 | + multiplebar: function() { | |
288 | + this.workspace.query.setProperty('saiku.ui.render.type', 'multiplebar'); | |
289 | + var options = { | |
290 | + type: "BarChart", | |
291 | + multiChartIndexes: [1], | |
292 | + dataMeasuresInColumns: true, | |
293 | + orientation: "vertical", | |
294 | + smallTitlePosition: "top", | |
295 | + multiChartMax: 30, | |
296 | + multiChartColumnsMax: Math.floor( this.cccOptions.width / 200), | |
297 | + smallWidth: 200, | |
298 | + smallHeight: 150 | |
299 | + | |
300 | + }; | |
301 | + this.cccOptions = this.getQuickOptions(options); | |
302 | + this.render_chart(); | |
303 | + }, | |
304 | + | |
305 | + line: function() { | |
306 | + this.workspace.query.setProperty('saiku.ui.render.type', 'line'); | |
307 | + var options = { | |
308 | + type: "LineChart" | |
309 | + }; | |
310 | + | |
311 | + this.cccOptions = this.getQuickOptions(options); | |
312 | + this.render_chart(); | |
313 | + }, | |
314 | + | |
315 | + pie: function() { | |
316 | + this.workspace.query.setProperty('saiku.ui.render.type', 'pie'); | |
317 | + var options = { | |
318 | + type: "PieChart", | |
319 | + multiChartIndexes: [0] // ideally this would be chosen by the user (count, which) | |
320 | + }; | |
321 | + this.cccOptions = this.getQuickOptions(options); | |
322 | + this.render_chart(); | |
323 | + }, | |
324 | + | |
325 | + heatgrid: function() { | |
326 | + this.workspace.query.setProperty('saiku.ui.render.type', 'heatgrid'); | |
327 | + var options = { | |
328 | + type: "HeatGridChart" | |
329 | + }; | |
330 | + this.cccOptions = this.getQuickOptions(options); | |
331 | + this.render_chart(); | |
332 | + }, | |
333 | + | |
334 | + stackedBar100: function() { | |
335 | + this.workspace.query.setProperty('saiku.ui.render.type', 'stackedBar100'); | |
336 | + var options = { | |
337 | + type: "NormalizedBarChart" | |
338 | + }; | |
339 | + this.cccOptions = this.getQuickOptions(options); | |
340 | + this.render_chart(); | |
341 | + }, | |
342 | + | |
343 | + area: function() { | |
344 | + this.workspace.query.setProperty('saiku.ui.render.type', 'area'); | |
345 | + var options = { | |
346 | + type: "StackedAreaChart" | |
347 | + }; | |
348 | + this.cccOptions = this.getQuickOptions(options); | |
349 | + this.render_chart(); | |
350 | + }, | |
351 | + dot: function() { | |
352 | + this.workspace.query.setProperty('saiku.ui.render.type', 'dot'); | |
353 | + var options = { | |
354 | + type: "DotChart" | |
355 | + }; | |
356 | + this.cccOptions = this.getQuickOptions(options); | |
357 | + this.render_chart(); | |
358 | + }, | |
359 | + waterfall: function() { | |
360 | + this.workspace.query.setProperty('saiku.ui.render.type', 'waterfall'); | |
361 | + var options = { | |
362 | + type: "WaterfallChart" | |
363 | + }; | |
364 | + this.cccOptions = this.getQuickOptions(options); | |
365 | + this.render_chart(); | |
366 | + }, | |
367 | + | |
368 | + keepVisible: function(event) { | |
369 | + | |
370 | + | |
371 | + var chart = this.chart.root; | |
372 | + var data = chart.data; | |
373 | + | |
374 | + data | |
375 | + .datums(null, {selected: false}) | |
376 | + .each(function(datum) { | |
377 | + datum.setVisible(false); | |
378 | + }); | |
379 | + | |
380 | + data.clearSelected(); | |
381 | + | |
382 | + chart.render(true, true, false); | |
383 | + | |
384 | + | |
385 | + }, | |
386 | + | |
387 | + // Default static style-sheet | |
388 | + cccOptionsDefault: { | |
389 | + Base: { | |
390 | + animate: false, | |
391 | + selectable: true, | |
392 | + valuesVisible: false, | |
393 | + legend: true, | |
394 | + legendPosition: "top", | |
395 | + legendAlign: "right", | |
396 | + legendSizeMax: "30%", | |
397 | + axisSizeMax: "40%", | |
398 | + plotFrameVisible : false, | |
399 | + orthoAxisMinorTicks : false, | |
400 | + colors: ["#1f77b4", "#aec7e8", "#ff7f0e", "#ffbb78", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2", "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5" ] | |
401 | +/* | |
402 | +"#B12623", | |
403 | +"#ff8585", | |
404 | +"#009bff", | |
405 | +"#1f77b4", | |
406 | +"#ff5900", | |
407 | +"#ffbb9e", | |
408 | +"#750000", | |
409 | +"#cecece", | |
410 | +"#aec7e8", "#ff7f0e", "#ffbb78", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2", "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5" ] | |
411 | + */ | |
412 | + }, | |
413 | + | |
414 | + HeatGridChart: { | |
415 | + orientation: "horizontal", | |
416 | + useShapes: true, | |
417 | + shape: "circle", | |
418 | + nullShape: "cross", | |
419 | + colorNormByCategory: false, | |
420 | + sizeRole: "value", | |
421 | + legend: false, | |
422 | + hoverable: true, | |
423 | + axisComposite: true, | |
424 | + colors: ["red", "yellow", "lightgreen", "darkgreen"], | |
425 | + xAxisSize: 130, | |
426 | + yAxisSize: 130 | |
427 | + }, | |
428 | + | |
429 | + WaterfallChart: { | |
430 | + orientation: "horizontal" | |
431 | + }, | |
432 | + | |
433 | + PieChart: { | |
434 | + multiChartColumnsMax: 3, | |
435 | + multiChartMax: 30, | |
436 | + smallTitleFont: "bold 14px sans-serif", | |
437 | + valuesVisible: true, | |
438 | + valuesMask: "{value.percent}", | |
439 | + explodedSliceRadius: "10%", | |
440 | + extensionPoints: { | |
441 | + slice_innerRadiusEx: '40%', | |
442 | + slice_offsetRadius: function(scene) { | |
443 | + return scene.isSelected() ? '10%' : 0; | |
444 | + } | |
445 | + }, | |
446 | + clickable: true | |
447 | + //valuesLabelStyle: 'inside' | |
448 | + }, | |
449 | + | |
450 | + LineChart: { | |
451 | + extensionPoints: { | |
452 | + area_interpolate: "monotone", // cardinal | |
453 | + line_interpolate: "monotone" | |
454 | + } | |
455 | + }, | |
456 | + | |
457 | + StackedAreaChart: { | |
458 | + extensionPoints: { | |
459 | + area_interpolate: "monotone", | |
460 | + line_interpolate: "monotone" | |
461 | + } | |
462 | + } | |
463 | + }, | |
464 | + | |
465 | + getQuickOptions: function(baseOptions) { | |
466 | + var chartType = (baseOptions && baseOptions.type) || "BarChart"; | |
467 | + var workspaceResults = $(this.workspace.el).find(".workspace_results"); | |
468 | + var options = _.extend({ | |
469 | + type: chartType, | |
470 | + canvas: 'canvas_' + this.id, | |
471 | + width: workspaceResults.width() - 40, | |
472 | + height: workspaceResults.height() - 40 | |
473 | + }, | |
474 | + this.cccOptionsDefault.Base, | |
475 | + this.cccOptionsDefault[chartType], // may be undefined | |
476 | + baseOptions); | |
477 | + | |
478 | + if(this.data != null && this.data.resultset.length > 5) { | |
479 | + if(options.type === "HeatGridChart") { | |
480 | + options.xAxisSize = 150; | |
481 | + } else if(options.orientation !== "horizontal") { | |
482 | + options.extensionPoints = _.extend(Object.create(options.extensionPoints || {}), | |
483 | + { | |
484 | + xAxisLabel_textAngle: -Math.PI/2, | |
485 | + xAxisLabel_textAlign: "right", | |
486 | + xAxisLabel_textBaseline: "middle" | |
487 | + }); | |
488 | + } | |
489 | + } | |
490 | + | |
491 | + return options; | |
492 | + }, | |
493 | + | |
494 | + render_chart: function() { | |
495 | + _.delay(this.render_chart_delayed, 0, this); | |
496 | + return false; | |
497 | + }, | |
498 | + | |
499 | + render_chart_delayed: function() { | |
500 | + if (!$(this.workspace.querytoolbar.el).find('.render_chart').hasClass('on') || !this.hasProcessed) { | |
501 | + return; | |
502 | + } | |
503 | + $(this.workspace.toolbar.el).find('.i3GeoMap').removeClass('on'); | |
504 | +/* DEBUGGING | |
505 | +this.med = new Date().getTime(); | |
506 | +$(this.el).prepend(" | chart render (" + (this.med - this.call_time) + ")" ); | |
507 | +this.call_time = undefined; | |
508 | +*/ | |
509 | + var workspaceResults = $(this.workspace.el).find(".workspace_results"); | |
510 | + var isSmall = (this.data != null && this.data.height < 80 && this.data.width < 80); | |
511 | + var isMedium = (this.data != null && this.data.height < 300 && this.data.width < 300); | |
512 | + var isBig = (!isSmall && !isMedium); | |
513 | + var animate = false; | |
514 | + var hoverable = isSmall; | |
515 | + | |
516 | + var runtimeChartDefinition = _.clone(this.cccOptions); | |
517 | + if (isBig) { | |
518 | + if (runtimeChartDefinition.hasOwnProperty('extensionPoints') && runtimeChartDefinition.extensionPoints.hasOwnProperty('line_interpolate')) | |
519 | + delete runtimeChartDefinition.extensionPoints.line_interpolate; | |
520 | + if (runtimeChartDefinition.hasOwnProperty('extensionPoints') && runtimeChartDefinition.extensionPoints.hasOwnProperty('area_interpolate')) | |
521 | + delete runtimeChartDefinition.extensionPoints.area_interpolate; | |
522 | + } | |
523 | + runtimeChartDefinition = _.extend(runtimeChartDefinition, { | |
524 | + width: workspaceResults.width() - 40, | |
525 | + height: workspaceResults.height() - 40, | |
526 | + hoverable: hoverable, | |
527 | + animate: animate | |
528 | + }); | |
529 | + | |
530 | + /* XXX - enable later | |
531 | + var start = new Date().getTime(); | |
532 | + this.editor.chartDefinition = _.clone(this.cccOptions); | |
533 | + this.editor.set_chart("pvc." + this.cccOptions.type); | |
534 | + this.editor.render_chart_properties("pvc." + this.cccOptions.type, this.editor.chartDefinition); | |
535 | + */ | |
536 | + | |
537 | + this.chart = new pvc[runtimeChartDefinition.type](runtimeChartDefinition); | |
538 | +/* DEBUGGING | |
539 | +this.med3 = new Date().getTime(); | |
540 | +$(this.el).prepend(" pvc (" + (this.med3 - this.med) + ")" ); | |
541 | +*/ | |
542 | + | |
543 | + this.chart.setData(this.data, { | |
544 | + crosstabMode: true, | |
545 | + seriesInRows: false | |
546 | + }); | |
547 | + | |
548 | + try { | |
549 | + if (animate) { | |
550 | + $(this.el).find('.canvas_wrapper').show(); | |
551 | + } | |
552 | + this.chart.render(); | |
553 | +/* DEBUGGING | |
554 | + var med2 = new Date().getTime(); | |
555 | + $(this.el).prepend(" done (" + (med2 - this.med) + ")" ); | |
556 | +*/ | |
557 | + } catch (e) { | |
558 | + $(this.el).text("Could not render chart"); | |
559 | + } | |
560 | + this.workspace.processing.hide(); | |
561 | + this.workspace.adjust(); | |
562 | + if (animate) { | |
563 | + return false; | |
564 | + } | |
565 | + // $('#nav_' + this.id).show(); | |
566 | + if (isIE || isBig) { | |
567 | + $(this.el).find('.canvas_wrapper').show(); | |
568 | + } else { | |
569 | + $(this.el).find('.canvas_wrapper').fadeIn(400); | |
570 | + } | |
571 | + return false; | |
572 | + }, | |
573 | + | |
574 | + receive_data: function(args) { | |
575 | + if (! $(this.workspace.querytoolbar.el).find('.render_chart').hasClass('on')) { | |
576 | + return; | |
577 | + } | |
578 | + return _.delay(this.process_data, 0, args); | |
579 | + | |
580 | + }, | |
581 | + | |
582 | + process_data: function(args) { | |
583 | + this.data = {}; | |
584 | + this.data.resultset = []; | |
585 | + this.data.metadata = []; | |
586 | + this.data.height = 0; | |
587 | + this.data.width = 0; | |
588 | + | |
589 | + if (typeof args == "undefined" || typeof args.data == "undefined" || | |
590 | + ($(this.workspace.el).is(':visible') && !$(this.el).is(':visible'))) { | |
591 | + return; | |
592 | + } | |
593 | + | |
594 | + if (args.data != null && args.data.error != null) { | |
595 | + return this.workspace.error(args); | |
596 | + } | |
597 | + // Check to see if there is data | |
598 | + if (args.data == null || (args.data.cellset && args.data.cellset.length === 0)) { | |
599 | + return this.workspace.no_results(args); | |
600 | + } | |
601 | + | |
602 | + var cellset = args.data.cellset; | |
603 | + if (cellset && cellset.length > 0) { | |
604 | +/* DEBUGGING | |
605 | +var start = new Date().getTime(); | |
606 | +this.call_time = start; | |
607 | +$(this.el).prepend(" | chart process"); | |
608 | +*/ | |
609 | + var lowest_level = 0; | |
610 | + var data_start = 0; | |
611 | + for (var row = 0; data_start == 0 && row < cellset.length; row++) { | |
612 | + this.data.metadata = []; | |
613 | + for (var field = 0; field < cellset[row].length; field++) { | |
614 | + var firstHeader = []; | |
615 | + | |
616 | + while (cellset[row][field].type == "COLUMN_HEADER" && cellset[row][field].value == "null") { | |
617 | + row++; | |
618 | + } | |
619 | + if (cellset[row][field].type == "ROW_HEADER_HEADER") { | |
620 | + | |
621 | + while(cellset[row][field].type == "ROW_HEADER_HEADER") { | |
622 | + firstHeader.push(cellset[row][field].value); | |
623 | + field++; | |
624 | + } | |
625 | + | |
626 | + this.data.metadata.push({ | |
627 | + colIndex: 0, | |
628 | + colType: "String", | |
629 | + colName: firstHeader.join('/') | |
630 | + }); | |
631 | + lowest_level = field - 1; | |
632 | + } | |
633 | + if (cellset[row][field].type == "COLUMN_HEADER" && cellset[row][field].value != "null") { | |
634 | + var lowest_col_header = 0; | |
635 | + var colheader = []; | |
636 | + while(lowest_col_header <= row) { | |
637 | + colheader.push(cellset[lowest_col_header][field].value); | |
638 | + lowest_col_header++; | |
639 | + } | |
640 | + this.data.metadata.push({ | |
641 | + colIndex: field - lowest_level + 1, | |
642 | + colType: "Numeric", | |
643 | + colName: colheader.join('/') | |
644 | + }); | |
645 | + | |
646 | + data_start = row+1; | |
647 | + } | |
648 | + } | |
649 | + } | |
650 | + var labelsSet = {}; | |
651 | + for (var row = data_start; row < cellset.length; row++) { | |
652 | + if (cellset[row][0].value !== "") { | |
653 | + var record = []; | |
654 | + this.data.width = cellset[row].length - lowest_level + 1; | |
655 | + var label = ""; | |
656 | + for (var labelCol = lowest_level; labelCol >= 0; labelCol--) { | |
657 | + var lastKnownUpperLevelRow = row; | |
658 | + while(cellset[lastKnownUpperLevelRow] && cellset[lastKnownUpperLevelRow][labelCol].value === 'null') { | |
659 | + --lastKnownUpperLevelRow; | |
660 | + } | |
661 | + if(cellset[lastKnownUpperLevelRow]) { | |
662 | + if (label == "") { | |
663 | + label = cellset[lastKnownUpperLevelRow][labelCol].value; | |
664 | + } else { | |
665 | + label = cellset[lastKnownUpperLevelRow][labelCol].value + " / " + label; | |
666 | + } | |
667 | + } | |
668 | + } | |
669 | + if(label in labelsSet) { | |
670 | + labelsSet[label] = labelsSet[label]+1; | |
671 | + label = label + ' [' + (labelsSet[label] + 1) + ']'; | |
672 | + } else { | |
673 | + labelsSet[label] = 0; | |
674 | + } | |
675 | + record.push(label); | |
676 | + | |
677 | + for (var col = lowest_level + 1; col < cellset[row].length; col++) { | |
678 | + var cell = cellset[row][col]; | |
679 | + var value = cell.value || 0; | |
680 | + // check if the resultset contains the raw value, if not try to parse the given value | |
681 | + var raw = cell.properties.raw; | |
682 | + if (raw && raw !== "null") { | |
683 | + value = parseFloat(raw); | |
684 | + } else if (typeof(cell.value) !== "number" && parseFloat(cell.value.replace(/[^a-zA-Z 0-9.]+/g,''))) { | |
685 | + value = parseFloat(cell.value.replace(/[^a-zA-Z 0-9.]+/g,'')); | |
686 | + } | |
687 | + record.push(value); | |
688 | + } | |
689 | + this.data.resultset.push(record); | |
690 | + } | |
691 | + } | |
692 | + //makeSureUniqueLabels(this.data.resultset); | |
693 | + this.hasProcessed = true; | |
694 | + this.data.height = this.data.resultset.length; | |
695 | + this.cccOptions = this.getQuickOptions(this.cccOptions); | |
696 | + this.render_chart(); | |
697 | + } else { | |
698 | + $(this.el).find('.canvas_wrapper').text("No results").show(); | |
699 | + this.workspace.processing.hide(); | |
700 | + this.workspace.adjust(); | |
701 | + } | |
702 | + } | |
703 | +}); | |
704 | + | |
705 | + | ... | ... |
ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/README.md
0 → 100755
... | ... | @@ -0,0 +1,12 @@ |
1 | +Saiku Chart Plus | |
2 | + | |
3 | +Welcome to Saiku Chart Plus Project. | |
4 | + | |
5 | +What is Saiku Chart Plus? | |
6 | + | |
7 | +It is an open source project that helps Pentaho BI users to create other types of charts and maps based on Saiku Project, Highcharts and Google Maps. | |
8 | + | |
9 | +To learn more visit our page http://it4biz.github.com/SaikuChartPlus/ | |
10 | + | |
11 | +Direct link to download Saiku Chart Plus: | |
12 | +http://sourceforge.net/projects/saikuchartplus/files/SaikuChartPlus2.4/saikuchartsplus-plugin-2.4-RC1.zip/download | ... | ... |
ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/chart.png
0 → 100755
3.31 KB
ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/map.png
0 → 100755
1.13 KB
ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/mapa.png
0 → 100644
1.23 KB
ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/plugin.js
0 → 100644
... | ... | @@ -0,0 +1,713 @@ |
1 | +/* | |
2 | + * Esse plugin e parte do software livre i3Geo | |
3 | + * | |
4 | + * Baseado em ChartPlus IT4biz IT Solutions Ltda | |
5 | + * | |
6 | + * Licensed under the Apache License, Version 2.0 (the "License"); | |
7 | + * you may not use this file except in compliance with the License. | |
8 | + * You may obtain a copy of the License at | |
9 | + * | |
10 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
11 | + * | |
12 | + * Unless required by applicable law or agreed to in writing, software | |
13 | + * distributed under the License is distributed on an "AS IS" BASIS, | |
14 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
15 | + * See the License for the specific language governing permissions and | |
16 | + * limitations under the License. | |
17 | + * changed by edmar.moretti@gmail.com | |
18 | + */ | |
19 | + | |
20 | +var i3GeoMap = Backbone.View.extend({ | |
21 | + opcoes: {cores:"",size:0,tipo:"",indicecoluna:"",cores:"",coluna:"",locaplic:"",outlinecolor:""}, | |
22 | + coreshex: ["#1f77b4", "#aec7e8", "#ff7f0e", "#ffbb78", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2", "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5" ], | |
23 | + initialize: function(args) { | |
24 | + this.workspace = args.workspace; | |
25 | + | |
26 | + // Create a unique ID for use as the CSS selector | |
27 | + this.id = _.uniqueId("i3GeoMap_"); | |
28 | + $(this.el).attr({ id: this.id }); | |
29 | + | |
30 | + // Bind map rendering to query result event | |
31 | + _.bindAll(this, "render", "receive_data", "process_data", "show", | |
32 | + "setOptions"); | |
33 | + | |
34 | + this.workspace.bind('query:result', this.receive_data); | |
35 | + | |
36 | + // Add chart button | |
37 | + this.add_button(); | |
38 | + this.workspace.toolbar.i3GeoMap = this.show; | |
39 | + | |
40 | + // Listen to adjust event and rerender chart | |
41 | + //this.workspace.bind('workspace:adjust', this.render); | |
42 | + // Create navigation | |
43 | + this.nav = $("" + | |
44 | + "<div style='overflow: hidden;padding: 10px 5px;' >"+ | |
45 | + "<div class='fields_list' style='height:34px;'>"+ | |
46 | + "<div class='fields_list_header limit'><span class='i18n_translated'>Mapa</span></div>"+ | |
47 | + "<div class='fields_list_body filter' style='margin:4px 5px 5px 5px'>"+ | |
48 | + //"<ul class='connectable ui-sortable' style=''>"+ | |
49 | + "<input type=button name=mapaBarras value='Barras' />"+ | |
50 | + "<input type=button name=mapaPizzas value='Pizzas' />"+ | |
51 | + " <input type=button name=raiosProporcionais value='Raios proporcionais' />"+ | |
52 | + " <input type=button name=circulosProporcionais value='Círculos proporcionais' />"+ | |
53 | + " <input type=button name=coresChapadas value='Cores' />"+ | |
54 | + " <input type=button name=atualizarMapa value='Atualiza' />"+ | |
55 | + " <input type=button name=fecharMapa value='Fechar' />"+ | |
56 | + //"</ul>"+ | |
57 | + "</div>"+ | |
58 | + "</div>"+ | |
59 | + "</div>"+ | |
60 | + "<div id='message'></div>"+ | |
61 | + "<form id='formi3GeoMap' method='post' target='iframei3GeoMap' action='"+parametroUrl("locaplic")+"/ferramentas/saiku/cartograma.php' >"+ | |
62 | + "<input type=hidden name=opcoes id=formi3GeoMapOpcoes value='' />"+ | |
63 | + "<input type=hidden name=g_sid id=formi3GeoMapg_sid value='"+parametroUrl("g_sid")+"' />"+ | |
64 | + "<input type=hidden name=dados id=formi3GeoMapdados value='' />"+ | |
65 | + "<input type=hidden name=metadados id=formi3GeoMapmetadados value='' />"+ | |
66 | + "</form>" + | |
67 | + "<iframe id='iframei3GeoMap' name='iframei3GeoMap' style='width:100%;height:200px;display:block' />" | |
68 | + ); | |
69 | + this.nav.find('input').click(this.setOptions); | |
70 | + | |
71 | + // Append chart to workspace | |
72 | + $(this.workspace.el).find('.workspace_results') | |
73 | + .prepend($(this.el).hide()) | |
74 | + .prepend(this.nav.hide()); | |
75 | + }, | |
76 | + add_button: function() { | |
77 | + var $chart_button = | |
78 | + $('<a href="#i3GeoMap" class="i3GeoMap button disabled_toolbar i18n" title="Mapa com i3Geo"></a>') | |
79 | + .css({ 'background-image': "url('js/saiku/plugins/i3GeoMap/mapa.png')", | |
80 | + 'background-repeat':'no-repeat', | |
81 | + 'background-position':'20% 50%' | |
82 | + }); | |
83 | + | |
84 | + var $chart_li = $('<li class="seperator"></li>').append($chart_button); | |
85 | + $(this.workspace.toolbar.el).find("ul").append($chart_li); | |
86 | + }, | |
87 | + fecha: function(){ | |
88 | + $(this.workspace.toolbar.el).find('.i3GeoMap').removeClass('on'); | |
89 | + $(this.el).hide(); | |
90 | + $(this.nav).hide(); | |
91 | + this.workspace.processing.hide(); | |
92 | + this.workspace.adjust(); | |
93 | + $(this.workspace.el).find('.workspace_results table').show(); | |
94 | + this.workspace.table.render({ data: this.workspace.query.result.lastresult() }); | |
95 | + }, | |
96 | + atualizarMapa: function(){ | |
97 | + document.getElementById('formi3GeoMap').submit(); | |
98 | + }, | |
99 | + show: function(event, ui) { | |
100 | + //$(this.workspace.el).find('.workspace_results table').toggle(); | |
101 | + $(this.el).toggle(); | |
102 | + $(this.nav).toggle(); | |
103 | + $(event.target).toggleClass('on'); | |
104 | + $("#message").html(""); | |
105 | + this.nav.find('input').show(); | |
106 | + if ($(event.target).hasClass('on')) { | |
107 | + this.process_data({ data: this.workspace.query.result.lastresult() }); | |
108 | + //this.render(); | |
109 | + } | |
110 | + }, | |
111 | + | |
112 | + setOptions: function(event) { | |
113 | + var type = $(event.target).attr('name'); | |
114 | + this.opcoes.coluna = ""; | |
115 | + this.opcoes.indicecoluna = ""; | |
116 | + this.opcoes.cores = ""; | |
117 | + this.opcoes.outlinecolor = ""; | |
118 | + this[type](this); | |
119 | + return false; | |
120 | + }, | |
121 | + fecharMapa: function(){ | |
122 | + var i = document.getElementById("iframei3GeoMap"); | |
123 | + if(i){ | |
124 | + i.src = ""; | |
125 | + i.style.display = "none"; | |
126 | + i.style.height = "0px"; | |
127 | + } | |
128 | + }, | |
129 | + mapaPizzas: function(s){ | |
130 | + this.opcoes.size = 50; | |
131 | + this.opcoes.cores = coresHex2Rgb(this.coreshex); | |
132 | + $.fancybox("Cor do contorno: "+this.cores("corContorno")+ | |
133 | + "Tamanho das pizzas (em pixels):<br><input type=text value='"+this.opcoes.size+"' size=6 id='mapaPizzasSize' />" + | |
134 | + "<br><input type=button value='OK' id='mapaPizzasOk' />" + | |
135 | + " <input type=button value='Cancela' id='mapaPizzasCancela' />" | |
136 | + , | |
137 | + { | |
138 | + 'autoDimensions' : false, | |
139 | + 'autoScale' : false, | |
140 | + 'height' : 250, | |
141 | + 'width' : 350, | |
142 | + 'transitionIn' : 'none', | |
143 | + 'transitionOut' : 'none', | |
144 | + 'showCloseButton' : false, | |
145 | + 'modal' : false | |
146 | + } | |
147 | + ); | |
148 | + document.getElementById("mapaPizzasOk").onclick = function(){ | |
149 | + s.opcoes.tipo = "mapaPizzas"; | |
150 | + s.opcoes.size = document.getElementById("mapaPizzasSize").value; | |
151 | + s.opcoes.indicecoluna = []; | |
152 | + var cori = $('input[name="corContorno"]').val(); | |
153 | + s.opcoes.outlinecolor = hex2rgb(cori); | |
154 | + s.render(); | |
155 | + $.fancybox.close(); | |
156 | + }; | |
157 | + document.getElementById("mapaPizzasCancela").onclick = function(){ | |
158 | + $.fancybox.close(); | |
159 | + s.fecharMapa(); | |
160 | + }; | |
161 | + jQuery('select[name="corContorno"]').colourPicker({ | |
162 | + ico: 'js/jquery/jquery.colourPicker.gif', | |
163 | + title: false | |
164 | + }); | |
165 | + }, | |
166 | + | |
167 | + mapaBarras: function(s){ | |
168 | + this.opcoes.size = 50; | |
169 | + this.opcoes.cores = coresHex2Rgb(this.coreshex); | |
170 | + $.fancybox("Cor do contorno: "+this.cores("corContorno")+ | |
171 | + "Tamanho das barras (em pixels):<br><input type=text value='"+this.opcoes.size+"' size=6 id='mapaBarrasSize' />" + | |
172 | + "<br><input type=button value='OK' id='mapaBarrasOk' />" + | |
173 | + " <input type=button value='Cancela' id='mapaBarrasCancela' />" | |
174 | + , | |
175 | + { | |
176 | + 'autoDimensions' : false, | |
177 | + 'autoScale' : false, | |
178 | + 'height' : 250, | |
179 | + 'width' : 350, | |
180 | + 'transitionIn' : 'none', | |
181 | + 'transitionOut' : 'none', | |
182 | + 'showCloseButton' : false, | |
183 | + 'modal' : false | |
184 | + } | |
185 | + ); | |
186 | + document.getElementById("mapaBarrasOk").onclick = function(){ | |
187 | + s.opcoes.tipo = "mapaBarras"; | |
188 | + s.opcoes.size = document.getElementById("mapaBarrasSize").value; | |
189 | + s.opcoes.indicecoluna = []; | |
190 | + var cori = $('input[name="corContorno"]').val(); | |
191 | + s.opcoes.outlinecolor = hex2rgb(cori); | |
192 | + s.render(); | |
193 | + $.fancybox.close(); | |
194 | + }; | |
195 | + document.getElementById("mapaBarrasCancela").onclick = function(){ | |
196 | + $.fancybox.close(); | |
197 | + s.fecharMapa(); | |
198 | + }; | |
199 | + jQuery('select[name="corContorno"]').colourPicker({ | |
200 | + ico: 'js/jquery/jquery.colourPicker.gif', | |
201 | + title: false | |
202 | + }); | |
203 | + }, | |
204 | + coresChapadas: function(s){ | |
205 | + this.opcoes.size = 0; | |
206 | + $.fancybox("Cor inicial: "+this.cores("corInicial")+ | |
207 | + "Cor final: "+this.cores("corFinal")+ | |
208 | + "Coluna com os valores:<br>"+ | |
209 | + "<select id='coresChapadasColuna' style='border:1px solid #BBBBBB;'>"+this.opcoesColunas()+"</select>" + | |
210 | + "<br><input type=button value='OK' id='coresChapadasOk' />" + | |
211 | + " <input type=button value='Cancela' id='coresChapadasCancela' />" | |
212 | + , | |
213 | + { | |
214 | + 'autoDimensions' : false, | |
215 | + 'autoScale' : false, | |
216 | + 'height' : 250, | |
217 | + 'width' : 350, | |
218 | + 'transitionIn' : 'none', | |
219 | + 'transitionOut' : 'none', | |
220 | + 'showCloseButton' : false, | |
221 | + 'modal' : false | |
222 | + } | |
223 | + ); | |
224 | + document.getElementById("coresChapadasOk").onclick = function(){ | |
225 | + s.opcoes.tipo = "coresChapadas"; | |
226 | + s.opcoes.size = 0; | |
227 | + s.opcoes.indicecoluna = [parseInt(document.getElementById("coresChapadasColuna").value,10)]; | |
228 | + var cori = $('input[name="corInicial"]').val(); | |
229 | + var corf = $('input[name="corFinal"]').val(); | |
230 | + s.opcoes.cores = [hex2rgb(cori),hex2rgb(corf)]; | |
231 | + s.render(); | |
232 | + $.fancybox.close(); | |
233 | + }; | |
234 | + document.getElementById("coresChapadasCancela").onclick = function(){ | |
235 | + $.fancybox.close(); | |
236 | + s.fecharMapa(); | |
237 | + }; | |
238 | + jQuery('select[name="corInicial"]').colourPicker({ | |
239 | + ico: 'js/jquery/jquery.colourPicker.gif', | |
240 | + title: false | |
241 | + }); | |
242 | + $('input[name="corInicial"]')[0].value = "ffffc7"; | |
243 | + | |
244 | + jQuery('select[name="corFinal"]').colourPicker({ | |
245 | + ico: 'js/jquery/jquery.colourPicker.gif', | |
246 | + title: false | |
247 | + }); | |
248 | + $('input[name="corFinal"]')[0].value = "643403"; | |
249 | + }, | |
250 | + raiosProporcionais: function(s){ | |
251 | + this.opcoes.size = 10; | |
252 | + $.fancybox("Escolha uma cor: "+this.cores()+ | |
253 | + "Tamanho inicial do círculo (em pixels):<br><input type=text value='"+this.opcoes.size+"' size=6 id='raiosProporcionaisSize' />" + | |
254 | + "<br>Coluna com os valores:<br>"+ | |
255 | + "<select id='raiosProporcionaisColuna' style='border:1px solid #BBBBBB;'>"+this.opcoesColunas()+"</select>" + | |
256 | + "<br><input type=button value='OK' id='raiosProporcionaisOk' />" + | |
257 | + " <input type=button value='Cancela' id='raiosProporcionaisCancela' />" | |
258 | + , | |
259 | + { | |
260 | + 'autoDimensions' : false, | |
261 | + 'autoScale' : false, | |
262 | + 'height' : 250, | |
263 | + 'width' : 350, | |
264 | + 'transitionIn' : 'none', | |
265 | + 'transitionOut' : 'none', | |
266 | + 'showCloseButton' : false, | |
267 | + 'modal' : false | |
268 | + } | |
269 | + ); | |
270 | + document.getElementById("raiosProporcionaisOk").onclick = function(){ | |
271 | + s.opcoes.tipo = "raiosProporcionais"; | |
272 | + s.opcoes.size = document.getElementById("raiosProporcionaisSize").value; | |
273 | + s.opcoes.indicecoluna = [parseInt(document.getElementById("raiosProporcionaisColuna").value,10)]; | |
274 | + var cor = $('input[name="colour"]').val(); | |
275 | + s.opcoes.cores = [hex2rgb(cor)]; | |
276 | + s.render(); | |
277 | + $.fancybox.close(); | |
278 | + }; | |
279 | + document.getElementById("raiosProporcionaisCancela").onclick = function(){ | |
280 | + $.fancybox.close(); | |
281 | + s.fecharMapa(); | |
282 | + }; | |
283 | + jQuery('select[name="colour"]').colourPicker({ | |
284 | + ico: 'js/jquery/jquery.colourPicker.gif', | |
285 | + title: false | |
286 | + }); | |
287 | + }, | |
288 | + circulosProporcionais: function(s){ | |
289 | + this.opcoes.size = 10; | |
290 | + $.fancybox("Escolha uma cor: "+this.cores()+ | |
291 | + "Tamanho inicial do círculo (em pixels):<br><input type=text value='"+this.opcoes.size+"' size=6 id='circulosProporcionaisSize' />" + | |
292 | + "<br>Coluna com os valores:<br>"+ | |
293 | + "<select id='circulosProporcionaisColuna' style='border:1px solid #BBBBBB;'>"+this.opcoesColunas()+"</select>" + | |
294 | + "<br><input type=button value='OK' id='circulosProporcionaisOk' />" + | |
295 | + " <input type=button value='Cancela' id='circulosProporcionaisCancela' />" | |
296 | + , | |
297 | + { | |
298 | + 'autoDimensions' : false, | |
299 | + 'autoScale' : false, | |
300 | + 'height' : 250, | |
301 | + 'width' : 350, | |
302 | + 'transitionIn' : 'none', | |
303 | + 'transitionOut' : 'none', | |
304 | + 'showCloseButton' : false, | |
305 | + 'modal' : false | |
306 | + } | |
307 | + ); | |
308 | + document.getElementById("circulosProporcionaisOk").onclick = function(){ | |
309 | + s.opcoes.tipo = "circulosProporcionais"; | |
310 | + s.opcoes.size = document.getElementById("circulosProporcionaisSize").value; | |
311 | + s.opcoes.indicecoluna = [parseInt(document.getElementById("circulosProporcionaisColuna").value,10)]; | |
312 | + var cor = $('input[name="colour"]').val(); | |
313 | + s.opcoes.cores = [hex2rgb(cor)]; | |
314 | + s.render(); | |
315 | + $.fancybox.close(); | |
316 | + }; | |
317 | + document.getElementById("circulosProporcionaisCancela").onclick = function(){ | |
318 | + $.fancybox.close(); | |
319 | + s.fecharMapa(); | |
320 | + }; | |
321 | + jQuery('select[name="colour"]').colourPicker({ | |
322 | + ico: 'js/jquery/jquery.colourPicker.gif', | |
323 | + title: false | |
324 | + }); | |
325 | + }, | |
326 | + | |
327 | + opcoesColunas: function(){ | |
328 | + var m = this.data.metadata, | |
329 | + n = m.length, | |
330 | + i = 0, | |
331 | + ins = []; | |
332 | + for(i=1;i<n;i++){ | |
333 | + ins.push("<option value='"+m[i].colIndex+"' >"+m[i].colName+"</option>"); | |
334 | + } | |
335 | + return ins.join(""); | |
336 | + }, | |
337 | + cores: function(nome){ | |
338 | + if(!nome){ | |
339 | + nome = "colour"; | |
340 | + } | |
341 | + var cor = "<div id='jquery-colour-picker-example' >" + | |
342 | + "<p><select name='"+nome+"'>"+ | |
343 | + "<option value='ffffff' selected='selected'>#ffffff</option>"+ | |
344 | + "<option value='ffccc9'>#ffccc9</option>"+ | |
345 | + "<option value='ffce93'>#ffce93</option>"+ | |
346 | + "<option value='fffc9e'>#fffc9e</option>"+ | |
347 | + "<option value='ffffc7'>#ffffc7</option>"+ | |
348 | + "<option value='9aff99'>#9aff99</option>"+ | |
349 | + "<option value='96fffb'>#96fffb</option>"+ | |
350 | + "<option value='cdffff'>#cdffff</option>"+ | |
351 | + "<option value='cbcefb'>#cbcefb</option>"+ | |
352 | + "<option value='cfcfcf'>#cfcfcf</option>"+ | |
353 | + "<option value='fd6864'>#fd6864</option>"+ | |
354 | + "<option value='fe996b'>#fe996b</option>"+ | |
355 | + "<option value='fffe65'>#fffe65</option>"+ | |
356 | + "<option value='fcff2f'>#fcff2f</option>"+ | |
357 | + "<option value='67fd9a'>#67fd9a</option>"+ | |
358 | + "<option value='38fff8'>#38fff8</option>"+ | |
359 | + "<option value='68fdff'>#68fdff</option>"+ | |
360 | + "<option value='9698ed'>#9698ed</option>"+ | |
361 | + "<option value='c0c0c0'>#c0c0c0</option>"+ | |
362 | + "<option value='fe0000'>#fe0000</option>"+ | |
363 | + "<option value='f8a102'>#f8a102</option>"+ | |
364 | + "<option value='ffcc67'>#ffcc67</option>"+ | |
365 | + "<option value='f8ff00'>#f8ff00</option>"+ | |
366 | + "<option value='34ff34'>#34ff34</option>"+ | |
367 | + "<option value='68cbd0'>#68cbd0</option>"+ | |
368 | + "<option value='34cdf9'>#34cdf9</option>"+ | |
369 | + "<option value='6665cd'>#6665cd</option>"+ | |
370 | + "<option value='9b9b9b'>#9b9b9b</option>"+ | |
371 | + "<option value='cb0000'>#cb0000</option>"+ | |
372 | + "<option value='f56b00'>#f56b00</option>"+ | |
373 | + "<option value='ffcb2f'>#ffcb2f</option>"+ | |
374 | + "<option value='ffc702'>#ffc702</option>"+ | |
375 | + "<option value='32cb00'>#32cb00</option>"+ | |
376 | + "<option value='00d2cb'>#00d2cb</option>"+ | |
377 | + "<option value='3166ff'>#3166ff</option>"+ | |
378 | + "<option value='6434fc'>#6434fc</option>"+ | |
379 | + "<option value='656565'>#656565</option>"+ | |
380 | + "<option value='9a0000'>#9a0000</option>"+ | |
381 | + "<option value='ce6301'>#ce6301</option>"+ | |
382 | + "<option value='cd9934'>#cd9934</option>"+ | |
383 | + "<option value='999903'>#999903</option>"+ | |
384 | + "<option value='009901'>#009901</option>"+ | |
385 | + "<option value='329a9d'>#329a9d</option>"+ | |
386 | + "<option value='3531ff'>#3531ff</option>"+ | |
387 | + "<option value='6200c9'>#6200c9</option>"+ | |
388 | + "<option value='343434'>#343434</option>"+ | |
389 | + "<option value='680100'>#680100</option>"+ | |
390 | + "<option value='963400'>#963400</option>"+ | |
391 | + "<option value='986536'>#986536</option>"+ | |
392 | + "<option value='646809'>#646809</option>"+ | |
393 | + "<option value='036400'>#036400</option>"+ | |
394 | + "<option value='34696d'>#34696d</option>"+ | |
395 | + "<option value='00009b'>#00009b</option>"+ | |
396 | + "<option value='303498'>#303498</option>"+ | |
397 | + "<option value='000000'>#000000</option>"+ | |
398 | + "<option value='330001'>#330001</option>"+ | |
399 | + "<option value='643403'>#643403</option>"+ | |
400 | + "<option value='663234'>#663234</option>"+ | |
401 | + "<option value='343300'>#343300</option>"+ | |
402 | + "<option value='013300'>#013300</option>"+ | |
403 | + "<option value='003532'>#003532</option>"+ | |
404 | + "<option value='010066'>#010066</option>"+ | |
405 | + "<option value='340096'>#340096</option></select></p></div>"; | |
406 | + return cor; | |
407 | + }, | |
408 | + render: function() { | |
409 | + if (! $(this.workspace.toolbar.el).find('.i3GeoMap').hasClass('on')) { | |
410 | + this.fecha(); | |
411 | + this.fecharMapa(); | |
412 | + return; | |
413 | + } | |
414 | + var series=[]; | |
415 | + //nome das colunas | |
416 | + var column=[]; | |
417 | + var columnGeoCod = ""; | |
418 | + var indiceColumnGeoCod = ""; | |
419 | + var metadata = []; | |
420 | + var indicecoluna = ""; | |
421 | + for(var i=0; i < this.data.metadata.length; i++){ | |
422 | + if(this.opcoes.indicecoluna == this.data.metadata[i].colIndex){ | |
423 | + indicecoluna = i; | |
424 | + } | |
425 | + column[i] = this.data.metadata[i].colName; | |
426 | + //se o usuario escolheu uma coluna, as demais sao marcadas com o nome vazio | |
427 | + if(this.opcoes.indicecoluna != ""){ | |
428 | + //if(this.opcoes.indicecoluna.indexOf(this.data.metadata[i].colIndex) != -1) | |
429 | + if(this.opcoes.indicecoluna.indexOf(this.data.metadata[i].colIndex) != -1 || column[i].search("GeoCod") > 0){ | |
430 | + metadata.push(this.data.metadata[i]); | |
431 | + } | |
432 | + } | |
433 | + else{ | |
434 | + metadata.push(this.data.metadata[i]); | |
435 | + } | |
436 | + //pega a coluna GeoCod | |
437 | + if(column[i].search("GeoCod") > 0){ | |
438 | + //verifica se tem mais de um GeoCod | |
439 | + if(columnGeoCod != ""){ | |
440 | + alert("Existem mais de uma coluna GeoCod!"); | |
441 | + this.fecha(); | |
442 | + $.fancybox.close(); | |
443 | + return; | |
444 | + } | |
445 | + columnGeoCod = column[i]; | |
446 | + indiceColumnGeoCod = i; | |
447 | + } | |
448 | + } | |
449 | + if(columnGeoCod === ""){ | |
450 | + alert("Coluna GeoCod nao existe!"); | |
451 | + this.fecha(); | |
452 | + $.fancybox.close(); | |
453 | + //this.nav.find('input').hide(); | |
454 | + return; | |
455 | + } | |
456 | + series[0]=column; | |
457 | + var dados = []; | |
458 | + if(indicecoluna != ""){ | |
459 | + if (this.data.resultset.length > 0 ) { | |
460 | + $.each(this.data.resultset, function(key, value) { | |
461 | + dados.push([value[indiceColumnGeoCod],value[indicecoluna]]); | |
462 | + }); | |
463 | + } | |
464 | + } | |
465 | + else{ | |
466 | + if (this.data.resultset.length > 0 ) { | |
467 | + $.each(this.data.resultset, function(key, value) { | |
468 | + var aux=value[0]+''; | |
469 | + aux = aux.split(" \/ "); | |
470 | + aux = aux[indiceColumnGeoCod]; | |
471 | + value[0]=aux; | |
472 | + dados.push(value); | |
473 | + }); | |
474 | + } | |
475 | + } | |
476 | + //preenche os dados do formulario | |
477 | + this.opcoes.locaplic = parametroUrl("locaplic"); | |
478 | + this.opcoes.mapext = parametroUrl("mapext"); | |
479 | + document.getElementById("formi3GeoMapOpcoes").value = JSON.stringify(this.opcoes); | |
480 | + document.getElementById("formi3GeoMapdados").value = JSON.stringify(dados); | |
481 | + document.getElementById("formi3GeoMapmetadados").value = JSON.stringify(metadata); | |
482 | + document.getElementById("iframei3GeoMap").style.height = parseInt($(this.workspace.el).find('.workspace_results')[0].style.height) - 50 +"px"; | |
483 | + document.getElementById("formi3GeoMap").submit(); | |
484 | + document.getElementById("iframei3GeoMap").style.display = "block"; | |
485 | + }, | |
486 | + receive_data: function(args) { | |
487 | + if ($(this.workspace.toolbar.el).find('.i3GeoMap').hasClass('on')) { | |
488 | + this.fecha(); | |
489 | + this.fecharMapa(); | |
490 | + return false; | |
491 | + } | |
492 | + return _.delay(this.process_data, 0, args); | |
493 | + }, | |
494 | + process_data: function(args) { | |
495 | + this.data = {}; | |
496 | + this.data.resultset = []; | |
497 | + this.data.metadata = []; | |
498 | + this.data.height = 0; | |
499 | + this.data.width = 0; | |
500 | + if (! $(this.workspace.toolbar.el).find('.i3GeoMap').hasClass('on')) { | |
501 | + this.fecha(); | |
502 | + this.fecharMapa(); | |
503 | + return; | |
504 | + } | |
505 | + var cellset = args.data.cellset; | |
506 | + var nome = ""; | |
507 | + var colunaGeocod = ""; | |
508 | + var colunaGeocodIndice = ""; | |
509 | + if (cellset && cellset.length > 0) { | |
510 | + var lowest_level = 0; | |
511 | + var data_start = 0; | |
512 | + for (var row = 0; data_start == 0 && row < cellset.length; row++) { | |
513 | + this.data.metadata = []; | |
514 | + for (var field = 0; field < cellset[row].length; field++) { | |
515 | + var firstHeader = []; | |
516 | + | |
517 | + while (cellset[row][field].type == "COLUMN_HEADER" && cellset[row][field].value == "null") { | |
518 | + row++; | |
519 | + } | |
520 | + nome = ""; | |
521 | + //colunaGeocod = ""; | |
522 | + //colunaGeocodIndice = ""; | |
523 | + if (cellset[row][field].type == "ROW_HEADER_HEADER") { | |
524 | + while(cellset[row][field].type == "ROW_HEADER_HEADER") { | |
525 | + nome = cellset[row][field].value; | |
526 | + firstHeader.push(nome); | |
527 | + if(nome.search("GeoCod") > 0){ | |
528 | + colunaGeocod = nome; | |
529 | + colunaGeocodIndice = field; | |
530 | + } | |
531 | + field++; | |
532 | + } | |
533 | + tipo = "linha"; | |
534 | + identificador = cellset[row][field-1].properties.level; | |
535 | + if(firstHeader.join('/').search("GeoCod") > 0){ | |
536 | + this.data.metadata.push({ | |
537 | + colIndex: 0, | |
538 | + colType: "String", | |
539 | + colName: colunaGeocod, | |
540 | + tipo: tipo, | |
541 | + identificador: identificador | |
542 | + }); | |
543 | + lowest_level = field - 1; | |
544 | + } | |
545 | + | |
546 | + } | |
547 | + if (cellset[row][field].type == "COLUMN_HEADER" && cellset[row][field].value != "null") { | |
548 | + var lowest_col_header = 0; | |
549 | + var colheader = []; | |
550 | + while(lowest_col_header <= row) { | |
551 | + colheader.push(cellset[lowest_col_header][field].value); | |
552 | + lowest_col_header++; | |
553 | + } | |
554 | + | |
555 | + tipo = "coluna"; | |
556 | + identificador = cellset[row][lowest_col_header].properties.uniquename; | |
557 | + | |
558 | + this.data.metadata.push({ | |
559 | + colIndex: field - lowest_level + 1, | |
560 | + colType: "Numeric", | |
561 | + colName: colheader.join('/'), | |
562 | + tipo: tipo, | |
563 | + identificador: identificador | |
564 | + }); | |
565 | + data_start = row+1; | |
566 | + } | |
567 | + } | |
568 | + } | |
569 | + | |
570 | + for (var row = data_start; row < cellset.length; row++) { | |
571 | + if (cellset[row][0].value !== "") { | |
572 | + var record = []; | |
573 | + this.data.width = cellset[row].length - lowest_level + 1; | |
574 | + var label = ""; | |
575 | + if(cellset[row][colunaGeocodIndice]){ | |
576 | + label = cellset[row][colunaGeocodIndice].value; | |
577 | + } | |
578 | + /* | |
579 | + if(label in labelsSet) { | |
580 | + labelsSet[label] = labelsSet[label]+1; | |
581 | + label = label + ' [' + (labelsSet[label] + 1) + ']'; | |
582 | + } else { | |
583 | + labelsSet[label] = 0; | |
584 | + } | |
585 | + */ | |
586 | + record.push(label); | |
587 | + | |
588 | + for (var col = lowest_level + 1; col < cellset[row].length; col++) { | |
589 | + var cell = cellset[row][col]; | |
590 | + var value = cell.value || 0; | |
591 | + // check if the resultset contains the raw value, if not try to parse the given value | |
592 | + var raw = cell.properties.raw; | |
593 | + if (raw && raw !== "null") { | |
594 | + value = parseFloat(raw); | |
595 | + } else if (typeof(cell.value) !== "number" && parseFloat(cell.value.replace(/[^a-zA-Z 0-9.]+/g,''))) { | |
596 | + value = parseFloat(cell.value.replace(/[^a-zA-Z 0-9.]+/g,'')); | |
597 | + } | |
598 | + record.push(value); | |
599 | + } | |
600 | + this.data.resultset.push(record); | |
601 | + } | |
602 | + } | |
603 | + //makeSureUniqueLabels(this.data.resultset); | |
604 | + this.hasProcessed = true; | |
605 | + this.data.height = this.data.resultset.length; | |
606 | + //this.cccOptions = this.getQuickOptions(this.cccOptions); | |
607 | + //this.render(); | |
608 | + } else { | |
609 | + $(this.el).find('.canvas_wrapper').text("No results").show(); | |
610 | + this.workspace.processing.hide(); | |
611 | + this.workspace.adjust(); | |
612 | + } | |
613 | + } | |
614 | +}); | |
615 | +function hex2rgb(hex,tipo) { | |
616 | + if(!tipo){ | |
617 | + tipo = "array"; | |
618 | + } | |
619 | + if (hex[0]=="#") hex=hex.substr(1); | |
620 | + if (hex.length==3) { | |
621 | + var temp=hex; hex=''; | |
622 | + temp = /^([a-f0-9])([a-f0-9])([a-f0-9])$/i.exec(temp).slice(1); | |
623 | + for (var i=0;i<3;i++) hex+=temp[i]+temp[i]; | |
624 | + } | |
625 | + var triplets = /^([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i.exec(hex).slice(1); | |
626 | + if(tipo == "array"){ | |
627 | + return { | |
628 | + red: parseInt(triplets[0],16), | |
629 | + green: parseInt(triplets[1],16), | |
630 | + blue: parseInt(triplets[2],16) | |
631 | + }; | |
632 | + } | |
633 | + else{ | |
634 | + return parseInt(triplets[0],16)+ " " + parseInt(triplets[1],16) + " " + parseInt(triplets[2],16); | |
635 | + } | |
636 | +} | |
637 | +function coresHex2Rgb(lista){ | |
638 | + var n = lista.length, | |
639 | + i =0, | |
640 | + f = []; | |
641 | + for(i=0;i<n;i++){ | |
642 | + f.push(hex2rgb(lista[i]," ")); | |
643 | + } | |
644 | + return f; | |
645 | +} | |
646 | +function loadCSS(file){ | |
647 | + var headID = document.getElementsByTagName("head")[0]; | |
648 | + var cssNode = document.createElement('link'); | |
649 | + cssNode.type = 'text/css'; | |
650 | + cssNode.rel = 'stylesheet'; | |
651 | + cssNode.href = file; | |
652 | + cssNode.media = 'screen'; | |
653 | + headID.appendChild(cssNode); | |
654 | +} | |
655 | + | |
656 | +function loadJS(file){ | |
657 | + var headID = document.getElementsByTagName("head")[0]; | |
658 | + var newScript = document.createElement('script'); | |
659 | + newScript.type = 'text/javascript'; | |
660 | + newScript.src = file; | |
661 | + headID.appendChild(newScript); | |
662 | +} | |
663 | + | |
664 | +function messageUser(msg){ | |
665 | + $("#message").html(msg).show('slow'); | |
666 | + setTimeout(function(){ jQuery("#message").hide('slow'); }, 2000); | |
667 | +} | |
668 | + | |
669 | +function parametroUrl(parametro){ | |
670 | + var params = window.location.search.replace("?","").split("&"), | |
671 | + n = params.length, | |
672 | + valor = "", | |
673 | + i,param; | |
674 | + for(i=0;i<n;i++){ | |
675 | + param = params[i].split("="); | |
676 | + if(param[0] == parametro){ | |
677 | + valor = param[1]; | |
678 | + } | |
679 | + } | |
680 | + return valor; | |
681 | +} | |
682 | +/** | |
683 | + * Start Plugin | |
684 | + */ | |
685 | +Saiku.events.bind('session:new', function(session) { | |
686 | + function new_workspace(args) { | |
687 | + // Add stats element | |
688 | + if (typeof args.workspace.i3GeoMap == "undefined") { | |
689 | + args.workspace.i3GeoMap = new i3GeoMap({ workspace: args.workspace }); | |
690 | + } | |
691 | + } | |
692 | + | |
693 | + function clear_workspace(args) { | |
694 | + if (typeof args.workspace.i3GeoMap != "undefined") { | |
695 | + $(args.workspace.i3GeoMap.nav).hide(); | |
696 | + $(args.workspace.i3GeoMap.el).parents().find('.workspace_results table').show(); | |
697 | + $(args.workspace.i3GeoMap.el).hide(); | |
698 | + } | |
699 | + } | |
700 | + | |
701 | + | |
702 | + // Attach stats to existing tabs | |
703 | + for(var i = 0; i < Saiku.tabs._tabs.length; i++) { | |
704 | + var tab = Saiku.tabs._tabs[i]; | |
705 | + new_workspace({ | |
706 | + workspace: tab.content | |
707 | + }); | |
708 | + }; | |
709 | + | |
710 | + // Attach stats to future tabs | |
711 | + Saiku.session.bind("workspace:new", new_workspace); | |
712 | + Saiku.session.bind("workspace:clear", clear_workspace); | |
713 | +}); | ... | ... |
ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/views/QueryToolbar.js
0 → 100755
... | ... | @@ -0,0 +1,228 @@ |
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 | + * The query toolbar, and associated actions | |
19 | + */ | |
20 | +var QueryToolbar = Backbone.View.extend({ | |
21 | + | |
22 | + | |
23 | + | |
24 | + events: { | |
25 | + 'click .options a.button': 'call', | |
26 | + 'click .renderer a.button' : 'switch_render_button' | |
27 | + }, | |
28 | + | |
29 | + chart: {}, | |
30 | + | |
31 | + render_mode: "table", | |
32 | + spark_mode: null, | |
33 | + | |
34 | + | |
35 | + initialize: function(args) { | |
36 | + // Keep track of parent workspace | |
37 | + this.workspace = args.workspace; | |
38 | + | |
39 | + // Maintain `this` in callbacks | |
40 | + _.bindAll(this, "call","activate_buttons", "spark_bar", "spark_line", "render_row_viz", "run_row_viz", "switch_render_button"); | |
41 | + | |
42 | + this.render_mode = "table"; | |
43 | + this.spark_mode = null; | |
44 | + | |
45 | + // Activate buttons when a new query is created or run | |
46 | + this.workspace.bind('query:new', this.activate_buttons); | |
47 | + this.workspace.bind('query:result', this.activate_buttons); | |
48 | + this.workspace.bind('table:rendered', this.run_row_viz); | |
49 | + | |
50 | + }, | |
51 | + | |
52 | + activate_buttons: function(args) { | |
53 | + if (typeof args != "undefined" && args != null ) { | |
54 | + $(this.el).find('a').removeClass('disabled_toolbar'); | |
55 | + if (!args.data) { | |
56 | + $(this.el).find('a.export_button, a.stats').addClass('disabled_toolbar'); | |
57 | + } | |
58 | + if (isIE) { | |
59 | + $(this.el).find('a.export_button').addClass('disabled_toolbar'); | |
60 | + } | |
61 | + } | |
62 | + | |
63 | + }, | |
64 | + | |
65 | + template: function() { | |
66 | + var template = $("#template-query-toolbar").html() || ""; | |
67 | + return _.template(template)(); | |
68 | + }, | |
69 | + | |
70 | + render: function() { | |
71 | + $(this.el).html(this.template()); | |
72 | + | |
73 | + $(this.el).find('render_table').addClass('on'); | |
74 | + $(this.el).find('ul.table').show(); | |
75 | + | |
76 | + return this; | |
77 | + }, | |
78 | + | |
79 | + switch_render_button: function(event) { | |
80 | + $target = $(event.target); | |
81 | + event.preventDefault(); | |
82 | + if ($(event.target).hasClass('disabled_toolbar')) { | |
83 | + return false; | |
84 | + } | |
85 | + //i3geomap | |
86 | + $(this.workspace.toolbar.el).find('.i3GeoMap').removeClass('on'); | |
87 | + $target.parent().siblings().find('.on').removeClass('on'); | |
88 | + if ($target.hasClass('render_chart')) { | |
89 | + this.switch_render('chart'); | |
90 | + this.workspace.query.setProperty('saiku.ui.render.mode', 'chart'); | |
91 | + var c = $(this.el).find('ul.chart li a.on:first').size() > 0 ? | |
92 | + $(this.el).find('ul.chart li a.on:first').attr('href').replace('#', '') | |
93 | + : null; | |
94 | + if (c != null) { | |
95 | + this.workspace.query.setProperty('saiku.ui.render.type', c); | |
96 | + } | |
97 | + } else { | |
98 | + this.switch_render('table'); | |
99 | + this.workspace.query.setProperty('saiku.ui.render.mode', 'table'); | |
100 | + this.workspace.query.setProperty('saiku.ui.render.type', this.spark_mode); | |
101 | + | |
102 | + } | |
103 | + | |
104 | + | |
105 | + }, | |
106 | + switch_render: function(render_type) { | |
107 | + render_type = (typeof render_type != "undefined" ? render_type.toLowerCase() : "table"); | |
108 | + $(this.el).find('ul.renderer a.on').removeClass('on'); | |
109 | + $(this.el).find('ul.renderer a.render_' + render_type).addClass('on'); | |
110 | + if ("chart" == render_type) { | |
111 | + $(this.el).find('ul.chart').show(); | |
112 | + $(this.el).find('ul.table').hide(); | |
113 | + this.render_mode = "chart"; | |
114 | + $(this.workspace.el).find('.workspace_results').children().hide(); | |
115 | + $(this.workspace.chart.el).children().hide(); | |
116 | + this.workspace.chart.show(); | |
117 | + } else { | |
118 | + $(this.el).find('ul.chart').hide(); | |
119 | + $(this.el).find('ul.table').show(); | |
120 | + $(this.el).find('ul.table .stats').removeClass('on'); | |
121 | + $(this.workspace.el).find('.workspace_results').children().hide(); | |
122 | + $(this.workspace.el).find('.workspace_results table').show(); | |
123 | + $(this.workspace.chart.el).hide().children().hide(); | |
124 | + this.render_mode = "table"; | |
125 | + var hasRun = this.workspace.query.result.hasRun(); | |
126 | + if (hasRun) { | |
127 | + this.workspace.table.render({ data: this.workspace.query.result.lastresult() }); | |
128 | + } | |
129 | + | |
130 | + } | |
131 | + return false; | |
132 | + }, | |
133 | + | |
134 | + call: function(event) { | |
135 | + event.preventDefault(); | |
136 | + $target = $(event.target).hasClass('button') ? $(event.target) : $(event.target).parent(); | |
137 | + if (! $target.hasClass('disabled_toolbar')) { | |
138 | + // Determine callback | |
139 | + var callback = $target.attr('href').replace('#', ''); | |
140 | + | |
141 | + // Attempt to call callback | |
142 | + if (this.render_mode == "table" && this[callback]) { | |
143 | + this[callback](event); | |
144 | + } else if (this.render_mode == "chart" && this.workspace.chart[callback]) { | |
145 | + this.workspace.chart.button(event); | |
146 | + this.workspace.chart[callback](event); | |
147 | + } | |
148 | + } | |
149 | + return false; | |
150 | + }, | |
151 | + | |
152 | + spark_bar: function() { | |
153 | + $(this.el).find('ul.table .spark_bar').toggleClass('on'); | |
154 | + $(this.el).find('ul.table .spark_line').removeClass('on'); | |
155 | + | |
156 | + $(this.workspace.table.el).find('td.spark').remove(); | |
157 | + if ($(this.el).find('ul.table .spark_bar').hasClass('on')) { | |
158 | + this.spark_mode = "spark_bar"; | |
159 | + this.workspace.query.setProperty('saiku.ui.render.type', 'spark_bar'); | |
160 | + _.delay(this.render_row_viz, 10, "spark_bar"); | |
161 | + } else { | |
162 | + this.spark_mode = null; | |
163 | + } | |
164 | + }, | |
165 | + | |
166 | + spark_line: function() { | |
167 | + $(this.el).find('ul.table .spark_line').toggleClass('on'); | |
168 | + $(this.el).find('ul.table .spark_bar').removeClass('on'); | |
169 | + | |
170 | + $(this.workspace.table.el).find('td.spark').remove(); | |
171 | + if ($(this.el).find('ul.table .spark_line').hasClass('on')) { | |
172 | + this.spark_mode = "spark_line"; | |
173 | + this.workspace.query.setProperty('saiku.ui.render.type', 'spark_line'); | |
174 | + _.delay(this.render_row_viz, 10, "spark_line"); | |
175 | + } else { | |
176 | + this.spark_mode = null; | |
177 | + } | |
178 | + }, | |
179 | + | |
180 | + run_row_viz: function(args) { | |
181 | + if (this.render_mode == "table" && this.spark_mode != null) { | |
182 | + this.render_row_viz(this.spark_mode); | |
183 | + } | |
184 | + | |
185 | + }, | |
186 | + | |
187 | + render_row_viz: function(type) { | |
188 | + $(this.workspace.table.el).find('tr').each(function(index, element) { | |
189 | + var rowData = []; | |
190 | + $(element).find('td.data div').each(function(i,data) { | |
191 | + var val = $(data).attr('alt'); | |
192 | + val = (typeof val != "undefined" && val != "" && val != null && val != "undefined") ? parseFloat(val) : 0; | |
193 | + rowData.push(val); | |
194 | + }); | |
195 | + | |
196 | + $("<td class='data spark'> <div id='chart" + index + "'></div></td>").appendTo($(element)); | |
197 | + | |
198 | + var width = rowData.length * 9; | |
199 | + | |
200 | + if (rowData.length > 0) { | |
201 | + var vis = new pv.Panel() | |
202 | + .canvas('chart' + index) | |
203 | + .height(12) | |
204 | + .width(width) | |
205 | + .margin(0); | |
206 | + | |
207 | + if (type == "spark_bar") { | |
208 | + vis.add(pv.Bar) | |
209 | + .data(rowData) | |
210 | + .left(pv.Scale.linear(0, rowData.length).range(0, width).by(pv.index)) | |
211 | + .height(pv.Scale.linear(0,_.max(rowData)).range(0, 12)) | |
212 | + .width(6) | |
213 | + .bottom(0); | |
214 | + } else if (type == "spark_line") { | |
215 | + width = width / 2; | |
216 | + vis.width(width); | |
217 | + vis.add(pv.Line) | |
218 | + .data(rowData) | |
219 | + .left(pv.Scale.linear(0, rowData.length - 1).range(0, width).by(pv.index)) | |
220 | + .bottom(pv.Scale.linear(rowData).range(0, 12)) | |
221 | + .strokeStyle("#000") | |
222 | + .lineWidth(1); | |
223 | + } | |
224 | + vis.render(); | |
225 | + } | |
226 | + }); | |
227 | + } | |
228 | +}); | ... | ... |
mashups/openlayers.js
1 | -$i = function(id) | |
2 | -{return document.getElementById(id);}; | |
3 | 1 | //seta as variáveis navn e navm |
4 | 2 | navn = false; |
5 | 3 | navm = false; |
4 | +$i = function(id) | |
5 | +{return document.getElementById(id);}; | |
6 | 6 | app = navigator.appName.substring(0,1); |
7 | 7 | if (app==='N'){navn=true;}else{navm=true;} |
8 | 8 | |
... | ... | @@ -47,7 +47,7 @@ i3GEO.editorOL = { |
47 | 47 | "Base cartográfica", |
48 | 48 | "http://mapas.mma.gov.br/cgi-bin/mapserv?map=/opt/www/html/webservices/baseraster.map&", |
49 | 49 | {layers:'baseraster',SRS:'EPSG:4618',FORMAT:'image/png'}, |
50 | - {singleTile:true} | |
50 | + {singleTile:false} | |
51 | 51 | ), |
52 | 52 | ol_wms: new OpenLayers.Layer.WMS.Untiled( |
53 | 53 | "OpenLayers WMS", |
... | ... | @@ -180,7 +180,7 @@ i3GEO.editorOL = { |
180 | 180 | try{ |
181 | 181 | eval("i3GEO.editorOL."+fundo[i]+".transitionEffect = 'resize';"); |
182 | 182 | eval("i3GEO.editorOL."+fundo[i]+".setVisibility(false);"); |
183 | - eval("i3GEO.editorOL."+fundo[i]+".singleTile = single;"); | |
183 | + eval("i3GEO.editorOL."+fundo[i]+".singleTile = false;"); | |
184 | 184 | eval("alayers.push(i3GEO.editorOL."+fundo[i]+");"); |
185 | 185 | } |
186 | 186 | catch(e){ |
... | ... | @@ -559,9 +559,11 @@ i3GEO.editorOL = { |
559 | 559 | ins = "",i; |
560 | 560 | for(i=0;i<nlayers;i++){ |
561 | 561 | try{ |
562 | - var url = layers[i].getFullRequestString({"request":"getlegendgraphic"}); | |
563 | - url = url.replace("LAYERS","LAYER"); | |
564 | - ins += "<img src='"+url+"' /><br>"; | |
562 | + if(layers[i].isBaseLayer === false){ | |
563 | + var url = layers[i].getFullRequestString({"request":"getlegendgraphic"}); | |
564 | + url = url.replace("LAYERS","LAYER"); | |
565 | + ins += layers[i].name+"<br><img src='"+url+"' /><br>"; | |
566 | + } | |
565 | 567 | } |
566 | 568 | catch(e){} |
567 | 569 | } | ... | ... |
mashups/openlayers.php
... | ... | @@ -222,7 +222,12 @@ if($temas != ""){ |
222 | 222 | if($l->status == MS_DEFAULT){ |
223 | 223 | $visivel = "true"; |
224 | 224 | } |
225 | - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "../ogc.php?tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})'; | |
225 | + if($tituloLayer != ""){ | |
226 | + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "../ogc.php?tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})'; | |
227 | + } | |
228 | + else{ | |
229 | + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "../ogc.php?tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{displayInLayerSwitcher:false,singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})'; | |
230 | + } | |
226 | 231 | } |
227 | 232 | } |
228 | 233 | //var_dump($objOpenLayers);exit; | ... | ... |
mashups/openlayers_compacto.js
... | ... | @@ -3062,7 +3062,7 @@ ol_mma: new OpenLayers.Layer.WMS( |
3062 | 3062 | "Base cartográfica", |
3063 | 3063 | "http://mapas.mma.gov.br/cgi-bin/mapserv?map=/opt/www/html/webservices/baseraster.map&", |
3064 | 3064 | {layers:'baseraster',SRS:'EPSG:4618',FORMAT:'image/png'}, |
3065 | -{singleTile:true} | |
3065 | +{singleTile:false} | |
3066 | 3066 | ), |
3067 | 3067 | ol_wms: new OpenLayers.Layer.WMS.Untiled( |
3068 | 3068 | "OpenLayers WMS", |
... | ... | @@ -3195,7 +3195,7 @@ if(fundo[i] != ""){ |
3195 | 3195 | try{ |
3196 | 3196 | eval("i3GEO.editorOL."+fundo[i]+".transitionEffect = 'resize';"); |
3197 | 3197 | eval("i3GEO.editorOL."+fundo[i]+".setVisibility(false);"); |
3198 | -eval("i3GEO.editorOL."+fundo[i]+".singleTile = single;"); | |
3198 | +eval("i3GEO.editorOL."+fundo[i]+".singleTile = false;"); | |
3199 | 3199 | eval("alayers.push(i3GEO.editorOL."+fundo[i]+");"); |
3200 | 3200 | } |
3201 | 3201 | catch(e){ |
... | ... | @@ -3571,9 +3571,11 @@ nlayers = layers.length, |
3571 | 3571 | ins = "",i; |
3572 | 3572 | for(i=0;i<nlayers;i++){ |
3573 | 3573 | try{ |
3574 | +if(layers[i].isBaseLayer === false){ | |
3574 | 3575 | var url = layers[i].getFullRequestString({"request":"getlegendgraphic"}); |
3575 | 3576 | url = url.replace("LAYERS","LAYER"); |
3576 | -ins += "<img src='"+url+"' /><br>"; | |
3577 | +ins += layers[i].name+"<br><img src='"+url+"' /><br>"; | |
3578 | +} | |
3577 | 3579 | } |
3578 | 3580 | catch(e){} |
3579 | 3581 | } | ... | ... |
mashups/openlayers_compacto.js.php
... | ... | @@ -3062,7 +3062,7 @@ ol_mma: new OpenLayers.Layer.WMS( |
3062 | 3062 | "Base cartográfica", |
3063 | 3063 | "http://mapas.mma.gov.br/cgi-bin/mapserv?map=/opt/www/html/webservices/baseraster.map&", |
3064 | 3064 | {layers:'baseraster',SRS:'EPSG:4618',FORMAT:'image/png'}, |
3065 | -{singleTile:true} | |
3065 | +{singleTile:false} | |
3066 | 3066 | ), |
3067 | 3067 | ol_wms: new OpenLayers.Layer.WMS.Untiled( |
3068 | 3068 | "OpenLayers WMS", |
... | ... | @@ -3195,7 +3195,7 @@ if(fundo[i] != ""){ |
3195 | 3195 | try{ |
3196 | 3196 | eval("i3GEO.editorOL."+fundo[i]+".transitionEffect = 'resize';"); |
3197 | 3197 | eval("i3GEO.editorOL."+fundo[i]+".setVisibility(false);"); |
3198 | -eval("i3GEO.editorOL."+fundo[i]+".singleTile = single;"); | |
3198 | +eval("i3GEO.editorOL."+fundo[i]+".singleTile = false;"); | |
3199 | 3199 | eval("alayers.push(i3GEO.editorOL."+fundo[i]+");"); |
3200 | 3200 | } |
3201 | 3201 | catch(e){ |
... | ... | @@ -3571,9 +3571,11 @@ nlayers = layers.length, |
3571 | 3571 | ins = "",i; |
3572 | 3572 | for(i=0;i<nlayers;i++){ |
3573 | 3573 | try{ |
3574 | +if(layers[i].isBaseLayer === false){ | |
3574 | 3575 | var url = layers[i].getFullRequestString({"request":"getlegendgraphic"}); |
3575 | 3576 | url = url.replace("LAYERS","LAYER"); |
3576 | -ins += "<img src='"+url+"' /><br>"; | |
3577 | +ins += layers[i].name+"<br><img src='"+url+"' /><br>"; | |
3578 | +} | |
3577 | 3579 | } |
3578 | 3580 | catch(e){} |
3579 | 3581 | } | ... | ... |