=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/export/SVGDocument.java' --- dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/export/SVGDocument.java 2011-01-10 14:35:40 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/export/SVGDocument.java 2011-02-01 13:27:46 +0000 @@ -82,7 +82,7 @@ String title_ = "" + StringEscapeUtils.escapeXml( this.title ) + ""; - if ( this.layer != 3 ) // Polygon or point layer + if ( this.layer == 1 || this.layer == 2 ) // Polygon or point layer { String indicator_ = "" + StringEscapeUtils.escapeXml( this.indicator ) + ""; @@ -132,6 +132,11 @@ svg_ = svg_.replaceFirst( "", this.getLegendScript2( 30, (145 + 15 * this.imageLegendRows) ) + "" ); } } + + else + { + svg_ = svg_.replaceFirst( "", title_ + "" ); + } return new StringBuffer( svg_ ); } === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/global.js' --- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/global.js 2011-02-01 12:05:49 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/global.js 2011-02-01 13:27:46 +0000 @@ -330,10 +330,48 @@ } } return layers; + }, + + getLayersByType: function(type) { + var layers = []; + for (var i = 0; i < G.vars.map.layers.length; i++) { + if (G.vars.map.layers[i].layerType == type) { + layers.push(G.vars.map.layers[i]); + } + } + return layers; + }, + + getVisibleLayers: function(layers) { + var vLayers = []; + for (var i = 0; i < layers.length; i++) { + if (layers[i].visibility) { + vLayers.push(layers[i]); + } + } + return vLayers; + }, + + mergeSvg: function(str, ext) { + if (ext.length) { + str = str || ''; + for (var i = 0; i < ext.length; i++) { + str = str.replace(''); + ext[i] = ext[i].substring(ext[i].indexOf('>')+1); + str += ext[i]; + } + } + return str; + }, + + getOverlaysSvg: function(overlays) { + if (overlays.length) { + for (var i = 0; i < overlays.length; i++) { + overlays[i] = document.getElementById(overlays[i].svgId).parentNode.innerHTML; + } + } + return overlays; } - - //extendSvg: function(src, ext) { - }; G.vars = { === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/index.js' --- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/index.js 2011-02-01 12:05:49 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/index.js 2011-02-01 13:27:46 +0000 @@ -615,7 +615,7 @@ layout: 'fit', closeAction: 'hide', width: G.conf.window_width, - height: 220, + height: 194, items: [ { xtype: 'form', @@ -692,7 +692,7 @@ iconCls: 'icon-export', text: G.i18n.export_, handler: function() { - var values, svgElement, svg; + var values, svg; if (polygonLayer.visibility && pointLayer.visibility) { if (choropleth.formValidation.validateForm()) { @@ -710,12 +710,9 @@ document.getElementById('indicatorField2').value = values.mapValueTypeValue; document.getElementById('legendsField2').value = G.util.getLegendsJSON.call(symbol); - svgElement = document.getElementById(polygonLayer.svgId); - var str1 = svgElement.parentNode.innerHTML; - str1 = svgElement.parentNode.innerHTML.replace(''); + var str1 = document.getElementById(polygonLayer.svgId).parentNode.innerHTML; var str2 = document.getElementById(pointLayer.svgId).parentNode.innerHTML; - str2 = str2.substring(str2.indexOf('>')+1); - svg = str1 + str2; + svg = G.util.mergeSvg(str1, [str2]); } else { Ext.message.msg(false, 'Point layer not rendered'); @@ -734,8 +731,7 @@ document.getElementById('periodField').value = values.dateValue; document.getElementById('indicatorField').value = values.mapValueTypeValue; document.getElementById('legendsField').value = G.util.getLegendsJSON.call(choropleth); - svgElement = document.getElementById(polygonLayer.svgId); - svg = svgElement.parentNode.innerHTML; + svg = document.getElementById(polygonLayer.svgId).parentNode.innerHTML; } else { Ext.message.msg(false, 'Polygon layer not rendered'); @@ -749,17 +745,27 @@ document.getElementById('periodField').value = values.dateValue; document.getElementById('indicatorField').value = values.mapValueTypeValue; document.getElementById('legendsField').value = G.util.getLegendsJSON.call(symbol); - svgElement = document.getElementById(pointLayer.svgId); - svg = svgElement.parentNode.innerHTML; + svg = document.getElementById(pointLayer.svgId).parentNode.innerHTML; } else { Ext.message.msg(false, 'Point layer not rendered'); return; } } - + else { + document.getElementById('layerField').value = 0; + } + + var overlays = G.util.getVisibleLayers(G.util.getLayersByType(G.conf.map_layer_type_overlay)); + svg = G.util.mergeSvg(svg, G.util.getOverlaysSvg(overlays)); + + if (!svg) { + Ext.message.msg(false, 'No layers to export'); + return; + } + var title = Ext.getCmp('exportimagetitle_tf').getValue(); - + if (!title) { Ext.message.msg(false, G.i18n.form_is_not_complete); } @@ -768,7 +774,6 @@ exportForm.action = '../exportImage.action'; document.getElementById('titleField').value = title; - document.getElementById('viewBoxField').value = svgElement.getAttribute('viewBox'); document.getElementById('svgField').value = svg; document.getElementById('widthField').value = Ext.getCmp('exportimagewidth_cb').getValue(); document.getElementById('heightField').value = Ext.getCmp('exportimageheight_cb').getValue(); @@ -2457,7 +2462,7 @@ for (var i = 0, j = 2; i < G.vars.map.layers.length; i++) { if (G.vars.map.layers[i].layerType == G.conf.map_layer_type_overlay) { - G.vars.map.layers[i].svgId = svg[j++]; + G.vars.map.layers[i].svgId = svg[j++].id; } }