← Back to team overview

dhis2-devs team mailing list archive

Re: [Branch ~dhis2-devs-core/dhis2/trunk] Rev 1909: (GIS) WMS layer management implemented.

 

To test the new functionality, use e.g.:

Name: Whatever1
URL: http://labs.metacarta.com/wms/vmap0
Layer: basic

and

Name: Whatever2
URL: http://iridl.ldeo.columbia.edu/cgi-bin/wms/wms.pl?VERSION=1.1.1

Layer: Health Regional Africa Meningitis Meningitis Observed




On Wed, May 26, 2010 at 7:52 PM, <noreply@xxxxxxxxxxxxx> wrote:

> Merge authors:
>  Jan Henrik Øverland (janhenrik-overland)
> ------------------------------------------------------------
> revno: 1909 [merge]
> committer: Jan Henrik Overland <janhenrik.overland@xxxxxxxxx>
> branch nick: trunk
> timestamp: Wed 2010-05-26 19:51:34 +0200
> message:
>  (GIS) WMS layer management implemented.
> added:
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetMapLayersByTypeAction.java
> modified:
>  dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MapLayer.java
>  dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MappingService.java
>  dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MappingStore.java
>
>  dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java
>
>  dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/hibernate/HibernateMappingStore.java
>
>  dhis-2/dhis-services/dhis-service-mapping/src/main/resources/org/hisp/dhis/mapping/hibernate/MapLayer.hbm.xml
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/AddOrUpdateMapLayerAction.java
>
>  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/org/hisp/dhis/mapping/i18n_module.properties
>  dhis-2/dhis-web/dhis-web-mapping/src/main/resources/struts.xml
>  dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/i18n.vm
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/jsonMapLayers.vm
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/config.js
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/index.js
>
>
> --
> lp:dhis2
> https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk<https://code.launchpad.net/%7Edhis2-devs-core/dhis2/trunk>
>
> Your team DHIS 2 developers is subscribed to branch lp:dhis2.
> To unsubscribe from this branch go to
> https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription<https://code.launchpad.net/%7Edhis2-devs-core/dhis2/trunk/+edit-subscription>
>
> === modified file
> 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MapLayer.java'
> --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MapLayer.java
> 2010-04-12 21:23:33 +0000
> +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MapLayer.java
> 2010-05-25 16:45:28 +0000
> @@ -42,6 +42,8 @@
>     private String mapSourceType;
>
>     private String mapSource;
> +
> +    private String layer;
>
>     private String fillColor;
>
> @@ -55,13 +57,14 @@
>     {
>     }
>
> -    public MapLayer( String name, String type, String mapSourceType,
> String mapSource, String fillColor,
> +    public MapLayer( String name, String type, String mapSourceType,
> String mapSource, String layer, String fillColor,
>         double fillOpacity, String strokeColor, int strokeWidth )
>     {
>         this.name = name;
>         this.type = type;
>         this.mapSourceType = mapSourceType;
>         this.mapSource = mapSource;
> +        this.layer = layer;
>         this.fillColor = fillColor;
>         this.fillOpacity = fillOpacity;
>         this.strokeColor = strokeColor;
> @@ -155,6 +158,16 @@
>         this.mapSource = mapSource;
>     }
>
> +    public String getLayer()
> +    {
> +        return layer;
> +    }
> +
> +    public void setLayer( String layer )
> +    {
> +        this.layer = layer;
> +    }
> +
>     public String getFillColor()
>     {
>         return fillColor;
>
> === modified file
> 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MappingService.java'
> --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MappingService.java
>     2010-05-11 15:21:26 +0000
> +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MappingService.java
>     2010-05-25 16:45:28 +0000
> @@ -394,7 +394,7 @@
>
>     void updateMapLayer( MapLayer mapLayer );
>
> -    void addOrUpdateMapLayer( String name, String type, String mapSource,
> String fillColor, double fillOpacity,
> +    void addOrUpdateMapLayer( String name, String type, String mapSource,
> String layer, String fillColor, double fillOpacity,
>         String strokeColor, int strokeWidth );
>
>     void deleteMapLayer( MapLayer mapLayer );
> @@ -402,6 +402,8 @@
>     MapLayer getMapLayer( int id );
>
>     MapLayer getMapLayerByName( String name );
> +
> +    Collection<MapLayer> getMapLayersByType( String type );
>
>     Collection<MapLayer> getMapLayersByMapSourceType();
>
>
> === modified file
> 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MappingStore.java'
> --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MappingStore.java
>     2010-04-12 21:23:33 +0000
> +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/mapping/MappingStore.java
>     2010-05-25 16:45:28 +0000
> @@ -226,7 +226,7 @@
>     MapLegendSet getMapLegendSet( int id );
>
>     MapLegendSet getMapLegendSetByName( String name );
> -
> +
>     Collection<MapLegendSet> getMapLegendSetsByType( String type );
>
>     Collection<MapLegendSet> getAllMapLegendSets();
> @@ -263,6 +263,8 @@
>
>     MapLayer getMapLayerByName( String name );
>
> +    Collection<MapLayer> getMapLayersByType( String type );
> +
>     Collection<MapLayer> getMapLayersByMapSourceType( String mapSourceType
> );
>
>     MapLayer getMapLayerByMapSource( String mapSource );
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java'
> ---
> dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java
>    2010-05-11 15:21:26 +0000
> +++
> dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java
>    2010-05-25 16:45:28 +0000
> @@ -818,7 +818,7 @@
>         mappingStore.updateMapLayer( mapLayer );
>     }
>
> -    public void addOrUpdateMapLayer( String name, String type, String
> mapSource, String fillColor, double fillOpacity,
> +    public void addOrUpdateMapLayer( String name, String type, String
> mapSource, String layer, String fillColor, double fillOpacity,
>         String strokeColor, int strokeWidth )
>     {
>         MapLayer mapLayer = mappingStore.getMapLayerByName( name );
> @@ -832,6 +832,7 @@
>             mapLayer.setType( type );
>             mapLayer.setMapSourceType( mapSourceType );
>             mapLayer.setMapSource( mapSource );
> +            mapLayer.setLayer( layer );
>             mapLayer.setFillColor( fillColor );
>             mapLayer.setFillOpacity( fillOpacity );
>             mapLayer.setStrokeColor( strokeColor );
> @@ -841,7 +842,7 @@
>         }
>         else
>         {
> -            addMapLayer( new MapLayer( name, type, mapSourceType,
> mapSource, fillColor, fillOpacity, strokeColor,
> +            addMapLayer( new MapLayer( name, type, mapSourceType,
> mapSource, layer, fillColor, fillOpacity, strokeColor,
>                 strokeWidth ) );
>         }
>     }
> @@ -860,6 +861,11 @@
>     {
>         return mappingStore.getMapLayerByName( name );
>     }
> +
> +    public Collection<MapLayer> getMapLayersByType( String type )
> +    {
> +        return mappingStore.getMapLayersByType( type );
> +    }
>
>     public Collection<MapLayer> getMapLayersByMapSourceType()
>     {
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/hibernate/HibernateMappingStore.java'
> ---
> dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/hibernate/HibernateMappingStore.java
>  2010-05-18 19:22:26 +0000
> +++
> dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/hibernate/HibernateMappingStore.java
>  2010-05-25 16:45:28 +0000
> @@ -458,6 +458,18 @@
>
>         return (MapLayer) criteria.uniqueResult();
>     }
> +
> +    @SuppressWarnings( "unchecked" )
> +    public Collection<MapLayer> getMapLayersByType( String type )
> +    {
> +        Session session = sessionFactory.getCurrentSession();
> +
> +        Criteria criteria = session.createCriteria( MapLayer.class );
> +
> +        criteria.add( Restrictions.eq( "type", type ) );
> +
> +        return criteria.list();
> +    }
>
>     @SuppressWarnings( "unchecked" )
>     public Collection<MapLayer> getMapLayersByMapSourceType( String
> mapSourceType )
>
> === modified file
> 'dhis-2/dhis-services/dhis-service-mapping/src/main/resources/org/hisp/dhis/mapping/hibernate/MapLayer.hbm.xml'
> ---
> dhis-2/dhis-services/dhis-service-mapping/src/main/resources/org/hisp/dhis/mapping/hibernate/MapLayer.hbm.xml
>       2009-09-29 16:17:58 +0000
> +++
> dhis-2/dhis-services/dhis-service-mapping/src/main/resources/org/hisp/dhis/mapping/hibernate/MapLayer.hbm.xml
>       2010-05-25 16:45:28 +0000
> @@ -19,6 +19,8 @@
>
>                <property name="mapSource" column="mapsource"
> unique="true"/>
>
> +               <property name="layer" column="layer"/>
> +
>                <property name="fillColor" column="fillcolor"/>
>
>                <property name="fillOpacity" column="fillopacity"/>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/AddOrUpdateMapLayerAction.java'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/AddOrUpdateMapLayerAction.java
>  2010-04-12 21:23:33 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/AddOrUpdateMapLayerAction.java
>  2010-05-25 16:45:28 +0000
> @@ -74,6 +74,13 @@
>         this.mapSource = mapSource;
>     }
>
> +    private String layer;
> +
> +    public void setLayer( String layer )
> +    {
> +        this.layer = layer;
> +    }
> +
>     private String fillColor;
>
>     public void setFillColor( String fillColor )
> @@ -108,7 +115,7 @@
>
>     public String execute()
>     {
> -        mappingService.addOrUpdateMapLayer( name, type, mapSource,
> fillColor, fillOpacity, strokeColor, strokeWidth );
> +        mappingService.addOrUpdateMapLayer( name, type, mapSource, layer,
> fillColor, fillOpacity, strokeColor, strokeWidth );
>
>         return SUCCESS;
>     }
>
> === added file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetMapLayersByTypeAction.java'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetMapLayersByTypeAction.java
>   1970-01-01 00:00:00 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetMapLayersByTypeAction.java
>   2010-05-25 16:45:28 +0000
> @@ -0,0 +1,92 @@
> +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.Collections;
> +import java.util.List;
> +
> +import org.hisp.dhis.mapping.MapLayer;
> +import org.hisp.dhis.mapping.MappingService;
> +import org.hisp.dhis.mapping.comparator.MapLayerNameComparator;
> +
> +import com.opensymphony.xwork2.Action;
> +
> +/**
> + * @author Jan Henrik Overland
> + * @version $Id$
> + */
> +public class GetMapLayersByTypeAction
> +    implements Action
> +{
> +    //
> -------------------------------------------------------------------------
> +    // Dependencies
> +    //
> -------------------------------------------------------------------------
> +
> +    private MappingService mappingService;
> +
> +    public void setMappingService( MappingService mappingService )
> +    {
> +        this.mappingService = mappingService;
> +    }
> +
> +    //
> -------------------------------------------------------------------------
> +    // Input
> +    //
> -------------------------------------------------------------------------
> +
> +    private String type;
> +
> +    public void setType( String type )
> +    {
> +        this.type = type;
> +    }
> +
> +    //
> -------------------------------------------------------------------------
> +    // Output
> +    //
> -------------------------------------------------------------------------
> +
> +    private List<MapLayer> object;
> +
> +    public List<MapLayer> getObject()
> +    {
> +        return object;
> +    }
> +
> +    //
> -------------------------------------------------------------------------
> +    // Action implementation
> +    //
> -------------------------------------------------------------------------
> +
> +    public String execute()
> +    {
> +        object = new ArrayList<MapLayer>(
> mappingService.getMapLayersByType( type ) );
> +
> +        Collections.sort( object, new MapLayerNameComparator() );
> +
> +        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
> 2010-05-17 21:05:26 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/resources/META-INF/dhis/beans.xml
> 2010-05-25 16:45:28 +0000
> @@ -255,6 +255,11 @@
>                <property name="mappingService"
> ref="org.hisp.dhis.mapping.MappingService" />
>        </bean>
>
> +    <bean id="org.hisp.dhis.mapping.action.GetMapLayersByTypeAction"
> +        class="org.hisp.dhis.mapping.action.GetMapLayersByTypeAction"
> scope="prototype">
> +        <property name="mappingService"
> ref="org.hisp.dhis.mapping.MappingService" />
> +    </bean>
> +
>        <!-- Indicator -->
>
>        <bean id="org.hisp.dhis.mapping.action.GetAllIndicatorGroupsAction"
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/resources/org/hisp/dhis/mapping/i18n_module.properties'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/resources/org/hisp/dhis/mapping/i18n_module.properties
>    2010-05-21 14:09:39 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/resources/org/hisp/dhis/mapping/i18n_module.properties
>    2010-05-26 17:48:44 +0000
> @@ -32,7 +32,7 @@
>  ajax_request_failed                                    = Ajax request
> failed
>  error                                                          = Error
>  component_init_not_complete                    = Component init not
> complete
> -form_is_not_complete                           = Form is not complete.
> +form_is_not_complete                           = Form is not complete
>  filter                                                         = Filter
>  assign_all                                                     = Assign
> all
>  auto_assign                                                    =
> Auto-assign
> @@ -45,7 +45,7 @@
>  error_while_deleting_relation_map_and_oranisation_unit = Error while
> deleting relation between map and oranisation unit
>  remove_selected                                                = Remove
> selected
>  remove_relation                                                = Remove
> relation
> -please_select_least_one_organisation_unit_in_the_list = Please select at
> least one organisation unit in the list.
> +please_select_least_one_organisation_unit_in_the_list = Please select at
> least one organisation unit in the list
>  assign                                                         = Assign
>  organisation_units                                     = Organisation
> Units
>  assigned_to                                                    = Assigned
> to
> @@ -60,7 +60,7 @@
>  assigned                                                       = assigned
>  no                                                                     =
> no
>  creating_map                                           = Creating map...
> -selected_period_level_no_data          = The selected indicator, period
> and level returned no data.
> +selected_period_level_no_data          = The selected indicator, period
> and level returned no data
>  creating_choropleth                                    = Creating
> choropleth..
>  assign_organisation_unit                       = Assign organisation unit
>  no_feature_selected                                    = No feature
> selected
> @@ -117,7 +117,7 @@
>  name_column                                                    = Name
> column
>  organisation_unit_level                                = Organisation unit
> level
>  map_source_file                                                = Map
> source file
> -please_enter_map_title                         = Please enter the map
> title.
> +please_enter_map_title                         = Please enter the map
> title
>  please_render_map_fist                         = Please render the
> thematic map first
>  include_legend                                         = Include legend
>  include_values                                         = Include values
> @@ -138,7 +138,7 @@
>  was_deleted                                                    = was
> deleted
>  new_map_view                                           = New map view
>  there_is_already_a_map_view_called     = There is already a map view
> called
> -map_view_name_cannot_be_longer_than_25_characters = Map view name cannot
> be longer than 25 characters.
> +map_view_name_cannot_be_longer_than_25_characters = Map view name cannot
> contain more than 25 characters
>  thematic_map_form_is_not_complete      = Thematic map form is not complete
>  map_view_form_is_not_complete          = Map view form is not complete.
>  save                                                           = Save
> @@ -172,4 +172,13 @@
>  the_source_file                                                = The
> source file
>  assign_to_indicators                           = Assign to indicators
>  selected_relations_removed                     = Selected relations
> removed
> -the_source_file                                                = The
> source file
> \ No newline at end of file
> +the_source_file                                                = The
> source file
> +delete_baselayer                                       = Delete base layer
> +please_select_a_baselayer                      = Please select a base
> layer
> +baselayer                                                      = Base
> layer
> +baselayers                                                     = Base
> layers
> +url                                                                    =
> URL
> +layer                                                          = Layer
> +new_baselayer                                          = New base layer
> +baselayer_form_is_not_complete         = Base layer form is not complete
> +baselayer_name_cannot_be_longer_than_25_characters = Base layer name
> cannot contain more than 25 characters
>
> === 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
>  2010-05-11 15:24:04 +0000
> +++ dhis-2/dhis-web/dhis-web-mapping/src/main/resources/struts.xml
>  2010-05-25 16:45:28 +0000
> @@ -285,6 +285,12 @@
>                                /dhis-web-mapping/jsonMapLayers.vm</result>
>                </action>
>
> +        <action name="getMapLayersByType"
> +            class="org.hisp.dhis.mapping.action.GetMapLayersByTypeAction">
> +            <result name="success" type="velocity-json">
> +                /dhis-web-mapping/jsonMapLayers.vm</result>
> +        </action>
> +
>                <!-- Indicator -->
>
>                <action name="getAllIndicatorGroups"
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/i18n.vm'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/i18n.vm
> 2010-05-12 18:58:00 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/i18n.vm
> 2010-05-26 17:48:44 +0000
> @@ -170,4 +170,13 @@
>  var i18n_there_is_already_a_map_called =
> '$encoder.jsEscape($i18n.getString( 'there_is_already_a_map_called' ) ,
> "'")';
>  var i18n_assign_to_indicators = '$encoder.jsEscape($i18n.getString(
> 'assign_to_indicators' ) , "'")';
>  var i18n_selected_relations_removed = '$encoder.jsEscape($i18n.getString(
> 'selected_relations_removed' ) , "'")';
> -var i18n_the_source_file = '$encoder.jsEscape($i18n.getString(
> 'the_source_file' ) , "'")';
> \ No newline at end of file
> +var i18n_the_source_file = '$encoder.jsEscape($i18n.getString(
> 'the_source_file' ) , "'")';
> +var i18n_delete_baselayer = '$encoder.jsEscape($i18n.getString(
> 'delete_baselayer' ) , "'")';
> +var i18n_please_select_a_baselayer = '$encoder.jsEscape($i18n.getString(
> 'please_select_a_baselayer' ) , "'")';
> +var i18n_baselayer = '$encoder.jsEscape($i18n.getString( 'baselayer' ) ,
> "'")';
> +var i18n_baselayers = '$encoder.jsEscape($i18n.getString( 'baselayers' ) ,
> "'")';
> +var i18n_url = '$encoder.jsEscape($i18n.getString( 'url' ) , "'")';
> +var i18n_layer = '$encoder.jsEscape($i18n.getString( 'layer' ) , "'")';
> +var i18n_new_baselayer = '$encoder.jsEscape($i18n.getString(
> 'new_baselayer' ) , "'")';
> +var i18n_baselayer_form_is_not_complete =
> '$encoder.jsEscape($i18n.getString( 'baselayer_form_is_not_complete' ) ,
> "'")';
> +var i18n_baselayer_name_cannot_be_longer_than_25_characters =
> '$encoder.jsEscape($i18n.getString(
> 'baselayer_name_cannot_be_longer_than_25_characters' ) , "'")';
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/jsonMapLayers.vm'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/jsonMapLayers.vm
>  2009-08-26 01:56:03 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/jsonMapLayers.vm
>  2010-05-25 16:45:28 +0000
> @@ -6,6 +6,7 @@
>     "name": "$!encoder.jsEncode( ${mapLayer.name} )",
>     "type": "$!encoder.jsEncode( ${mapLayer.type} )",
>     "mapSource": "$!encoder.jsEncode( ${mapLayer.mapSource} )",
> +    "layer": "$!encoder.jsEncode( ${mapLayer.layer} )",
>     "fillColor": "$!encoder.jsEncode( ${mapLayer.fillColor} )",
>     "fillOpacity": "$!{mapLayer.fillOpacity}",
>     "strokeColor": "$!encoder.jsEncode( ${mapLayer.strokeColor} )",
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/config.js'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/config.js
>  2010-04-28 11:32:52 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/config.js
>  2010-05-25 16:45:28 +0000
> @@ -57,4 +57,6 @@
>        map_source_type_geojson = 'geojson';
>        map_source_type_shapefile = 'shapefile';
>        map_legend_type_automatic = 'automatic';
> -       map_legend_type_predefined = 'predefined';
> \ No newline at end of file
> +       map_legend_type_predefined = 'predefined';
> +    map_layer_type_baselayer = 'baselayer';
> +    map_layer_type_overlay = 'overlay';
> \ No newline at end of file
>
> === 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
>   2010-05-21 13:48:28 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/script/index.js
>   2010-05-26 17:48:44 +0000
> @@ -60,9 +60,34 @@
>
>     MAP = new OpenLayers.Map({controls:[new
> OpenLayers.Control.Navigation(),new OpenLayers.Control.ArgParser(),new
> OpenLayers.Control.Attribution()]});
>        MASK = new
> Ext.LoadMask(Ext.getBody(),{msg:i18n_loading,msgCls:'x-mask-loading2'});
> -
> -    if (getUrlParam('view')){PARAMETER=getUrlParam('view');}
> -       var mapViewParam = PARAMETER ? PARAMETER : 0;
> +
> +    /* Base layers */
> +    function addBaseLayersToMap() {
> +        Ext.Ajax.request({
> +            url: path + 'getMapLayersByType' + type,
> +            params: { type: map_layer_type_baselayer },
> +            method: 'POST',
> +            success: function(r) {
> +                var mapLayers =
> Ext.util.JSON.decode(r.responseText).mapLayers;
> +                for (var i = 0; i < mapLayers.length; i++) {
> +                    MAP.addLayers([
> +                        new OpenLayers.Layer.WMS(
> +                            mapLayers[i].name,
> +                            mapLayers[i].mapSource,
> +                            {layers: mapLayers[i].layer}
> +                        )
> +                    ]);
> +                    MAP.layers[MAP.layers.length-1].setVisibility(false);
> +                }
> +            }
> +        });
> +    }
> +
> +    addBaseLayersToMap();
> +
> +    /* Get map view parameter and apply to global variable */
> +    if (getUrlParam('view')){PARAMETER=getUrlParam('view');}
> +       var mapViewParam = PARAMETER || 0;
>
>        Ext.Ajax.request({
>                url: path + 'getBaseCoordinate' + type,
> @@ -123,7 +148,7 @@
>                                        var c =
> Ext.getCmp('numClasses').getValue();
>                                        var ca =
> Ext.getCmp('colorA_cf').getValue();
>                                        var cb =
> Ext.getCmp('colorB_cf').getValue();
> -                                       var mlsid =
> Ext.getCmp('maplegendset_cb').getValue() ?
> Ext.getCmp('maplegendset_cb').getValue() : 0;
> +                                       var mlsid =
> Ext.getCmp('maplegendset_cb').getValue() || 0;
>                                        var lon = MAP.getCenter().lon;
>                                        var lat = MAP.getCenter().lat;
>                                        var zoom = parseInt(MAP.getZoom());
> @@ -1976,7 +2001,7 @@
>                }
>     });
>
> -    /* Section: overlays */
> +    /* Section: map layers */
>        var wmsOverlayStore=new
> GeoExt.data.WMSCapabilitiesStore({url:path_geoserver+ows});
>        var mapLayerNameTextField=new
> Ext.form.TextField({id:'maplayername_tf',emptyText:emptytext,hideLabel:true,width:combo_width});
>        var mapLayerMapSourceFileComboBox=new
> Ext.form.ComboBox({id:'maplayermapsourcefile_cb',editable:false,displayField:'name',valueField:'name',emptyText:emptytext,hideLabel:true,width:combo_width,minListWidth:combo_width,triggerAction:'all',mode:'remote',store:geojsonStore});
> @@ -2079,7 +2104,7 @@
>        var mapLayerFillOpacityComboBox=new
> Ext.form.ComboBox({id:'maplayerfillopacity_cb',hideLabel:true,editable:true,valueField:'value',displayField:'value',mode:'local',triggerAction:'all',width:combo_number_width,minListWidth:combo_number_width,value:0.5,store:new
> Ext.data.SimpleStore({fields:['value'],data:[[0.0],[0.1],[0.2],[0.3],[0.4],[0.5],[0.6],[0.7],[0.8],[0.9],[1.0]]})});
>        var mapLayerStrokeColorColorField=new
> Ext.ux.ColorField({id:'maplayerstrokecolor_cf',hideLabel:true,allowBlank:false,width:combo_width,value:'#222222'});
>        var mapLayerStrokeWidthComboBox=new
> Ext.form.ComboBox({id:'maplayerstrokewidth_cb',hideLabel:true,editable:true,valueField:'value',displayField:'value',mode:'local',triggerAction:'all',width:combo_number_width,minListWidth:combo_number_width,value:2,store:new
> Ext.data.SimpleStore({fields:['value'],data:[[0],[1],[2],[3],[4]]})});
> -       var mapLayerStore=new
> Ext.data.JsonStore({url:path+'getAllMapLayers'+type,root:'mapLayers',fields:['id','name'],sortInfo:{field:'name',direction:'ASC'},autoLoad:true});
> +       var mapLayerStore=new
> Ext.data.JsonStore({url:path+'getMapLayersByType'+type,baseParams:{type:map_layer_type_overlay},root:'mapLayers',fields:['id','name'],sortInfo:{field:'name',direction:'ASC'},autoLoad:true});
>        var mapLayerComboBox=new
> Ext.form.ComboBox({id:'maplayer_cb',typeAhead:true,editable:false,valueField:'id',displayField:'name',mode:'remote',forceSelection:true,triggerAction:'all',emptyText:emptytext,hideLabel:true,selectOnFocus:true,width:combo_width,minListWidth:combo_width,store:mapLayerStore});
>
>     var deleteMapLayerButton = new Ext.Button({
> @@ -2219,8 +2244,8 @@
>         ]
>     });
>
> -       var mapLayerWindow = new Ext.Window({
> -        id: 'maplayer_w',
> +       var overlaysWindow = new Ext.Window({
> +        id: 'overlays_w',
>         title: '<span id="window-maplayer-title">'+i18n_overlays+'</span>',
>                layout: 'fit',
>         closeAction: 'hide',
> @@ -2236,11 +2261,11 @@
>                 listeners: {
>                     tabchange: function(panel, tab)
>                     {
> -                        if (tab.id == 'maplayer0') {
> -
> Ext.getCmp('maplayer_w').setHeight(390);
> +                        if (tab.id == 'overlay0') {
> +
> Ext.getCmp('overlays_w').setHeight(395);
>                         }
> -                        else if (tab.id == 'maplayer1') {
> -
> Ext.getCmp('maplayer_w').setHeight(155);
> +                        else if (tab.id == 'overlay1') {
> +
> Ext.getCmp('overlays_w').setHeight(151);
>                         }
>                     }
>                 },
> @@ -2248,7 +2273,7 @@
>                 [
>                     {
>                         title: '<span
> class="panel-tab-title">'+i18n_new+'</span>',
> -                        id: 'maplayer0',
> +                        id: 'overlay0',
>                         items:
>                         [
>                             newMapLayerPanel
> @@ -2256,7 +2281,7 @@
>                     },
>                     {
>                         title: '<span
> class="panel-tab-title">'+i18n_delete+'</span>',
> -                        id: 'maplayer1',
> +                        id: 'overlay1',
>                         items:
>                         [
>                             deleteMapLayerPanel
> @@ -2280,6 +2305,188 @@
>                        }
>                }
>     });
> +
> +    var mapLayerBaseLayersNameTextField=new
> Ext.form.TextField({id:'maplayerbaselayersname_tf',emptyText:emptytext,hideLabel:true,width:combo_width});
> +    var mapLayerBaseLayersUrlTextField=new
> Ext.form.TextField({id:'maplayerbaselayersurl_tf',emptyText:emptytext,hideLabel:true,width:combo_width});
> +    var mapLayerBaseLayersLayerTextField=new
> Ext.form.TextField({id:'maplayerbaselayerslayer_tf',emptyText:emptytext,hideLabel:true,width:combo_width});
> +
> +    var mapLayerBaseLayerStore=new
> Ext.data.JsonStore({url:path+'getMapLayersByType'+type,baseParams:{
> type:map_layer_type_baselayer
> },root:'mapLayers',fields:['id','name'],sortInfo:{field:'name',direction:'ASC'},autoLoad:true});
> +       var mapLayerBaseLayerComboBox=new
> Ext.form.ComboBox({id:'maplayerbaselayers_cb',typeAhead:true,editable:false,valueField:'id',displayField:'name',mode:'remote',forceSelection:true,triggerAction:'all',emptyText:emptytext,hideLabel:true,selectOnFocus:true,width:combo_width,minListWidth:combo_width,store:mapLayerBaseLayerStore});
> +
> +    var deleteMapLayerBaseLayersButton = new Ext.Button({
> +        id: 'deletemaplayerbaselayers_b',
> +        text: i18n_delete_baselayer,
> +               cls: 'window-button',
> +        handler: function() {
> +            var ml = Ext.getCmp('maplayerbaselayers_cb').getValue();
> +            var mln = Ext.getCmp('maplayerbaselayers_cb').getRawValue();
> +
> +            if (!ml) {
> +                Ext.messageRed.msg( i18n_delete_baselayer,
> i18n_please_select_a_baselayer );
> +                return;
> +            }
> +
> +            Ext.Ajax.request({
> +                url: path + 'deleteMapLayer' + type,
> +                method: 'POST',
> +                params: { id: ml },
> +                success: function(r) {
> +                    Ext.messageBlack.msg( i18n_delete_baselayer ,
> i18n_baselayer + ' <span class="x-msg-hl">' + mln + '</span>
> '+i18n_was_deleted+'.');
> +
>  Ext.getCmp('maplayerbaselayers_cb').getStore().reload();
> +                    Ext.getCmp('maplayerbaselayers_cb').reset();
> +
> +                    if (MAP.baseLayer && mln == MAP.baseLayer.name) {
> +                        Ext.Ajax.request({
> +                            url: path + 'getMapLayersByType' + type,
> +                            params: { type: map_layer_type_baselayer },
> +                            method: 'POST',
> +                            success: function(r) {
> +                                var mapLayers =
> Ext.util.JSON.decode(r.responseText).mapLayers;
> +                                for (var i = 0; i < mapLayers.length; i++)
> {
> +
>  MAP.getLayersByName(mapLayers[i].name)[0].setVisibility(false);
> +                                }
> +                            },
> +                            failure: function() {
> +                                alert( 'Error: getMapLayersByType' );
> +                            }
> +                        });
> +                    }
> +                },
> +                failure: function() {
> +                    alert( 'Error: deleteMapLayer' );
> +                }
> +            });
> +
> +            MAP.getLayersByName(mln)[0].destroy(false);
> +        }
> +    });
> +
> +    var newMapLayerBaseLayersPanel = new Ext.form.FormPanel({
> +        id: 'newmaplayerbaselayers_p',
> +        items:
> +        [
> +            { html: '<div
> class="panel-fieldlabel-first">'+i18n_display_name+'</div>' },
> mapLayerBaseLayersNameTextField,
> +            { html: '<div class="panel-fieldlabel">'+i18n_url+'</div>' },
> mapLayerBaseLayersUrlTextField,
> +            { html: '<div class="panel-fieldlabel">'+i18n_layer+'</div>'
> }, mapLayerBaseLayersLayerTextField,
> +            {
> +                               xtype: 'button',
> +                               id: 'newmaplayerbaselayers_b',
> +                               text: 'Register new base layer',
> +                               cls: 'window-button',
> +                               handler: function() {
> +                                       var mlbn =
> Ext.getCmp('maplayerbaselayersname_tf').getValue();
> +                                       var mlbu =
> Ext.getCmp('maplayerbaselayersurl_tf').getValue();
> +                                       var mlbl =
> Ext.getCmp('maplayerbaselayerslayer_tf').getValue();
> +
> +                                       if (!mlbn || !mlbu || !mlbl) {
> +                                               Ext.messageRed.msg(
> i18n_new_baselayer, i18n_baselayer_form_is_not_complete );
> +                                               return;
> +                                       }
> +
> +                                       if (validateInput(mlbn) == false) {
> +                                               Ext.messageRed.msg(
> i18n_new_baselayer , i18n_baselayer_name_cannot_be_longer_than_25_characters
> );
> +                                               return;
> +                                       }
> +
> +                                       Ext.Ajax.request({
> +                                               url: path +
> 'getMapLayersByType' + type,
> +                        params: { type: map_layer_type_baselayer },
> +                                               method: 'POST',
> +                                               success: function(r) {
> +                                                       var mapLayers =
> Ext.util.JSON.decode(r.responseText).mapLayers;
> +
> +                                                       for (i in
> mapLayers) {
> +                                                               if
> (mapLayers[i].name == mlbn) {
> +
> Ext.messageRed.msg( i18n_new_baselayer , i18n_name + ' <span
> class="x-msg-hl">' + mlbn + '</span> '+i18n_is_already_in_use+'.');
> +
> return;
> +                                                               }
> +                                                       }
> +
> +                                                       Ext.Ajax.request({
> +                                                               url: path +
> 'addOrUpdateMapLayer' + type,
> +                                                               method:
> 'POST',
> +                                                               params: {
> name: mlbn, type: map_layer_type_baselayer, mapSource: mlbu, layer: mlbl,
> fillColor: '', fillOpacity: 0, strokeColor: '', strokeWidth: 0 },
> +                                                               success:
> function(r) {
> +
> Ext.messageBlack.msg( i18n_new_baselayer , 'The base layer <span
> class="x-msg-hl">' + mlbn + '</span> '+i18n_was_registered+'.');
> +
> Ext.getCmp('maplayerbaselayers_cb').getStore().reload();
> +
> MAP.addLayers([
> +                                        new OpenLayers.Layer.WMS(
> +                                            mlbn,
> +                                            mlbu,
> +                                            {layers: mlbl}
> +                                        )
> +                                    ]);
> +
> +
> Ext.getCmp('maplayerbaselayersname_tf').reset();
> +
> Ext.getCmp('maplayerbaselayersurl_tf').reset();
> +
> Ext.getCmp('maplayerbaselayerslayer_tf').reset();
> +                                                               },
> +                                                               failure:
> function() {}
> +                                                       });
> +                                               },
> +                                               failure: function() {}
> +                                       });
> +                               }
> +                       }
> +        ]
> +    });
> +
> +    var deleteMapLayerBaseLayerPanel = new Ext.form.FormPanel({
> +        id: 'deletemaplayerbaselayer_p',
> +        items:
> +        [
> +            { html: '<div
> class="panel-fieldlabel-first">'+i18n_baselayers+'</div>' },
> mapLayerBaseLayerComboBox,
> +            deleteMapLayerBaseLayersButton
> +        ]
> +    });
> +
> +    var baselayersWindow = new Ext.Window({
> +        id: 'baselayers_w',
> +        title: '<span
> id="window-maplayer-title">'+i18n_baselayers+'</span>',
> +               layout: 'fit',
> +        closeAction: 'hide',
> +               width: 234,
> +        items:
> +        [
> +                       {
> +                xtype: 'tabpanel',
> +                activeTab: 0,
> +                deferredRender: false,
> +                plain: true,
> +                defaults: {layout: 'fit', bodyStyle: 'padding:8px'},
> +                listeners: {
> +                    tabchange: function(panel, tab)
> +                    {
> +                        if (tab.id == 'baselayer0') {
> +
> Ext.getCmp('baselayers_w').setHeight(247);
> +                        }
> +                        else if (tab.id == 'baselayer1') {
> +
> Ext.getCmp('baselayers_w').setHeight(151);
> +                        }
> +                    }
> +                },
> +                items:
> +                [
> +                    {
> +                        title: '<span
> class="panel-tab-title">'+i18n_new+'</span>',
> +                        id: 'baselayer0',
> +                        items:
> +                        [
> +                            newMapLayerBaseLayersPanel
> +                        ]
> +                    },
> +                    {
> +                        title: '<span
> class="panel-tab-title">'+i18n_delete+'</span>',
> +                        id: 'baselayer1',
> +                        items:
> +                        [
> +                            deleteMapLayerBaseLayerPanel
> +                        ]
> +                    }
> +                ]
> +            }
> +        ]
> +    });
>
>     /* Section: administrator */
>     var adminPanel = new Ext.form.FormPanel({
> @@ -2517,12 +2724,6 @@
>     });
>
>        /* Section: layers */
> -       var vmap0 = new OpenLayers.Layer.WMS(
> -        'World',
> -        'http://labs.metacarta.com/wms/vmap0',
> -        {layers: 'basic'}
> -    );
> -
>     var choroplethLayer = new OpenLayers.Layer.Vector('Thematic map', {
>         'visibility': false,
>         'displayInLayerSwitcher': false,
> @@ -2539,14 +2740,13 @@
>         })
>     });
>
> -    MAP.addLayers([ vmap0, choroplethLayer ]);
> -
> -       MAP.layers[0].setVisibility(false);
> +    MAP.addLayers([ choroplethLayer ]);
>
>        function addOverlaysToMap() {
>                Ext.Ajax.request({
> -                       url: path + 'getAllMapLayers' + type,
> -                       method: 'GET',
> +                       url: path + 'getMapLayersByType' + type,
> +            params: { type: map_layer_type_overlay },
> +                       method: 'POST',
>                        success: function(r) {
>                                var mapLayers =
> Ext.util.JSON.decode(r.responseText).mapLayers;
>
> @@ -2598,7 +2798,7 @@
>         nodeType: 'gx_baselayercontainer',
>         singleClickExpand: true,
>         expanded: true,
> -        text: 'Backgrounds',
> +        text: 'Base layers',
>                iconCls: 'icon-background'
>     }, {
>         nodeType: 'gx_overlaylayercontainer',
> @@ -2623,14 +2823,26 @@
>                        [
>                                {
>                                        xtype: 'button',
> +                                       id: 'baselayers_b',
> +                                       text: 'Base layers',
> +                                       cls: 'x-btn-text-icon',
> +                                       ctCls: 'aa_med',
> +                                       icon: '../../images/add_small.png',
> +                                       handler: function() {
> +
>  Ext.getCmp('baselayers_w').setPagePosition(Ext.getCmp('east').x - 262,
> Ext.getCmp('center').y + 50);
> +
> Ext.getCmp('baselayers_w').show();
> +                                       }
> +                               },
> +                {
> +                                       xtype: 'button',
>                                        id: 'overlays_b',
>                                        text: 'Overlays',
>                                        cls: 'x-btn-text-icon',
>                                        ctCls: 'aa_med',
>                                        icon: '../../images/add_small.png',
>                                        handler: function() {
> -
>  Ext.getCmp('maplayer_w').setPagePosition(Ext.getCmp('east').x - 262,
> Ext.getCmp('center').y + 50);
> -
> Ext.getCmp('maplayer_w').show();
> +
>  Ext.getCmp('overlays_w').setPagePosition(Ext.getCmp('east').x - 262,
> Ext.getCmp('center').y + 50);
> +
> Ext.getCmp('overlays_w').show();
>                                        }
>                                }
>                        ]
> @@ -3031,12 +3243,19 @@
>         div: $('mouseposition'),
>         prefix: '<span style="color:#666;">x: &nbsp;</span>',
>         separator: '<br/><span style="color:#666;">y: &nbsp;</span>'
> -    }));
> -
> +    }));
> +
> +    var vmap0 = new OpenLayers.Layer.WMS(
> +        "World",
> +        "http://labs.metacarta.com/wms/vmap0";,
> +        {layers: "basic"}
> +    );
> +
>     MAP.addControl(new OpenLayers.Control.OverviewMap({
>         div: $('overviewmap'),
>         size: new OpenLayers.Size(188, 97),
> -        minRectSize: 0
> +        minRectSize: 0,
> +        layers: [vmap0]
>     }));
>
>     MAP.addControl(new OpenLayers.Control.ZoomBox());
> @@ -3045,7 +3264,7 @@
>
>        MAP.events.on({
>         changelayer: function(e) {
> -            if (e.property == 'visibility' && e.layer != choroplethLayer
> && e.layer != vmap0) {
> +            if (e.property == 'visibility' && e.layer != choroplethLayer )
> {
>                 if (e.layer.visibility) {
>                     selectFeatureChoropleth.deactivate();
>                 }
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs<https://launchpad.net/%7Edhis2-devs>
> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dhis2-devs<https://launchpad.net/%7Edhis2-devs>
> More help   : https://help.launchpad.net/ListHelp
>
>

References