=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2011-11-10 20:57:29 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2011-11-15 19:22:58 +0000 @@ -118,6 +118,8 @@ private transient boolean currentParent; private transient String type; + + private transient String[] groupNames; /** * Set of the dynamic attributes values that belong to this @@ -753,4 +755,14 @@ { this.attributeValues = attributeValues; } + + public String[] getGroupNames() + { + return groupNames; + } + + public void setGroupNames( String[] groupNames ) + { + this.groupNames = groupNames; + } } === added file 'dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetGeoJsonFacilitiesAction.java' --- dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetGeoJsonFacilitiesAction.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetGeoJsonFacilitiesAction.java 2011-11-15 19:22:58 +0000 @@ -0,0 +1,147 @@ +package org.hisp.dhis.mapping.action; + +/* + * Copyright (c) 2004-2010, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.ArrayList; +import java.util.Collection; + +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; +import org.hisp.dhis.organisationunit.OrganisationUnitService; +import org.hisp.dhis.system.filter.OrganisationUnitWithCoordinatesFilter; +import org.hisp.dhis.system.filter.OrganisationUnitWithValidPointCoordinateFilter; +import org.hisp.dhis.system.util.FilterUtils; + +import com.opensymphony.xwork2.Action; + +/** + * @author Jan Henrik Overland + * @version $Id$ + */ +public class GetGeoJsonFacilitiesAction + implements Action +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private OrganisationUnitService organisationUnitService; + + public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) + { + this.organisationUnitService = organisationUnitService; + } + + private OrganisationUnitGroupService organisationUnitGroupService; + + public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) + { + this.organisationUnitGroupService = organisationUnitGroupService; + } + + // ------------------------------------------------------------------------- + // Input + // ------------------------------------------------------------------------- + + private Integer parentId; + + public void setParentId( Integer id ) + { + this.parentId = id; + } + + private Integer level; + + public void setLevel( Integer level ) + { + this.level = level; + } + + // ------------------------------------------------------------------------- + // Output + // ------------------------------------------------------------------------- + + private Collection object; + + public Collection getObject() + { + return object; + } + + private Collection groupSets; + + public Collection getGroupSets() + { + return groupSets; + } + + // ------------------------------------------------------------------------- + // Action implementation + // ------------------------------------------------------------------------- + + public String execute() + throws Exception + { + OrganisationUnit parent = organisationUnitService.getOrganisationUnit( parentId ); + + level = level == null ? organisationUnitService.getLevelOfOrganisationUnit( parent ) : level; + + Collection organisationUnits = organisationUnitService.getOrganisationUnitsAtLevel( level, + parent ); + + FilterUtils.filter( organisationUnits, new OrganisationUnitWithCoordinatesFilter() ); + + FilterUtils.filter( organisationUnits, new OrganisationUnitWithValidPointCoordinateFilter() ); + + groupSets = organisationUnitGroupService.getAllOrganisationUnitGroupSets(); + + object = new ArrayList(); + + for ( OrganisationUnit unit : organisationUnits ) + { + if ( unit.getFeatureType().equals( OrganisationUnit.FEATURETYPE_POINT ) ) + { + int i = 0; + + String[] groupNames = new String[groupSets.size()]; + + for ( OrganisationUnitGroupSet groupSet : groupSets ) + { + groupNames[ i++ ] = unit.getGroupNameInGroupSet( groupSet ); + } + + unit.setGroupNames( groupNames ); + + object.add( unit ); + } + } + + return SUCCESS; + } +} === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-mapping/src/main/resources/META-INF/dhis/beans.xml 2011-11-12 12:54:31 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/resources/META-INF/dhis/beans.xml 2011-11-15 19:22:58 +0000 @@ -306,6 +306,15 @@ ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" /> + + + + + === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/resources/struts.xml' --- dhis-2/dhis-web/dhis-web-mapping/src/main/resources/struts.xml 2011-11-12 12:54:31 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/resources/struts.xml 2011-11-15 19:22:58 +0000 @@ -331,6 +331,11 @@ /dhis-web-mapping/geojson.vm + + /dhis-web-mapping/geojsonFacilities.vm + + === added file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/geojsonFacilities.vm' --- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/geojsonFacilities.vm 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/geojsonFacilities.vm 2011-11-15 19:22:58 +0000 @@ -0,0 +1,1 @@ +#set($size=$object.size()){"type":"FeatureCollection","features":[#foreach($unit in $object){"geometry":{"type":"Point","coordinates":$!encoder.jsonEncode($!{unit.validCoordinates})},"properties":{"id":"$!{unit.id}","name":"$!encoder.jsonEncode(${unit.name})"#foreach($set in $groupSets)#set($n=$velocityCount - 1),"$!encoder.jsonEncode(${set.getName()})":"$!encoder.jsonEncode(${unit.groupNames[$n]})"#end}}#if($velocityCount<$size),#end#end],"crs":{"type":"EPSG","properties":{"code":"4326"}}} \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/index.html' --- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/index.html 2011-10-26 08:39:56 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/index.html 2011-11-15 19:22:58 +0000 @@ -86,8 +86,10 @@ + === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/index.js' --- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/index.js 2011-10-26 07:27:42 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/index.js 2011-11-15 19:22:58 +0000 @@ -253,7 +253,6 @@ listeners: { 'load': function(s) { this.isLoaded = true; - this.filter('name', 'Type'); } } }); === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/resources/mapfish/widgets/geostat/Symbol.js' --- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/resources/mapfish/widgets/geostat/Symbol.js 2011-08-31 09:58:04 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/resources/mapfish/widgets/geostat/Symbol.js 2011-11-15 19:22:58 +0000 @@ -334,7 +334,7 @@ 'select': { scope: this, fn: function(cb) { - if (cb.currentValue != cb.getValue() && cb.getRawValue() == 'Type') { + if (cb.currentValue != cb.getValue()) { cb.currentValue = cb.getValue(); G.stores.groupsByGroupSet.setBaseParam('id', cb.getValue()); G.stores.groupsByGroupSet.load({scope: this, callback: function() { @@ -352,11 +352,6 @@ this.classify(false, true); }}); } - else if (cb.getRawValue() != 'Type') { - cb.currentValue = cb.getValue(); - this.cmp.group.removeAll(); - this.cmp.group.doLayout(); - } } } } @@ -480,7 +475,7 @@ width: 270, bodyStyle: 'padding:0 0 0 8px;', items: [ - { html: '
' + G.i18n.organisation_unit_level + ' (facility)
' }, + { html: '
Facility level
' }, { xtype: 'panel', layout: 'form', @@ -503,7 +498,7 @@ var onHoverSelect = function onHoverSelect(feature) { if (feature.attributes.name) { - document.getElementById('featuredatatext').innerHTML = '
' + feature.attributes.name + '
' + feature.attributes.type + '
'; + document.getElementById('featuredatatext').innerHTML = '
' + feature.attributes.name + '
' + feature.attributes[scope.cmp.groupSet.getRawValue()] + '
'; } else { document.getElementById('featuredatatext').innerHTML = ''; @@ -790,7 +785,7 @@ G.vars.activeWidget = this; this.updateValues = true; - this.setUrl(G.conf.path_mapping + 'getGeoJson.action?' + + this.setUrl(G.conf.path_mapping + 'getGeoJsonFacilities.action?' + 'parentId=' + this.organisationUnitSelection.parent.id + '&level=' + this.organisationUnitSelection.level.level ); @@ -811,7 +806,7 @@ }, applyValues: function() { - var options = {indicator: this.cmp.groupSet.getRawValue().toLowerCase()}; + var options = {indicator: this.cmp.groupSet.getRawValue()}; G.vars.activeWidget = this; this.coreComp.updateOptions(options);