dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #19710
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 8713: (GIS) Rewrite, work in progress.
Merge authors:
Jan Henrik Øverland (janhenrik-overland)
------------------------------------------------------------
revno: 8713 [merge]
committer: Jan Henrik Overland <janhenrik.overland@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2012-10-25 17:51:04 +0200
message:
(GIS) Rewrite, work in progress.
removed:
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/geoext-all-debug.css
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/geoext-all.css
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/gxtheme-gray.css
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/gxtheme-slate.css
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/layerlegend.css
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/popup.css
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/symbolizercolumn.css
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/anchor-top.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/anchor.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/bullet_arrow_down.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/bullet_arrow_up.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/delete.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/anchor-top.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/anchor.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/anchor-top.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/anchor.png
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/global.js
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/periodtype.js
added:
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/periodTypeNoDep.js
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/images/download_22.png
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSet.java
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/webapp/dhis-web-mapping/app/index.html
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/app.js
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/core/GeoStat/Facility.js
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Boundary.js
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Facility.js
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Thematic1.js
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Thematic2.js
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/styles/style.css
dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/geojsonFacilities.vm
dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/index.html
--
lp:dhis2
https://code.launchpad.net/~dhis2-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
=== 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 2012-07-09 10:10:20 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2012-10-25 12:07:10 +0000
@@ -132,7 +132,7 @@
private transient String type;
- private transient String[] groupNames;
+ private transient List<String> groupNames = new ArrayList<String>();
private transient Double value;
@@ -864,12 +864,12 @@
this.level = level;
}
- public String[] getGroupNames()
+ public List<String> getGroupNames()
{
return groupNames;
}
- public void setGroupNames( String[] groupNames )
+ public void setGroupNames( List<String> groupNames )
{
this.groupNames = groupNames;
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSet.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSet.java 2012-04-22 16:16:24 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSet.java 2012-10-25 12:07:10 +0000
@@ -227,7 +227,6 @@
}
@JsonProperty( value = "organisationUnitGroups" )
- @JsonSerialize( contentAs = BaseIdentifiableObject.class )
@JsonView( {DetailedView.class, ExportView.class} )
@JacksonXmlElementWrapper( localName = "organisationUnitGroups", namespace = Dxf2Namespace.NAMESPACE )
@JacksonXmlProperty( localName = "organisationUnitGroup", namespace = Dxf2Namespace.NAMESPACE )
=== added file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/periodTypeNoDep.js'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/periodTypeNoDep.js 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/periodTypeNoDep.js 2012-10-24 13:10:34 +0000
@@ -0,0 +1,406 @@
+// generatePeriods config object: { boolean offset, boolean filterFuturePeriods, boolean reversePeriods }
+
+function PeriodType()
+{
+ var monthNames = ['January', 'February', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December'],
+
+ format_yyyymmdd = function(date) {
+ var y = date.getFullYear(),
+ m = new String(date.getMonth() + 1),
+ d = new String(date.getDate());
+ m = m.length < 2 ? '0' + m : m;
+ d = d.length < 2 ? '0' + d : d;
+ return y + '-' + m + '-' + d;
+ },
+
+ filterFuturePeriods = function( periods ) {
+ var array = [],
+ now = new Date();
+
+ for ( var i = 0; i < periods.length; i++ )
+ {
+ if ( new Date( periods[i]['startDate'] ) <= now )
+ {
+ array.push(periods[i]);
+ }
+ }
+
+ return array;
+ };
+
+ var periodTypes = [];
+ periodTypes['Daily'] = new DailyPeriodType( format_yyyymmdd, filterFuturePeriods );
+ periodTypes['Weekly'] = new WeeklyPeriodType( format_yyyymmdd, filterFuturePeriods );
+ periodTypes['Monthly'] = new MonthlyPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
+ periodTypes['BiMonthly'] = new BiMonthlyPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
+ periodTypes['Quarterly'] = new QuarterlyPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
+ periodTypes['SixMonthly'] = new SixMonthlyPeriodType( monthNames, filterFuturePeriods );
+ periodTypes['Yearly'] = new YearlyPeriodType( format_yyyymmdd, filterFuturePeriods );
+ periodTypes['FinancialOct'] = new FinancialOctoberPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
+ periodTypes['FinancialJuly'] = new FinancialJulyPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
+ periodTypes['FinancialApril'] = new FinancialAprilPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
+
+ this.get = function( key )
+ {
+ return periodTypes[key];
+ };
+}
+
+function DailyPeriodType( format_yyyymmdd, fnFilter )
+{
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset;
+ date = new Date( '01 Jan ' + year );
+
+ while ( date.getFullYear() === year )
+ {
+ var period = {};
+ period['startDate'] = format_yyyymmdd( date );
+ period['endDate'] = period['startDate'];
+ period['name'] = period['startDate'];
+ //period['id'] = 'Daily_' + period['startDate'];
+ period['iso'] = period['startDate'].replace( /-/g, '' );
+ period['id'] = period['iso'];
+ periods.push( period );
+ date.setDate( date.getDate() + 1 );
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods.reverse() : periods;
+
+ return periods;
+ };
+}
+
+function WeeklyPeriodType( format_yyyymmdd, fnFilter )
+{
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset,
+ date = new Date( '01 Jan ' + year ),
+ day = date.getDay(),
+ week = 1;
+
+ if ( day <= 4 )
+ {
+ date.setDate( date.getDate() - ( day - 1 ) );
+ }
+ else
+ {
+ date.setDate( date.getDate() + ( 8 - day ) );
+ }
+
+ while ( date.getFullYear() <= year )
+ {
+ var period = {};
+ period['startDate'] = format_yyyymmdd( date );
+ //period['id'] = 'Weekly_' + period['startDate'];
+ period['iso'] = year + 'W' + week;
+ period['id'] = period['iso'];
+ date.setDate( date.getDate() + 6 );
+ period['endDate'] = format_yyyymmdd( date );
+ period['name'] = 'W' + week + ' - ' + period['startDate'] + ' - ' + period['endDate'];
+ periods.push( period );
+ date.setDate( date.getDate() + 1 );
+ week++;
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods.reverse() : periods;
+
+ return periods;
+ };
+}
+
+function MonthlyPeriodType( format_yyyymmdd, monthNames, fnFilter )
+{
+ var format_iso = function(date) {
+ var y = date.getFullYear(),
+ m = new String(date.getMonth() + 1);
+ m = m.length < 2 ? '0' + m : m;
+ return y + m;
+ };
+
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset,
+ date = new Date( '31 Dec ' + year );
+
+ while ( date.getFullYear() === year )
+ {
+ var period = {};
+ period['endDate'] = format_yyyymmdd( date );
+ date.setDate( 1 );
+ period['startDate'] = format_yyyymmdd( date );
+ period['name'] = monthNames[date.getMonth()] + ' ' + date.getFullYear();
+ //period['id'] = 'Monthly_' + period['startDate'];
+ period['iso'] = format_iso( date );
+ period['id'] = period['iso'];
+ periods.push( period );
+ date.setDate( 0 );
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods : periods.reverse();
+ // Months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
+
+ return periods;
+ };
+}
+
+function BiMonthlyPeriodType( format_yyyymmdd, monthNames, fnFilter )
+{
+ var format_iso = function( date ) {
+ var y = date.getFullYear(),
+ m = new String(date.getMonth() + 1);
+ m = m.length < 2 ? '0' + m : m;
+ return y + m + 'B';
+ };
+
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset,
+ date = new Date( '31 Dec ' + year );
+
+ while ( date.getFullYear() === year )
+ {
+ var period = {};
+ period['endDate'] = format_yyyymmdd( date );
+ date.setDate( 0 );
+ date.setDate( 1 );
+ period['startDate'] = format_yyyymmdd( date );
+ period['name'] = monthNames[date.getMonth()] + ' - ' + monthNames[date.getMonth() + 1] + ' ' + date.getFullYear();
+ //period['id'] = 'BiMonthly_' + period['startDate'];
+ period['iso'] = format_iso( date );
+ period['id'] = period['iso'];
+ periods.push(period);
+ date.setDate( 0 );
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods : periods.reverse();
+ // Bi-months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
+
+ return periods;
+ };
+}
+
+function QuarterlyPeriodType( format_yyyymmdd, monthNames, fnFilter )
+{
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset,
+ date = new Date( '31 Dec ' + year ),
+ quarter = 4;
+
+ while ( date.getFullYear() === year )
+ {
+ var period = {};
+ period['endDate'] = format_yyyymmdd( date );
+ date.setDate( 0 );
+ date.setDate( 0 );
+ date.setDate( 1 );
+ period['startDate'] = format_yyyymmdd( date );
+ period['name'] = monthNames[date.getMonth()] + ' - ' + monthNames[date.getMonth() + 2] + ' ' + date.getFullYear();
+ //period['id'] = 'Quarterly_' + period['startDate'];
+ period['iso'] = year + 'Q' + quarter;
+ period['id'] = period['iso'];
+ periods.push(period);
+ date.setDate( 0 );
+ quarter--;
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods : periods.reverse();
+ // Quarters are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
+
+ return periods;
+ };
+}
+
+function SixMonthlyPeriodType( monthNames, fnFilter )
+{
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset;
+
+ var period = {};
+ period['startDate'] = year + '-01-01';
+ period['endDate'] = year + '-06-30';
+ period['name'] = monthNames[0] + ' - ' + monthNames[5] + ' ' + year;
+ //period['id'] = 'SixMonthly_' + period['startDate'];
+ period['iso'] = year + 'S1';
+ period['id'] = period['iso'];
+ periods.push(period);
+
+ period = {};
+ period['startDate'] = year + '-07-01';
+ period['endDate'] = year + '-12-31';
+ period['name'] = monthNames[6] + ' - ' + monthNames[11] + ' ' + year;
+ //period['id'] = 'SixMonthly_' + period['startDate'];
+ period['iso'] = year + 'S2';
+ period['id'] = period['iso'];
+ periods.push(period);
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods.reverse() : periods;
+
+ return periods;
+ };
+}
+
+function YearlyPeriodType( format_yyyymmdd, fnFilter )
+{
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset,
+ date = new Date( '31 Dec ' + year );
+
+ while ( ( year - date.getFullYear() ) < 10 )
+ {
+ var period = {};
+ period['endDate'] = format_yyyymmdd( date );
+ date.setMonth( 0, 1 );
+ period['startDate'] = format_yyyymmdd( date );
+ period['name'] = date.getFullYear().toString();
+ //period['id'] = 'Yearly_' + period['startDate'];
+ period['iso'] = date.getFullYear().toString();
+ period['id'] = period['iso'].toString();
+ periods.push(period);
+ date.setDate(0);
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods : periods.reverse();
+ // Years are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
+
+ return periods;
+ };
+}
+
+function FinancialOctoberPeriodType( format_yyyymmdd, monthNames, fnFilter )
+{
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset,
+ date = new Date( '30 Sep ' + ( year + 1 ) );
+
+ for ( var i = 0; i < 10; i++ )
+ {
+ var period = {};
+ period['endDate'] = format_yyyymmdd( date );
+ date.setYear( date.getFullYear() - 1 );
+ date.setDate( date.getDate() + 1 );
+ period['startDate'] = format_yyyymmdd( date );
+ period['name'] = monthNames[9] + ' ' + date.getFullYear() + ' - ' + monthNames[8] + ' ' + ( date.getFullYear() + 1 );
+ period['id'] = 'FinancialOct_' + period['startDate'];
+ periods.push( period );
+ date.setDate( date.getDate() - 1 );
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods : periods.reverse();
+ // FinancialOctober periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
+
+ return periods;
+ };
+}
+
+function FinancialJulyPeriodType( format_yyyymmdd, monthNames, fnFilter )
+{
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset,
+ date = new Date( '30 Jun ' + ( year + 1 ) );
+
+ for ( var i = 0; i < 10; i++ )
+ {
+ var period = {};
+ period['endDate'] = format_yyyymmdd( date );
+ date.setYear( date.getFullYear() - 1 );
+ date.setDate( date.getDate() + 1 );
+ period['startDate'] = format_yyyymmdd( date );
+ period['name'] = monthNames[6] + ' ' + date.getFullYear() + ' - ' + monthNames[5] + ' ' + ( date.getFullYear() + 1 );
+ period['id'] = 'FinancialJuly_' + period['startDate'];
+ periods.push( period );
+ date.setDate( date.getDate() - 1 );
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods : periods.reverse();
+ // FinancialJuly periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
+
+ return periods;
+ };
+}
+
+function FinancialAprilPeriodType( format_yyyymmdd, monthNames, fnFilter )
+{
+ this.generatePeriods = function( config )
+ {
+ var periods = [],
+ offset = parseInt(config.offset),
+ isFilter = config.filterFuturePeriods,
+ isReverse = config.reversePeriods,
+ year = new Date().getFullYear() + offset,
+ date = new Date( '31 Mar ' + ( year + 1 ) );
+
+ for ( var i = 0; i < 10; i++ )
+ {
+ var period = {};
+ period['endDate'] = format_yyyymmdd( date );
+ date.setYear( date.getFullYear() - 1 );
+ date.setDate( date.getDate() + 1 );
+ period['startDate'] = format_yyyymmdd( date );
+ period['name'] = monthNames[3] + ' ' + date.getFullYear() + ' - ' + monthNames[2] + ' ' + ( date.getFullYear() + 1 );
+ period['id'] = 'FinancialApril_' + period['startDate'];
+ periods.push( period );
+ date.setDate( date.getDate() - 1 );
+ }
+
+ periods = isFilter ? fnFilter( periods ) : periods;
+ periods = isReverse ? periods : periods.reverse();
+ // FinancialApril periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
+
+ return periods;
+ };
+}
+
=== modified 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 2012-10-16 13:33:23 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetGeoJsonFacilitiesAction.java 2012-10-25 12:07:10 +0000
@@ -29,6 +29,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.organisationunit.OrganisationUnitGroupService;
@@ -92,7 +93,7 @@
{
return object;
}
-
+
private Collection<OrganisationUnitGroupSet> groupSets;
public Collection<OrganisationUnitGroupSet> getGroupSets()
@@ -117,7 +118,7 @@
FilterUtils.filter( organisationUnits, new OrganisationUnitWithValidCoordinatesFilter() );
groupSets = organisationUnitGroupService.getAllOrganisationUnitGroupSets();
-
+
object = new ArrayList<OrganisationUnit>();
for ( OrganisationUnit unit : organisationUnits )
@@ -126,15 +127,15 @@
{
int i = 0;
- String[] groupNames = new String[groupSets.size()];
-
+ List<String> groupNames = new ArrayList<String>( groupSets.size() );
+
for ( OrganisationUnitGroupSet groupSet : groupSets )
{
- groupNames[ i++ ] = unit.getGroupNameInGroupSet( groupSet );
+ groupNames.add( unit.getGroupNameInGroupSet( groupSet ) );
}
-
+
unit.setGroupNames( groupNames );
-
+
object.add( unit );
}
}
=== added file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/images/download_22.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/images/download_22.png 1970-01-01 00:00:00 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/images/download_22.png 2012-10-24 15:00:24 +0000 differ
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/index.html'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/index.html 2012-10-24 10:45:58 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/index.html 2012-10-24 15:00:24 +0000
@@ -23,7 +23,7 @@
<form id="exportForm" method="post">
<input type="hidden" id="svgField" name="svg"/>
<input type="hidden" id="titleField" name="title"/>
- </form>
+ </form>
<script type="text/javascript">
var GIS = {};
@@ -55,7 +55,7 @@
<script type="text/javascript" src="scripts/mapfish/MapFish.js"></script>
- <script type="text/javascript" src="scripts/periodtype.js"></script>
+ <script type="text/javascript" src="../../dhis-web-commons/javascripts/periodTypeNoDep.js"></script>
<script type="text/javascript" src="i18n.action"></script>
<script type="text/javascript" src="scripts/app.js"></script>
</body>
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/app.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/app.js 2012-10-24 09:38:24 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/app.js 2012-10-25 15:38:29 +0000
@@ -232,33 +232,33 @@
}
});
- // Load favorite
- var config = {
- classes: 5,
- colorHigh: "ffff00",
- colorLow: "0000ff",
- dataElement: null,
- dataElementGroup: null,
- indicator: "Uvn6LCg7dVU",
- indicatorGroup: "AoTB60phSOH",
- legendSet: null,
- legendType: "automatic",
- level: 3,
- levelName: "Chiefdom",
- method: 2,
- parentId: "fdc6uOvgoji",
- parentLevel: 2,
- parentName: "Bombali",
- parentPath: "/ImspTQPwCqd/fdc6uOvgoji",
- period: "2012",
- periodType: "Yearly",
- radiusHigh: 15,
- radiusLow: 5,
- updateData: false,
- updateLegend: false,
- updateOrganisationUnit: true,
- valueType: "indicator"
- };
+ // Load favorite //todo
+ //var config = {
+ //classes: 5,
+ //colorHigh: "ffff00",
+ //colorLow: "0000ff",
+ //dataElement: null,
+ //dataElementGroup: null,
+ //indicator: "Uvn6LCg7dVU",
+ //indicatorGroup: "AoTB60phSOH",
+ //legendSet: null,
+ //legendType: "automatic",
+ //level: 3,
+ //levelName: "Chiefdom",
+ //method: 2,
+ //parentId: "fdc6uOvgoji",
+ //parentLevel: 2,
+ //parentName: "Bombali",
+ //parentPath: "/ImspTQPwCqd/fdc6uOvgoji",
+ //period: "2012",
+ //periodType: "Yearly",
+ //radiusHigh: 15,
+ //radiusLow: 5,
+ //updateData: false,
+ //updateLegend: false,
+ //updateOrganisationUnit: true,
+ //valueType: "indicator"
+ //};
//GIS.base.thematic1.widget.setConfig(config);
//GIS.base.thematic1.widget.execute();
@@ -279,11 +279,13 @@
GIS.util.map.getVisibleVectorLayers = function() {
var a = [];
for (var i = 0; i < GIS.map.layers.length; i++) {
- if (GIS.map.layers[i].layerType === GIS.conf.finals.layer.type_vector && GIS.map.layers[i].visibility) {
+ if (GIS.map.layers[i].layerType === GIS.conf.finals.layer.type_vector &&
+ GIS.map.layers[i].visibility &&
+ GIS.map.layers[i].features.length) {
a.push(GIS.map.layers[i]);
}
}
- return a;
+ return a.length ? a : false;
};
GIS.util.map.getLayersByType = function(layerType) {
@@ -367,8 +369,14 @@
y += 35;
if (!layers.length) {
- alert('No visible data layers'); //todo //i18n
- return;
+ return false;
+ }
+
+ for (var i = layers.length - 1; i > 0; i--) {
+ if (layers[i].base.id === GIS.base.facility.id) {
+ layers.splice(i, 1);
+ console.log('Facility layer export currently not supported');
+ }
}
for (var i = 0; i < layers.length; i++) {
@@ -385,7 +393,7 @@
svgArray.push(layer.div.innerHTML);
// Legend
- if (id !== GIS.base.boundary.id) {
+ if (id !== GIS.base.boundary.id && id !== GIS.base.facility.id) {
what = '<g id="indicator" style="display: block; visibility: visible;">' +
'<text id="indicator" x="' + x + '" y="' + y + '" font-size="12">' +
'<tspan>' + legendConfig.what + '</tspan></text></g>';
@@ -681,7 +689,7 @@
});
GIS.store.groupsByGroupSet = Ext.create('Ext.data.Store', {
- fields: ['id', 'name'],
+ fields: ['id', 'name', 'symbol'],
proxy: {
type: 'ajax',
url: '',
@@ -1920,12 +1928,22 @@
prevItem = items[i - 1].data;
if (item.startValue < prevItem.endValue) {
- alert('Overlapping legends');
+ var msg = 'Overlapping legends not allowed!\n\n' +
+ prevItem.name + ' (' + prevItem.startValue + ' - ' + prevItem.endValue + ')\n' +
+ item.name + ' (' + item.startValue + ' - ' + item.endValue + ')';
+ alert(msg);
return false;
}
if (prevItem.endValue < item.startValue) {
- alert('Legend gaps');
+ var msg = 'Legend gaps detected!\n\n' +
+ prevItem.name + ' (' + prevItem.startValue + ' - ' + prevItem.endValue + ')\n' +
+ item.name + ' (' + item.startValue + ' - ' + item.endValue + ')\n\n' +
+ 'Proceed anyway?';
+
+ if (!confirm(msg)) {
+ return false;
+ }
}
}
@@ -1940,7 +1958,7 @@
var body = Ext.encode(getRequestBody());
Ext.Ajax.request({
- url: GIS.conf.url.path_api + 'mapLegendSet/',
+ url: GIS.conf.url.path_api + 'mapLegendSets/',
method: 'POST',
headers: {'Content-Type': 'application/json'},
params: body,
@@ -1963,7 +1981,7 @@
body = Ext.encode(getRequestBody());
Ext.Ajax.request({
- url: GIS.conf.url.path_api + 'mapLegendSet/' + id,
+ url: GIS.conf.url.path_api + 'mapLegendSets/' + id,
method: 'PUT',
headers: {'Content-Type': 'application/json'},
params: body,
@@ -2008,6 +2026,12 @@
create,
update
]
+ },
+ listeners: {
+ show: function() {
+ var x = this.getPosition()[0];
+ this.setPosition(x, 50);
+ }
}
});
@@ -2022,28 +2046,33 @@
textfield = Ext.create('Ext.form.field.Text', {
cls: 'gis-textfield',
- height: 30,
+ height: 28,
emptyText: 'Enter map title..', //i18n
- bodyStyle: 'margin-right: 3px'
+ style: 'margin-right: 2px'
});
button = Ext.create('Ext.button.Button', {
- text: 'D',
- height: 30,
- width: 30,
+ width: 28,
+ height: 28,
+ iconCls: 'gis-btn-icon-download',
handler: function() {
var title = textfield.getValue(),
svg = GIS.util.svg.getString(title, GIS.util.map.getVisibleVectorLayers()),
exportForm = document.getElementById('exportForm');
-
- document.getElementById('svgField').value = svg;
- document.getElementById('titleField').value = title;
- exportForm.action = '../exportImage.action';
- exportForm.method = 'post';
- exportForm.submit();
-
- textfield.reset();
- menu.hide();
+
+ if (svg) {
+ document.getElementById('svgField').value = svg;
+ document.getElementById('titleField').value = title;
+ exportForm.action = '../exportImage.action';
+ exportForm.method = 'post';
+ exportForm.submit();
+
+ textfield.reset();
+ menu.hide();
+ }
+ else {
+ alert('No map data to export'); //todo //i18n
+ }
}
});
@@ -2063,10 +2092,24 @@
enableKeyNav: false,
width: 185,
height: 30,
+ cls: 'gis-menu',
items: item,
listeners: {
+ beforeshow: function() {
+ if (!GIS.util.map.getVisibleVectorLayers()) {
+ alert('No map data to export'); //todo //i18n
+ return false;
+ }
+ },
afterrender: function() {
this.getEl().addCls('gis-toolbar-btn-menu gis-toolbar-btn-menu-download');
+ },
+ show: function() {
+ this.keyNav.disable();
+ textfield.focus();
+ },
+ hide: function() {
+ this.keyNav.enable();
}
}
});
@@ -2294,6 +2337,7 @@
},
{
text: 'Legend', //i18n
+ menu: {},
handler: function() {
if (GIS.cmp.legendSetWindow && GIS.cmp.legendSetWindow.destroy) {
GIS.cmp.legendSetWindow.destroy();
=== removed directory 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources'
=== removed directory 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css'
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/geoext-all-debug.css'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/geoext-all-debug.css 2012-08-14 16:47:08 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/geoext-all-debug.css 1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
-/**
- * This file combines all default css files. It will be parsed by the build
- * processor to generate a minified geoext-all.css file. Theme specific
- * overrides go into gxtheme-<theme>.css
- */
-@import "popup.css";
-@import "layerlegend.css";
-@import "symbolizercolumn.css";
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/geoext-all.css'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/geoext-all.css 2012-08-14 16:47:08 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/geoext-all.css 1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
-
-.gx-popup-anc{background:transparent url(../images/default/anchor.png) no-repeat 0 0;position:absolute;left:5px;z-index:2;height:16px;width:31px;pointer-events:none;}.gx-popup-anc.top{background:transparent url(../images/default/anchor-top.png) no-repeat 0 0;top:-16px;}.gx-popup-anc.right{left:auto;right:5px;}.gx-ruledrag-insert-below{border-bottom:1px dotted;}.gx-ruledrag-insert-above{border-top:1px dotted;}.gx-grid-symbolizercol div{padding:0;}
\ No newline at end of file
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/gxtheme-gray.css'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/gxtheme-gray.css 2012-08-14 16:47:08 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/gxtheme-gray.css 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
-.gx-popup-anc{background-image:url(../images/gray/anchor.png);}.gx-popup-anc.top{background-image:url(../images/gray/anchor-top.png);}
\ No newline at end of file
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/gxtheme-slate.css'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/gxtheme-slate.css 2012-08-14 16:47:08 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/gxtheme-slate.css 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
-.gx-popup-anc{background-image:url(../images/slate/anchor.png);}.gx-popup-anc.top{background-image:url(../images/slate/anchor-top.png);}
\ No newline at end of file
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/layerlegend.css'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/layerlegend.css 2012-08-14 16:47:08 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/layerlegend.css 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
-.gx-ruledrag-insert-below{border-bottom:1px dotted;}.gx-ruledrag-insert-above{border-top:1px dotted;}
\ No newline at end of file
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/popup.css'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/popup.css 2012-08-14 16:47:08 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/popup.css 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
-.gx-popup-anc{background:transparent url(../images/default/anchor.png) no-repeat 0 0;position:absolute;left:5px;z-index:2;height:16px;width:31px;pointer-events:none;}.gx-popup-anc.top{background:transparent url(../images/default/anchor-top.png) no-repeat 0 0;top:-16px;}.gx-popup-anc.right{left:auto;right:5px;}
\ No newline at end of file
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/symbolizercolumn.css'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/symbolizercolumn.css 2012-08-14 16:47:08 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/css/symbolizercolumn.css 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
-.gx-grid-symbolizercol div{padding:0;}
\ No newline at end of file
=== removed directory 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images'
=== removed directory 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default'
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/anchor-top.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/anchor-top.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/anchor-top.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/anchor.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/anchor.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/anchor.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/bullet_arrow_down.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/bullet_arrow_down.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/bullet_arrow_down.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/bullet_arrow_up.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/bullet_arrow_up.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/bullet_arrow_up.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/delete.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/delete.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/default/delete.png 1970-01-01 00:00:00 +0000 differ
=== removed directory 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray'
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/anchor-top.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/anchor-top.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/anchor-top.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/anchor.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/anchor.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/gray/anchor.png 1970-01-01 00:00:00 +0000 differ
=== removed directory 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate'
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/anchor-top.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/anchor-top.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/anchor-top.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/anchor.png'
Binary files dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/anchor.png 2012-08-14 16:47:08 +0000 and dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/geoext/resources/images/slate/anchor.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/global.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/global.js 2012-09-10 16:41:53 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/global.js 1970-01-01 00:00:00 +0000
@@ -1,1215 +0,0 @@
-G.conf = {
-
-// Ajax requests
-
- path_mapping: '../',
- path_commons: '../../dhis-web-commons-ajax-json/',
- path_api: '../../api/',
- type: '.action',
-
-// Layer names
-
- boundary_layer: G.i18n.boundary_layer,
- thematic_layer_1: G.i18n.thematic_layer + ' 1',
- thematic_layer_2: G.i18n.thematic_layer + ' 2',
- symbol_layer: G.i18n.symbol_layer,
- centroid_layer: G.i18n.centroid_layer,
-
-// Help strings
-
- setup: 'gisSetup',
- thematicMap: 'gisThematicMap',
- thematicMap2: 'gisThematicMap2',
- thematicMap3: 'gisThematicMap3',
- thematicMap4: 'gisThematicMap4',
- overlayRegistration: 'gisOverlay',
- administration: 'gisAdministration',
- favorites: 'gisFavoriteMapView',
- legendSets: 'gisLegendSet',
- imageExport: 'gisImageExport',
-
-// Layout
-
- west_width: 270,
- multiselect_width: 219,
- label_width: 85,
- combo_width: 150,
- combo_width_fieldset: 127,
- combo_list_width_fieldset: 127 + 17,
- combo_number_width: 65,
- combo_number_width_small: 44,
- window_width: 251,
- window_x_right: 55,
- window_y_right: 41,
- window_x_left: 70,
- window_y_left: 45,
- window_editlayer_width: 570,
- window_editlayer_width_collapsed: 292,
-
-// GUI
-
- feature_data_style_name: 'color:#000',
- feature_data_style_value: 'color:#444',
- feature_data_style_empty: 'color:#555',
-
- emptyText: '',
- labelseparator: '',
-
-// DHIS variables
-
- map_widget_choropleth: 'choropleth',
- map_widget_point: 'point',
- map_widget_symbol: 'symbol',
- map_widget_centroid: 'centroid',
- map_source_type_database: 'database',
- map_source_type_geojson: 'geojson',
- map_source_type_shapefile: 'shapefile',
- map_legend_symbolizer_color: 'color',
- map_legend_symbolizer_image: 'image',
- map_legendset_type_automatic: 'automatic',
- map_legendset_type_predefined: 'predefined',
- map_layer_type_baselayer: 'baselayer',
- map_layer_type_overlay: 'overlay',
- map_layer_type_thematic: 'thematic',
- map_overlay_type_wms: 'wms',
- map_overlay_type_file: 'file',
- map_value_type_indicator: 'indicator',
- map_value_type_dataelement: 'dataelement',
- map_date_type_fixed: 'fixed',
- map_date_type_start_end: 'start-end',
- map_selection_type_parent: 'parent',
- map_selection_type_level: 'level',
- map_feature_type_multipolygon: 'MultiPolygon',
- map_feature_type_multipolygon_class_name: 'OpenLayers.Geometry.MultiPolygon',
- map_feature_type_polygon: 'Polygon',
- map_feature_type_polygon_class_name: 'OpenLayers.Geometry.Polygon',
- map_feature_type_point: 'Point',
- map_feature_type_point_class_name: 'OpenLayers.Geometry.Point',
- map_view_access_level_user: 'user',
- map_view_access_level_system: 'system',
- aggregation_strategy_real_time: 'real_time',
- aggregation_strategy_batch: 'batch',
- operator_lowerthan: 'lt',
- operator_greaterthan: 'gt',
-
-// MapFish
-
- classify_with_bounds: 1,
- classify_by_equal_intervals: 2,
- classify_by_quantils: 3,
-
-// Layers
-
- opacityItems: [
- {text: '0.1', iconCls: 'menu-layeroptions-opacity-10'},
- {text: '0.2', iconCls: 'menu-layeroptions-opacity-20'},
- {text: '0.3', iconCls: 'menu-layeroptions-opacity-30'},
- {text: '0.4', iconCls: 'menu-layeroptions-opacity-40'},
- {text: '0.5', iconCls: 'menu-layeroptions-opacity-50'},
- {text: '0.6', iconCls: 'menu-layeroptions-opacity-60'},
- {text: '0.7', iconCls: 'menu-layeroptions-opacity-70'},
- {text: '0.8', iconCls: 'menu-layeroptions-opacity-80'},
- {text: '0.9', iconCls: 'menu-layeroptions-opacity-90'},
- {text: '1.0', iconCls: 'menu-layeroptions-opacity-100'}
- ],
-
- defaultLayerOpacity: 0.8,
-
- wmsLayerOpacity: 0.5,
-
- defaultLayerZIndex: 10000,
-
- defaultLowRadius: 5,
-
- defaultHighRadius: 20,
-
-// Measure
-
- sketchSymbolizers: {
- "Point": {
- pointRadius: 4,
- graphicName: "square",
- fillColor: "white",
- fillOpacity: 1,
- strokeWidth: 1,
- strokeOpacity: 1,
- strokeColor: "#333333"
- },
- "Line": {
- strokeWidth: 2,
- strokeOpacity: 1,
- strokeColor: "#444444",
- strokeDashstyle: "dash"
- },
- "Polygon": {
- strokeWidth: 2,
- strokeOpacity: 1,
- strokeColor: "#666666",
- fillColor: "white",
- fillOpacity: 0.3
- }
- }
-};
-
-G.util = {
-
- expandWidget: function(widget) {
- var collapsed = widget == choropleth ? point : choropleth;
- collapsed.collapse();
- widget.expand();
- },
-
- getUrlParam: function(s) {
- var output = '';
- var href = window.location.href;
- if (href.indexOf('?') > -1 ) {
- var query = href.substr(href.indexOf('?') + 1);
- var query = query.split('&');
- for (var i = 0; i < query.length; i++) {
- if (query[i].indexOf('=') > -1) {
- var a = query[i].split('=');
- if (a[0].toLowerCase() === s) {
- output = a[1];
- break;
- }
- }
- }
- }
- return unescape(output);
- },
-
- getKeys: function(obj) {
- var temp = [];
- for (var k in obj) {
- if (obj.hasOwnProperty(k)) {
- temp.push(k);
- }
- }
- return temp;
- },
-
- validateInputNameLength: function(name) {
- return (name.length <= 25);
- },
-
- getMultiSelectHeight: function() {
- var h = screen.height;
- return h <= 800 ? 220 :
- h <= 1050 ? 310 :
- h <= 1200 ? 470 : 900;
- },
-
- getGridPanelHeight: function() {
- var h = screen.height;
- return h <= 800 ? 180 :
- h <= 1050 ? 480 :
- h <= 1200 ? 600 : 900;
- },
-
- getNumericMapView: function(mapView) {
- mapView.id = parseFloat(mapView.id);
- mapView.indicatorGroupId = parseFloat(mapView.indicatorGroupId);
- mapView.indicatorId = parseFloat(mapView.indicatorId);
- mapView.periodId = parseFloat(mapView.periodId);
- mapView.method = parseFloat(mapView.method);
- mapView.classes = parseFloat(mapView.classes);
- mapView.mapLegendSetId = parseFloat(mapView.mapLegendSetId);
- mapView.longitude = parseFloat(mapView.longitude);
- mapView.latitude = parseFloat(mapView.latitude);
- mapView.zoom = parseFloat(mapView.zoom);
- return mapView;
- },
-
- getNumberOfDecimals: function(x,dec_sep) {
- var tmp = new String();
- tmp = x;
- return tmp.indexOf(dec_sep) > -1 ? tmp.length-tmp.indexOf(dec_sep) - 1 : 0;
- },
-
- labels: {
- vector: {
- getActivatedOpenLayersStyleMap: function(widget, fsize, fweight, fstyle, fcolor) {
- return new OpenLayers.StyleMap({
- 'default' : new OpenLayers.Style(
- OpenLayers.Util.applyDefaults({
- 'fillOpacity': widget == boundary ? 0 : 1,
- 'strokeColor': widget == boundary ? '#000' : '#fff',
- 'strokeWidth': 1,
- 'label': '${labelString}',
- 'fontFamily': 'arial,sans-serif,ubuntu,consolas',
- 'fontSize': fsize ? fsize : 13,
- 'fontWeight': fweight ? 'bold' : 'normal',
- 'fontStyle': fstyle ? 'italic' : 'normal',
- 'fontColor': fcolor ? fcolor : '#000000'
- },
- OpenLayers.Feature.Vector.style['default'])
- ),
- 'select': new OpenLayers.Style({
- 'strokeColor': '#000000',
- 'strokeWidth': 2,
- 'cursor': 'pointer'
- })
- });
- },
- getDeactivatedOpenLayersStyleMap: function(widget) {
- return new OpenLayers.StyleMap({
- 'default': new OpenLayers.Style(
- OpenLayers.Util.applyDefaults({
- 'fillOpacity': widget == boundary ? 0 : 1,
- 'strokeColor': widget == boundary ? '#000' : '#fff',
- 'strokeWidth': 1
- },
- OpenLayers.Feature.Vector.style['default'])
- ),
- 'select': new OpenLayers.Style({
- 'strokeColor': '#000000',
- 'strokeWidth': 2,
- 'cursor': 'pointer'
- })
- });
- },
- toggleFeatureLabels: function(widget, fsize, fweight, fstyle, fcolor) {
- function activateLabels() {
- widget.layer.styleMap = this.getActivatedOpenLayersStyleMap(widget, fsize, fweight, fstyle, fcolor);
- widget.labels = true;
- }
- function deactivateLabels(scope) {
- widget.layer.styleMap = this.getDeactivatedOpenLayersStyleMap(widget);
- widget.labels = false;
- }
-
- if (widget.labels) {
- deactivateLabels.call(this);
- }
- else {
- activateLabels.call(this);
- }
-
- G.vars.lockPosition = true;
- widget.applyValues();
- }
- },
- fileOverlay: {
- getActivatedOpenLayersStyleMap: function(layer) {
- var style = layer.styleMap.styles['default'].defaultStyle;
- return new OpenLayers.StyleMap({
- 'default' : new OpenLayers.Style(
- OpenLayers.Util.applyDefaults({
- 'fillOpacity': style.fillOpacity,
- 'fillColor': style.fillColor,
- 'strokeWidth': style.strokeWidth,
- 'strokeColor': style.strokeWidth,
- 'label': '${name}',
- 'fontFamily': 'arial,lucida sans unicode',
- 'fontSize': 13,
- 'fontWeight': 'normal',
- 'fontStyle': 'normal',
- 'fontColor': '#000000'
- },
- OpenLayers.Feature.Vector.style['default'])
- )
- });
- },
- getDeactivatedOpenLayersStyleMap: function(layer) {
- var style = layer.styleMap.styles['default'].defaultStyle;
- return new OpenLayers.StyleMap({
- 'default' : new OpenLayers.Style(
- OpenLayers.Util.applyDefaults({
- 'fillOpacity': style.fillOpacity,
- 'fillColor': style.fillColor,
- 'strokeWidth': style.strokeWidth,
- 'strokeColor': style.strokeWidth
- },
- OpenLayers.Feature.Vector.style['default'])
- )
- });
- },
- toggleFeatureLabels: function(layer) {
- function activateLabels() {
- layer.styleMap = this.getActivatedOpenLayersStyleMap(layer);
- layer.labels = true;
- layer.refresh();
- }
- function deactivateLabels(scope) {
- layer.styleMap = this.getDeactivatedOpenLayersStyleMap(layer);
- layer.labels = false;
- layer.refresh();
- }
-
- if (layer.labels) {
- deactivateLabels.call(this);
- }
- else {
- activateLabels.call(this);
- }
- }
- }
- },
-
- measureDistance: {
- getMeasureStyleMap: function() {
- var style = new OpenLayers.Style();
- style.addRules([new OpenLayers.Rule({symbolizer: G.conf.sketchSymbolizers})]);
- return new OpenLayers.StyleMap({"default": style});
- },
-
- handleMeasurements: function(e) {
- if (e.measure) {
- document.getElementById('measureDistanceDiv').innerHTML = e.measure.toFixed(2) + ' ' + e.units;
- }
- }
- },
-
- sortByValue: function(a,b) {
- return b.value-a.value;
- },
-
- getLegendsJSON: function() {
- var json = '{"legends":[';
- for (var i = 0; i < this.imageLegend.length; i++) {
- json += '{';
- json += '"label": "' + this.imageLegend[i].label + '",';
- json += '"color": "' + this.imageLegend[i].color + '"';
- json += i < this.imageLegend.length-1 ? '},' : '}';
- }
- json += ']}';
- return json;
- },
-
- setCurrentValue: function(cb, mv) {
- if (cb.getValue() == cb.currentValue) {
- return true;
- }
- else {
- cb.currentValue = cb.getValue();
- mv.clearValue();
- return false;
- }
- },
-
- setLockPosition: function(cb) {
- cb.lockPosition = !cb.lockPosition ? true : cb.lockPosition;
- },
-
- mergeSvg: function(str, ext) {
- if (ext.length) {
- str = str || '<svg>';
- for (var i = 0; i < ext.length; i++) {
- str = str.replace('</svg>');
- 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;
- },
-
- getTransformedFeatureArray: function(features) {
- var sourceProjection = new OpenLayers.Projection("EPSG:4326");
- var destinationProjection = new OpenLayers.Projection("EPSG:900913");
- for (var i = 0; i < features.length; i++) {
- features[i].geometry.transform(sourceProjection, destinationProjection);
- }
- return features;
- },
-
- getTransformedPointByXY: function(x, y) {
- var p = new OpenLayers.Geometry.Point(parseFloat(x), parseFloat(y));
- return p.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
- },
-
- getTransformedPoint: function(p) {
- return p.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
- },
-
- createWMSLayer: function(name, url, layers, time) {
- var options = {
- layers: layers,
- transparent: true,
- format: 'image/png'
- };
- if (time) {
- options.time = time;
- }
- var layer = new OpenLayers.Layer.WMS(name, url, options, {
- isBaseLayer: false,
- buffer: 0,
- ratio: 1,
- singleTile: true
- });
- layer.baseUrl = url;
- return layer;
- },
-
- convertWMSUrlToLegendString: function(url) {
- var str = url.replace('wms.xml','wmsfigmap');
- return str += '?REQUEST=GetLegendGraphic';
- },
-
- createOverlay: function(name, fillColor, fillOpacity, strokeColor, strokeWidth, url) {
- return new OpenLayers.Layer.Vector(name, {
- 'visibility': false,
- 'styleMap': new OpenLayers.StyleMap({
- 'default': new OpenLayers.Style(
- OpenLayers.Util.applyDefaults(
- {'fillColor': fillColor, 'fillOpacity': fillOpacity, 'strokeColor': strokeColor, 'strokeWidth': strokeWidth},
- OpenLayers.Feature.Vector.style['default']
- )
- )
- }),
- 'strategies': [new OpenLayers.Strategy.Fixed()],
- 'protocol': new OpenLayers.Protocol.HTTP({
- 'url': url,
- 'format': new OpenLayers.Format.GeoJSON()
- })
- });
- },
-
- getVisibleLayers: function(layers) {
- var vLayers = [];
- for (var i = 0; i < layers.length; i++) {
- if (layers[i].visibility) {
- vLayers.push(layers[i]);
- }
- }
- return vLayers;
- },
-
- getVectorLayers: function() {
- var layers = [];
- for (var i = 0; i < G.vars.map.layers.length; i++) {
- if (G.vars.map.layers[i].layerType == G.conf.map_layer_type_thematic ||
- G.vars.map.layers[i].layerType == G.conf.map_layer_type_overlay) {
- layers.push(G.vars.map.layers[i]);
- }
- }
- 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;
- },
-
- zoomToVisibleExtent: function() {
- if (!G.vars.lockPosition) {
- var bounds = [];
-
- var layers = this.getLayersByType(G.conf.map_layer_type_thematic);
- for (var i = 0; i < layers.length; i++) {
- if (layers[i].getDataExtent() && layers[i].visibility) {
- bounds.push(layers[i].getDataExtent());
- }
- }
-
- if (bounds.length === 1) {
- G.vars.map.zoomToExtent(bounds[0]);
- }
- else if (bounds.length > 1) {
- var extended = bounds[0];
- for (var i = 1; i < bounds.length; i++) {
- extended.extend(bounds[i]);
- }
- G.vars.map.zoomToExtent(extended);
- }
- }
- G.vars.lockPosition = false;
- },
-
- setZIndexByLayerType: function(type, index) {
- for (var i = 0; i < G.vars.map.layers.length; i++) {
- if (G.vars.map.layers[i].layerType == type) {
- G.vars.map.layers[i].setZIndex(index);
- }
- }
- },
-
- setOpacityByLayerType: function(type, opacity) {
- for (var i = 0; i < G.vars.map.layers.length; i++) {
- if (G.vars.map.layers[i].layerType == type) {
- G.vars.map.layers[i].setOpacity(opacity);
- }
- else if (G.vars.map.layers[i].overlayType == type) {
- G.vars.map.layers[i].setOpacity(opacity);
- }
- }
- },
-
- findArrayValue: function(array, value) {
- for (var i = 0; i < array.length; i++) {
- if (value == array[i]) {
- return true;
- }
- }
- return false;
- },
-
- compareObjToObj: function(obj1, obj2, exceptions) {
- for (p in obj1) {
- if (obj1[p] !== obj2[p]) {
- if (!G.util.findArrayValue(exceptions, p)) {
- return false;
- }
- }
- }
- return true;
- },
-
- cutString: function(str, len) {
- if (str.length > len) {
- str = str.substr(0,len) + '..';
- }
- return str;
- },
-
- getOrganisationUnitIdStringFromFeatures: function(features) {
- var str = '';
- for (var i = 0; i < features.length; i++) {
- str += features[i].attributes.id;
- str += i < (features.length - 1) ? ',' : '';
- }
- return str;
- },
-
- geoJsonDecode: function(doc) {
- doc = Ext.util.JSON.decode(doc);
- var geojson = {};
- geojson.type = 'FeatureCollection';
- geojson.crs = {
- type: 'EPSG',
- properties: {
- code: '4326'
- }
- };
- geojson.features = [];
- for (var i = 0; i < doc.length; i++) {
- geojson.features.push({
- geometry: {
- type: doc[i].t == 1 ? 'MultiPolygon' : 'Point',
- coordinates: doc[i].c
- },
- properties: {
- id: doc[i].i,
- name: doc[i].n,
- value: doc[i].v,
- hcwc: doc[i].h
- }
- });
- }
- return geojson;
- },
-
- mapValueDecode: function(r) {
- var r = Ext.util.JSON.decode(r.responseText),
- mapvalues = [];
- for (var i = 0; i < r.length; i++) {
- mapvalues.push({
- oi: r[i][0],
- v: r[i][1]
- });
- }
- return mapvalues;
- },
-
- mapView: {
- layer: function(id) {
- var w = new Ext.Window({
- id: 'mapviewlayer_w',
- title: '<span id="window-favorites-title">' + G.i18n.favorite + '</span>',
- layout: 'fit',
- modal: true,
- width: 150,
- height: 98,
- items: [
- {
- xtype: 'panel',
- bodyStyle: 'padding:14px;',
- items: [
- { html: G.i18n.open_which_layer }
- ]
- }
- ],
- bbar: [
- '->',
- {
- xtype: 'button',
- iconCls: 'icon-thematic1',
- hideLabel: true,
- handler: function() {
- G.util.mapView.mapView.call(choropleth, id);
- Ext.getCmp('mapviewlayer_w').destroy();
- }
- },
- {
- xtype: 'button',
- iconCls: 'icon-thematic2',
- hideLabel: true,
- handler: function() {
- G.util.mapView.mapView.call(point, id);
- Ext.getCmp('mapviewlayer_w').destroy();
- }
- }
- ]
- });
- var c = Ext.getCmp('center').x;
- var e = Ext.getCmp('east').x;
- w.setPagePosition(c+((e-c)/2)-(w.width/2), Ext.getCmp('east').y + 100);
- w.show();
- },
-
- mapView: function(id) {
- var store = G.stores.mapView;
- if (!store.isLoaded) {
- store.load({scope: this, callback: function() {
- var mapView = store.getAt(store.find('id', id)).data;
- G.util.mapView.launch.call(this, mapView);
- }});
- }
- else {
- var mapView = store.getAt(store.find('id', id)).data;
- G.util.mapView.launch.call(this, mapView);
- }
- },
-
- launch: function(mapView) {
- if (!this.window.isShown) {
- this.window.show();
- this.window.hide();
- }
- this.mapView = mapView;
- this.updateValues = true;
-
- this.legend.value = this.mapView.mapLegendType;
- this.legend.method = this.mapView.method || this.legend.method;
- this.legend.classes = this.mapView.classes || this.legend.classes;
-
- G.vars.map.setCenter(new OpenLayers.LonLat(this.mapView.longitude, this.mapView.latitude), this.mapView.zoom);
-
- this.valueType.value = this.mapView.mapValueType;
- this.cmp.mapValueType.setValue(this.valueType.value);
-
- this.setMapView();
- }
- }
-};
-
-G.date = {
- getNowHMS: function(date) {
- date = date || new Date();
- return G.date.getDoubleDigit(date.getHours()) + ':' +
- G.date.getDoubleDigit(date.getMinutes()) + ':' +
- G.date.getDoubleDigit(date.getSeconds());
- },
-
- getDoubleDigit: function(unit) {
- unit = '' + unit;
- return unit.length < 2 ? '0' + unit : unit;
- }
-};
-
-G.vars = {
- map: null,
-
- parameter: null,
-
- mask: null,
-
- activePanel: {
- value: G.conf.thematicMap,
- setPolygon: function() {
- this.value = G.conf.thematicMap;
- },
- setPoint: function() {
- this.value = G.conf.thematicMap2;
- },
- setSymbol: function() {
- this.value = G.conf.thematicMap3;
- },
- setCentroid: function() {
- this.value = G.conf.thematicMap4;
- },
- isPolygon: function() {
- return this.value === G.conf.thematicMap;
- },
- isPoint: function() {
- return this.value === G.conf.thematicMap2;
- },
- isSymbol: function() {
- return this.value === G.conf.thematicMap3;
- },
- isCentroid: function() {
- return this.value === G.conf.thematicMap4;
- }
- },
-
- activeWidget: null,
-
- lockPosition: false,
-
- relocate: {},
-
- mouseMove: {}
-};
-
-G.user = {
- isAdmin: false
-};
-
-G.system = {
- infrastructuralPeriodType: null,
-
- rootNode: null
-};
-
-G.func = {
- storeLoadListener: function() {
- this.isLoaded = true;
- },
-
- loadStart: function() {
- G.vars.mask.msg = G.i18n.loading;
- G.vars.mask.show();
- },
-
- loadEnd: function() {
- G.vars.mask.hide();
- }
-};
-
-G.cls = {
- vectorLayerButton: function(iconCls, tooltip, widget) {
- return new Ext.Button({
- iconCls: iconCls,
- tooltip: tooltip,
- widget: widget,
- style: 'margin-top:1px',
- enableItems: function(bool) {
- var menuItems = widget == boundary ? [2,3,5,6,8] : [2,3,5,6,7,9];
- for (var i = 0, items = this.menu.items.items; i < menuItems.length; i++) {
- if (bool) {
- items[menuItems[i]].enable();
- }
- else {
- items[menuItems[i]].disable();
- }
- }
- },
- handler: function() {
- this.enableItems(this.widget.layer.features ? this.widget.layer.features.length : false);
- },
- listeners: {
- 'afterrender': function(b) {
- this.menu = new Ext.menu.Menu({
- parent: b,
- items: [
- {
- text: G.i18n.edit_layer + '..',
- iconCls: 'menu-layeroptions-edit',
- scope: this,
- handler: function() {
- this.widget.window.show(this.id);
- }
- },
- '-',
- {
- text: G.i18n.refresh,
- iconCls: 'menu-layeroptions-refresh',
- scope: this,
- handler: function() {
- this.widget.updateValues = true;
- this.widget.classify();
- }
- },
- {
- text: G.i18n.clear ,
- iconCls: 'menu-layeroptions-clear',
- scope: this,
- handler: function() {
- this.widget.formValues.clearForm.call(this.widget, true);
- }
- },
- '-',
- {
- text: G.i18n.filter + '..',
- iconCls: 'menu-layeroptions-filter',
- scope: this,
- handler: function() {
- this.widget.filtering.showFilteringWindow.call(this.widget);
- }
- },
- {
- text: G.i18n.search + '..',
- iconCls: 'menu-layeroptions-locate',
- showSearchWindow: function() {
- var layer = this.parentMenu.parent.widget.layer;
-
- var data = [];
- for (var i = 0; i < layer.features.length; i++) {
- data.push([layer.features[i].data.id || i, layer.features[i].data.name]);
- }
-
- if (data.length) {
- var featureStore = new Ext.data.ArrayStore({
- mode: 'local',
- idProperty: 'id',
- fields: ['id','name'],
- sortInfo: {field: 'name', direction: 'ASC'},
- autoDestroy: true,
- data: data
- });
-
- this.window = new Ext.Window({
- title: '<span id="window-locate-title">' + G.i18n.organisationunit_search +'</span>',
- layout: 'fit',
- width: G.conf.window_width,
- height: G.util.getMultiSelectHeight() + 140,
- items: [
- {
- xtype: 'form',
- bodyStyle:'padding:8px',
- labelWidth: G.conf.label_width,
- items: [
- { html: '<div class="window-info">' + G.i18n.locate_organisationunit_on_map + '</div>' },
- {
- xtype: 'colorfield',
- id: 'highlightcolor',
- emptyText: G.conf.emptytext,
- labelSeparator: G.conf.labelseparator,
- fieldLabel: G.i18n.highlight_color,
- allowBlank: false,
- width: G.conf.combo_width_fieldset,
- value: "#0000FF"
- },
- {
- xtype: 'textfield',
- emptyText: G.conf.emptytext,
- labelSeparator: G.conf.labelseparator,
- fieldLabel: G.i18n.text_filter,
- width: G.conf.combo_width_fieldset,
- enableKeyEvents: true,
- listeners: {
- 'keyup': function(tf) {
- featureStore.filter('name', tf.getValue(), true, false);
- }
- }
- },
- { html: '<div class="window-p"></div>' },
- {
- xtype: 'grid',
- height: G.util.getMultiSelectHeight(),
- cm: new Ext.grid.ColumnModel({
- columns: [{id: 'name', header: 'Features', dataIndex: 'name', width: 250}]
- }),
- sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
- viewConfig: {forceFit: true},
- sortable: true,
- autoExpandColumn: 'name',
- store: featureStore,
- listeners: {
- 'cellclick': {
- scope: this,
- fn: function(g, ri, ci, e) {
- layer.redraw();
-
- var id, feature;
- id = g.getStore().getAt(ri).data.id;
-
- for (var i = 0; i < layer.features.length; i++) {
- if (layer.features[i].data.id == id) {
- feature = layer.features[i];
- break;
- }
- }
- var color = Ext.getCmp('highlightcolor').getValue();
- var symbolizer;
-
- if (feature.geometry.CLASS_NAME == G.conf.map_feature_type_multipolygon_class_name ||
- feature.geometry.CLASS_NAME == G.conf.map_feature_type_polygon_class_name) {
- symbolizer = new OpenLayers.Symbolizer.Polygon({
- 'strokeColor': color,
- 'fillColor': color
- });
- }
- else if (feature.geometry.CLASS_NAME == G.conf.map_feature_type_point_class_name) {
- symbolizer = new OpenLayers.Symbolizer.Point({
- 'pointRadius': 7,
- 'fillColor': color
- });
- }
-
- layer.drawFeature(feature,symbolizer);
- }
- }
- }
- }
- ]
- }
- ],
- listeners: {
- 'hide': function() {
- layer.redraw();
- }
- }
- });
- this.window.setPagePosition(G.conf.window_x_left,G.conf.window_y_left);
- this.window.show(this.parentMenu.parent.id);
- }
- else {
- Ext.message.msg(false, '<span class="x-msg-hl">' + layer.name + '</span>: ' + G.i18n.no_features_rendered);
- }
- },
- handler: function() {
- this.showSearchWindow();
- }
- },
- {
- name: 'labels',
- text: G.i18n.labels + '..',
- iconCls: 'menu-layeroptions-labels',
- cmp: {
- fontSize: new Ext.form.NumberField({
- name: 'fontsize',
- fieldLabel: G.i18n.font_size,
- labelSeparator: G.conf.labelseparator,
- width: G.conf.combo_number_width_small,
- enableKeyEvents: true,
- allowDecimals: false,
- allowNegative: false,
- value: 13,
- emptyText: 13,
- listeners: {
- 'keyup': {
- scope: this,
- fn: function(nf) {
- var item = this.menu.find('name','labels')[0];
-
- if (this.widget.labels) {
- this.widget.labels = false;
- G.util.labels.vector.toggleFeatureLabels(this.widget, nf.getValue(), item.cmp.strong.getValue(),
- item.cmp.italic.getValue(), item.cmp.color.getValue());
- }
- }
- }
- }
- }),
- strong: new Ext.form.Checkbox({
- fieldLabel: '<b>' + G.i18n.bold_ + '</b>',
- labelSeparator: G.conf.labelseparator,
- listeners: {
- 'check': {
- scope: this,
- fn: function(chb, checked) {
- var item = this.menu.find('name','labels')[0];
-
- if (this.widget.labels) {
- this.widget.labels = false;
- G.util.labels.vector.toggleFeatureLabels(this.widget, item.cmp.fontSize.getValue(),
- checked, item.cmp.italic.getValue(), item.cmp.color.getValue());
- }
- }
- }
- }
- }),
- italic: new Ext.form.Checkbox({
- fieldLabel: '<i>' + G.i18n.italic + '</i>',
- labelSeparator: G.conf.labelseparator,
- listeners: {
- 'check': {
- scope: this,
- fn: function(chb, checked) {
- var item = this.menu.find('name','labels')[0];
-
- if (this.widget.labels) {
- this.widget.labels = false;
- G.util.labels.vector.toggleFeatureLabels(this.widget, item.cmp.fontSize.getValue(),
- item.cmp.strong.getValue(), checked, item.cmp.color.getValue());
- }
- }
- }
- }
- }),
- color: new Ext.ux.ColorField({
- fieldLabel: G.i18n.color,
- labelSeparator: G.conf.labelseparator,
- allowBlank: false,
- width: G.conf.combo_width_fieldset,
- value: "#000000",
- listeners: {
- 'select': {
- scope: this,
- fn: function(cf) {
- var item = this.menu.find('name','labels')[0];
-
- if (this.widget.labels) {
- this.widget.labels = false;
- G.util.labels.vector.toggleFeatureLabels(this.widget, item.cmp.fontSize.getValue(),
- item.cmp.strong.getValue(), item.cmp.italic.getValue(), cf.getValue());
- }
- }
- }
- }
- })
- },
- showLabelWindow: function() {
- var layer = this.parentMenu.parent.widget.layer;
- if (layer.features.length) {
- if (this.cmp.labelWindow) {
- this.cmp.labelWindow.show();
- }
- else {
- this.cmp.labelWindow = new Ext.Window({
- title: '<span id="window-labels-title">' + G.i18n.labels + '</span>',
- layout: 'fit',
- closeAction: 'hide',
- width: G.conf.window_width,
- height: 200,
- items: [
- {
- xtype: 'form',
- bodyStyle: 'padding:8px',
- labelWidth: G.conf.label_width,
- items: [
- {html: '<div class="window-info">' + G.i18n.show_hide_feature_labels + '</div>'},
- this.cmp.fontSize,
- this.cmp.strong,
- this.cmp.italic,
- this.cmp.color
- ]
- }
- ],
- bbar: [
- '->',
- {
- xtype: 'button',
- iconCls: 'icon-assign',
- hideLabel: true,
- text: G.i18n.showhide,
- scope: this,
- handler: function() {
- if (layer.features.length) {
- G.util.labels.vector.toggleFeatureLabels(layer.widget, this.cmp.fontSize.getValue(),
- this.cmp.strong.getValue(), this.cmp.italic.getValue(), this.cmp.color.getValue());
- }
- else {
- Ext.message.msg(false, '<span class="x-msg-hl">' + layer.name + '</span>: ' + Gi.i18n.no_features_rednered );
- }
- }
- }
- ]
- });
- this.cmp.labelWindow.setPagePosition(G.conf.window_x_left,G.conf.window_y_left);
- this.cmp.labelWindow.show(this.parentMenu.parent.id);
- }
- }
- else {
- Ext.message.msg(false, '<span class="x-msg-hl">' + layer.name + '</span>: ' + Gi.i18n.no_features_rednered );
- }
- },
- handler: function() {
- this.showLabelWindow();
- }
- },
- '-',
- {
- text: G.i18n.opacity,
- iconCls: 'menu-layeroptions-opacity',
- menu: {
- items: G.conf.opacityItems,
- listeners: {
- 'itemclick': {
- scope: this,
- fn: function(item) {
- this.widget.layer.setOpacity(item.text);
- }
- }
- }
- }
- },
- '-',
- {
- name: 'history',
- text: G.i18n.history,
- iconCls: 'menu-history',
- disabled: true,
- menu: {},
- addMenu: function() {
- this.menu = new Ext.menu.Menu({
- defaults: {
- itemCls: 'x-menu-item x-menu-item-custom'
- },
- items: [],
- listeners: {
- 'add': function(menu) {
- var items = menu.items.items;
- var keys = menu.items.keys;
- items.unshift(items.pop());
- keys.unshift(keys.pop());
-
- if (items.length > 10) {
- items[items.length-1].destroy();
- }
- },
- 'click': {
- scope: this,
- fn: function(menu, item) {
- G.util.mapView.launch.call(this.parentMenu.parent.widget, item.mapView);
- }
- }
- }
- });
- },
- addItem: function(scope) {
- if (!this.menu.items) {
- this.addMenu();
- }
-
- var mapView = scope.formValues.getAllValues.call(scope);
- mapView.widget = scope;
- mapView.timestamp = G.date.getNowHMS();
- var c1 = '<span class="menu-item-inline-c1">';
- var c2 = '<span class="menu-item-inline-c2">';
- var spanEnd = '</span>';
- mapView.label = '<span class="menu-item-inline-bg">' +
- c1 + mapView.timestamp + spanEnd +
- c2 + mapView.parentOrganisationUnitName + spanEnd +
- c1 + '( ' + mapView.organisationUnitLevelName + ' )' + spanEnd +
- c2 + (mapView.mapValueType == G.conf.map_value_type_indicator ? mapView.indicatorName : mapView.dataElementName) + spanEnd +
- c1 + mapView.periodName + spanEnd +
- spanEnd;
-
- for (var i = 0; i < this.menu.items.items.length; i++) {
- if (G.util.compareObjToObj(mapView, this.menu.items.items[i].mapView, ['longitude','latitude','zoom','widget','timestamp','label'])) {
- this.menu.items.items[i].destroy();
- }
- }
-
- this.menu.addMenuItem({
- html: mapView.label,
- mapView: mapView
- });
-
- this.enable();
- }
- }
- ]
- });
-
- this.widget.button = this;
- }
- }
- });
- }
-};
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/core/GeoStat/Facility.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/core/GeoStat/Facility.js 2012-10-16 16:06:44 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/core/GeoStat/Facility.js 2012-10-25 12:07:10 +0000
@@ -36,20 +36,19 @@
applyClassification: function(options) {
this.updateOptions(options);
- var store = GIS.store.groupsByGroupSet,
- groupRecords = store.data.items;
+ var items = GIS.store.groupsByGroupSet.data.items;
- var rules = new Array(groupRecords.length);
- for (var i = 0; i < groupRecords.length; i++) {
+ var rules = new Array(items.length);
+ for (var i = 0; i < items.length; i++) {
var rule = new OpenLayers.Rule({
symbolizer: {
'pointRadius': 8,
- 'externalGraphic': '../../images/' + groupRecords[i].data.image
+ 'externalGraphic': '../../images/orgunitgroup/' + items[i].data.symbol
},
filter: new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: this.indicator,
- value: groupRecords[i].data.name
+ value: items[i].data.name
})
});
rules[i] = rule;
@@ -65,7 +64,7 @@
}
var config = this.widget.getLegendConfig(),
- storeRecords = GIS.store.groupsByGroupSet.data.items,
+ items = GIS.store.groupsByGroupSet.data.items,
element;
this.legendDiv.update("");
@@ -84,9 +83,9 @@
element.style.height = "5px";
this.legendDiv.appendChild(element);
- for (var i = 0; i < storeRecords.length; i++) {
+ for (var i = 0; i < items.length; i++) {
var element = document.createElement("div");
- element.style.backgroundImage = 'url(../../images/' + storeRecords[i].data.image + ')';
+ element.style.backgroundImage = 'url(../../images/orgunitgroup/' + items[i].data.symbol + ')';
element.style.backgroundRepeat = 'no-repeat';
element.style.width = "25px";
element.style.height = "18px";
@@ -95,7 +94,7 @@
this.legendDiv.appendChild(element);
element = document.createElement("div");
- element.innerHTML = storeRecords[i].data.name;
+ element.innerHTML = items[i].data.name;
this.legendDiv.appendChild(element);
element = document.createElement("div");
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Boundary.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Boundary.js 2012-10-22 18:38:37 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Boundary.js 2012-10-25 12:21:55 +0000
@@ -93,7 +93,7 @@
doc = GIS.util.geojson.decode(doc, this);
}
else {
- alert("no coordinates"); //todo //i18n
+ alert('No valid coordinates found'); //todo //i18n
}
this.layer.removeFeatures(this.layer.features);
@@ -527,10 +527,10 @@
return model;
},
- validateModel: function(model) {
+ validateModel: function(model) {
if (!model.level || !Ext.isNumber(model.level)) {
GIS.logg.push([model.level, this.xtype + '.level: number']);
- //alert("validation failed"); //todo
+ alert('No level selected'); //todo
return false;
}
if (!model.levelName || !Ext.isString(model.levelName)) {
@@ -540,7 +540,7 @@
}
if (!model.parentId || !Ext.isString(model.parentId)) {
GIS.logg.push([model.parentId, this.xtype + '.parentId: string']);
- //alert("validation failed"); //todo
+ alert('No parent organisation unit selected'); //todo
return false;
}
if (!model.parentName || !Ext.isString(model.parentName)) {
@@ -555,7 +555,7 @@
}
if (model.parentLevel > model.level) {
GIS.logg.push([model.parentLevel, model.level, this.xtype + '.parentLevel: number <= ' + this.xtype + '.level']);
- //alert("validation failed"); //todo
+ alert('Level cannot be higher than parent level'); //todo
return false;
}
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Facility.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Facility.js 2012-10-22 18:38:37 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Facility.js 2012-10-25 12:23:33 +0000
@@ -97,6 +97,45 @@
}
})
},
+
+ decode: function(doc) {
+ var feature,
+ group,
+ attr,
+ geojson = {
+ type: 'FeatureCollection',
+ crs: {
+ type: 'EPSG',
+ properties: {
+ code: '4326'
+ }
+ },
+ features: []
+ };
+
+ doc = Ext.decode(doc);
+
+ for (var i = 0; i < doc.geojson.length; i++) {
+ attr = doc.geojson[i];
+
+ feature = {
+ geometry: {
+ type: parseInt(attr.ty) === 1 ? 'MultiPolygon' : 'Point',
+ coordinates: attr.co
+ },
+ properties: {
+ id: attr.uid,
+ internalId: attr.iid,
+ name: attr.na
+ }
+ };
+ feature.properties = Ext.Object.merge(feature.properties, attr.groupSets);
+
+ geojson.features.push(feature);
+ }
+
+ return geojson;
+ },
setUrl: function(url) {
this.url = url;
@@ -110,12 +149,11 @@
if (!doc || !doc.documentElement) {
doc = request.responseText;
}
-
if (doc.length) {
- doc = GIS.util.geojson.decode(doc, this);
+ doc = this.decode(doc);
}
else {
- alert("no coordinates"); //todo //i18n
+ alert('No valid coordinates found'); //todo //i18n
}
this.layer.removeFeatures(this.layer.features);
@@ -184,7 +222,7 @@
store.load({
scope: this,
callback: function() {
- if (this.tmpModel.updateGui) { // When favorite, load store and continue execution
+ if (this.tmpModel.updateGui) { // If favorite, load store and continue execution
if (this.tmpModel.updateOrganisationUnit) {
this.loadOrganisationUnits();
}
@@ -341,7 +379,6 @@
onClickSelect = function fn(feature) {
var showInfo,
showRelocate,
- drill,
menu,
isPoint = feature.geometry.CLASS_NAME === GIS.conf.finals.openLayers.point_classname;
@@ -583,67 +620,10 @@
});
};
- // Drill or float
- drill = function(direction) {
- var store = GIS.store.organisationUnitLevels;
-
- store.loadFn( function() {
- var store = GIS.store.organisationUnitLevels;
-
- if (direction === 'up') {
- var rootNode = GIS.init.rootNodes[0];
-
- that.config.level = that.model.level - 1;
- that.config.levelName = store.getAt(store.find('level', that.config.level)).data.name;
- that.config.parentId = rootNode.id;
- that.config.parentName = rootNode.text;
- that.config.parentLevel = rootNode.level;
- that.config.parentPath = '/' + GIS.init.rootNodes[0].id;
- }
- else if (direction === 'down') {
- that.config.level = that.model.level + 1;
- that.config.levelName = store.getAt(store.find('level', that.config.level)).data.name;
- that.config.parentId = feature.attributes.id;
- that.config.parentName = feature.attributes.name;
- that.config.parentLevel = that.model.level;
- that.config.parentPath = feature.attributes.path;
- }
-
- that.config.updateOrganisationUnit = true;
- that.config.updateGui = true;
-
- that.execute();
- });
- };
-
// Menu
- var menuItems = [
- Ext.create('Ext.menu.Item', {
- text: 'Float up',
- iconCls: 'gis-menu-item-icon-float',
- disabled: !that.model.hasCoordinatesUp,
- scope: this,
- handler: function() {
- drill('up');
- }
- }),
- Ext.create('Ext.menu.Item', {
- text: 'Drill down',
- iconCls: 'gis-menu-item-icon-drill',
- cls: 'gis-menu-item-first',
- disabled: !feature.attributes.hcwc,
- scope: this,
- handler: function() {
- drill('down');
- }
- })
- ];
+ var menuItems = [];
- if (isPoint) {
- menuItems.push({
- xtype: 'menuseparator'
- });
-
+ if (isPoint) {
menuItems.push( Ext.create('Ext.menu.Item', {
text: GIS.i18n.relocate,
iconCls: 'gis-menu-item-icon-relocate',
@@ -819,13 +799,13 @@
validateModel: function(model) {
if (!model.groupSet || !Ext.isString(model.groupSet)) {
GIS.logg.push([model.groupSet, this.xtype + '.parentId: string']);
- //alert("validation failed"); //todo
+ alert('No group set selected'); //todo //i18n
return false;
}
if (!model.level || !Ext.isNumber(model.level)) {
GIS.logg.push([model.level, this.xtype + '.level: number']);
- //alert("validation failed"); //todo
+ alert('No level selected'); //todo
return false;
}
if (!model.levelName || !Ext.isString(model.levelName)) {
@@ -835,7 +815,7 @@
}
if (!model.parentId || !Ext.isString(model.parentId)) {
GIS.logg.push([model.parentId, this.xtype + '.parentId: string']);
- //alert("validation failed"); //todo
+ alert('No parent organisation unit selected'); //todo
return false;
}
if (!model.parentName || !Ext.isString(model.parentName)) {
@@ -850,7 +830,7 @@
}
if (model.parentLevel > model.level) {
GIS.logg.push([model.parentLevel, model.level, this.xtype + '.parentLevel: number <= ' + this.xtype + '.level']);
- //alert("validation failed"); //todo
+ alert('Level cannot be higher than parent level'); //todo
return false;
}
@@ -879,7 +859,6 @@
for (var i = 0; i < this.layer.features.length; i++) {
var feature = this.layer.features[i];
feature.attributes.label = feature.attributes.name;
- feature.attributes.value = 0;
}
this.loadLegend();
@@ -933,7 +912,7 @@
this.store.features.loadFeatures(this.layer.features);
// Update filter window
- if (this.cmp.filterWindow && this.cmp.filterWindow.isVisible()) {
+ if (this.cmp.filterWindow && this.cmp.filterWindow.isVisible()) {
this.cmp.filterWindow.filter();
}
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Thematic1.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Thematic1.js 2012-10-23 09:01:59 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Thematic1.js 2012-10-25 15:26:14 +0000
@@ -217,7 +217,7 @@
doc = GIS.util.geojson.decode(doc, this);
}
else {
- alert("no coordinates"); //todo //i18n
+ alert('No valid coordinates found'); //todo //i18n
}
this.layer.removeFeatures(this.layer.features);
@@ -444,7 +444,7 @@
}
}
});
-
+
this.cmp.periodType = Ext.create('Ext.form.field.ComboBox', {
editable: false,
valueField: 'id',
@@ -1522,7 +1522,7 @@
}
if (!model.indicator || !Ext.isString(model.indicator)) {
GIS.logg.push([model.indicator, this.xtype + '.indicator: string']);
- //alert("validation failed"); //todo
+ alert('No indicator selected'); //todo //i18n
return false;
}
}
@@ -1534,7 +1534,7 @@
}
if (!model.dataElement || !Ext.isString(model.dataElement)) {
GIS.logg.push([model.dataElement, this.xtype + '.dataElement: string']);
- //alert("validation failed"); //todo
+ alert('No data element selected'); //todo //i18n
return false;
}
}
@@ -1546,7 +1546,7 @@
}
if (!model.period || !Ext.isString(model.period)) {
GIS.logg.push([model.period, this.xtype + '.period: string']);
- //alert("validation failed"); //todo
+ alert('No period selected'); //todo //i18n
return false;
}
@@ -1585,14 +1585,14 @@
else if (model.legendType === GIS.conf.finals.widget.legendtype_predefined) {
if (!model.legendSet || !Ext.isString(model.legendSet)) {
GIS.logg.push([model.legendSet, this.xtype + '.legendSet: string']);
- //alert("validation failed"); //todo
+ alert('No legend set selected'); //todo //i18n
return false;
}
}
if (!model.level || !Ext.isNumber(model.level)) {
GIS.logg.push([model.level, this.xtype + '.level: number']);
- //alert("validation failed"); //todo
+ alert('No level selected'); //todo
return false;
}
if (!model.levelName || !Ext.isString(model.levelName)) {
@@ -1602,7 +1602,7 @@
}
if (!model.parentId || !Ext.isString(model.parentId)) {
GIS.logg.push([model.parentId, this.xtype + '.parentId: string']);
- //alert("validation failed"); //todo
+ alert('No parent organisation unit selected'); //todo
return false;
}
if (!model.parentName || !Ext.isString(model.parentName)) {
@@ -1617,7 +1617,7 @@
}
if (model.parentLevel > model.level) {
GIS.logg.push([model.parentLevel, model.level, this.xtype + '.parentLevel: number <= ' + this.xtype + '.level']);
- //alert("validation failed"); //todo
+ alert('Level cannot be higher than parent level'); //todo
return false;
}
@@ -1668,7 +1668,7 @@
features = [];
if (values.length === 0) {
- alert("no data"); //todo Ext.message.msg(false, GIS.i18n.current_selection_no_data);
+ alert('No aggregated data values found'); //todo Ext.message.msg(false, GIS.i18n.current_selection_no_data);
GIS.mask.hide();
return;
}
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Thematic2.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Thematic2.js 2012-10-23 09:01:59 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/mapfish/widgets/geostat/Thematic2.js 2012-10-25 12:21:55 +0000
@@ -217,7 +217,7 @@
doc = GIS.util.geojson.decode(doc, this);
}
else {
- alert("no coordinates"); //todo //i18n
+ alert('No valid coordinates found'); //todo //i18n
}
this.layer.removeFeatures(this.layer.features);
@@ -1522,7 +1522,7 @@
}
if (!model.indicator || !Ext.isString(model.indicator)) {
GIS.logg.push([model.indicator, this.xtype + '.indicator: string']);
- //alert("validation failed"); //todo
+ alert('No indicator selected'); //todo //i18n
return false;
}
}
@@ -1534,7 +1534,7 @@
}
if (!model.dataElement || !Ext.isString(model.dataElement)) {
GIS.logg.push([model.dataElement, this.xtype + '.dataElement: string']);
- //alert("validation failed"); //todo
+ alert('No data element selected'); //todo //i18n
return false;
}
}
@@ -1546,7 +1546,7 @@
}
if (!model.period || !Ext.isString(model.period)) {
GIS.logg.push([model.period, this.xtype + '.period: string']);
- //alert("validation failed"); //todo
+ alert('No period selected'); //todo //i18n
return false;
}
@@ -1585,14 +1585,14 @@
else if (model.legendType === GIS.conf.finals.widget.legendtype_predefined) {
if (!model.legendSet || !Ext.isString(model.legendSet)) {
GIS.logg.push([model.legendSet, this.xtype + '.legendSet: string']);
- //alert("validation failed"); //todo
+ alert('No legend set selected'); //todo //i18n
return false;
}
}
if (!model.level || !Ext.isNumber(model.level)) {
GIS.logg.push([model.level, this.xtype + '.level: number']);
- //alert("validation failed"); //todo
+ alert('No level selected'); //todo
return false;
}
if (!model.levelName || !Ext.isString(model.levelName)) {
@@ -1602,7 +1602,7 @@
}
if (!model.parentId || !Ext.isString(model.parentId)) {
GIS.logg.push([model.parentId, this.xtype + '.parentId: string']);
- //alert("validation failed"); //todo
+ alert('No parent organisation unit selected'); //todo
return false;
}
if (!model.parentName || !Ext.isString(model.parentName)) {
@@ -1617,7 +1617,7 @@
}
if (model.parentLevel > model.level) {
GIS.logg.push([model.parentLevel, model.level, this.xtype + '.parentLevel: number <= ' + this.xtype + '.level']);
- //alert("validation failed"); //todo
+ alert('Level cannot be higher than parent level'); //todo
return false;
}
@@ -1668,7 +1668,7 @@
features = [];
if (values.length === 0) {
- alert("no data"); //todo Ext.message.msg(false, GIS.i18n.current_selection_no_data);
+ alert('No aggregated data values found'); //todo Ext.message.msg(false, GIS.i18n.current_selection_no_data);
GIS.mask.hide();
return;
}
=== removed file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/periodtype.js'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/periodtype.js 2012-09-24 14:16:43 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/scripts/periodtype.js 1970-01-01 00:00:00 +0000
@@ -1,405 +0,0 @@
-// generatePeriods config object: { boolean offset, boolean filterFuturePeriods, boolean reversePeriods }
-
-function PeriodType()
-{
- var monthNames = ['January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December'],
-
- format_yyyymmdd = function(date) {
- var y = date.getFullYear(),
- m = new String(date.getMonth() + 1),
- d = new String(date.getDate());
- m = m.length < 2 ? '0' + m : m;
- d = d.length < 2 ? '0' + d : d;
- return y + '-' + m + '-' + d;
- },
-
- filterFuturePeriods = function( periods ) {
- var array = [],
- now = new Date();
-
- for ( var i = 0; i < periods.length; i++ )
- {
- if ( new Date( periods[i]['startDate'] ) <= now )
- {
- array.push(periods[i]);
- }
- }
-
- return array;
- };
-
- var periodTypes = [];
- periodTypes['Daily'] = new DailyPeriodType( format_yyyymmdd, filterFuturePeriods );
- periodTypes['Weekly'] = new WeeklyPeriodType( format_yyyymmdd, filterFuturePeriods );
- periodTypes['Monthly'] = new MonthlyPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
- periodTypes['BiMonthly'] = new BiMonthlyPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
- periodTypes['Quarterly'] = new QuarterlyPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
- periodTypes['SixMonthly'] = new SixMonthlyPeriodType( monthNames, filterFuturePeriods );
- periodTypes['Yearly'] = new YearlyPeriodType( format_yyyymmdd, filterFuturePeriods );
- periodTypes['FinancialOct'] = new FinancialOctoberPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
- periodTypes['FinancialJuly'] = new FinancialJulyPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
- periodTypes['FinancialApril'] = new FinancialAprilPeriodType( format_yyyymmdd, monthNames, filterFuturePeriods );
-
- this.get = function( key )
- {
- return periodTypes[key];
- };
-}
-
-function DailyPeriodType( format_yyyymmdd, fnFilter )
-{
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset;
- date = new Date( '01 Jan ' + year );
-
- while ( date.getFullYear() === year )
- {
- var period = {};
- period['startDate'] = format_yyyymmdd( date );
- period['endDate'] = period['startDate'];
- period['name'] = period['startDate'];
- //period['id'] = 'Daily_' + period['startDate'];
- period['iso'] = period['startDate'].replace( /-/g, '' );
- period['id'] = period['iso'];
- periods.push( period );
- date.setDate( date.getDate() + 1 );
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods.reverse() : periods;
-
- return periods;
- };
-}
-
-function WeeklyPeriodType( format_yyyymmdd, fnFilter )
-{
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset,
- date = new Date( '01 Jan ' + year ),
- day = date.getDay(),
- week = 1;
-
- if ( day <= 4 )
- {
- date.setDate( date.getDate() - ( day - 1 ) );
- }
- else
- {
- date.setDate( date.getDate() + ( 8 - day ) );
- }
-
- while ( date.getFullYear() <= year )
- {
- var period = {};
- period['startDate'] = format_yyyymmdd( date );
- //period['id'] = 'Weekly_' + period['startDate'];
- period['iso'] = year + 'W' + week;
- period['id'] = period['iso'];
- date.setDate( date.getDate() + 6 );
- period['endDate'] = format_yyyymmdd( date );
- period['name'] = 'W' + week + ' - ' + period['startDate'] + ' - ' + period['endDate'];
- periods.push( period );
- date.setDate( date.getDate() + 1 );
- week++;
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods.reverse() : periods;
-
- return periods;
- };
-}
-
-function MonthlyPeriodType( format_yyyymmdd, monthNames, fnFilter )
-{
- var format_iso = function(date) {
- var y = date.getFullYear(),
- m = new String(date.getMonth() + 1);
- m = m.length < 2 ? '0' + m : m;
- return y + m;
- };
-
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset,
- date = new Date( '31 Dec ' + year );
-
- while ( date.getFullYear() === year )
- {
- var period = {};
- period['endDate'] = format_yyyymmdd( date );
- date.setDate( 1 );
- period['startDate'] = format_yyyymmdd( date );
- period['name'] = monthNames[date.getMonth()] + ' ' + date.getFullYear();
- //period['id'] = 'Monthly_' + period['startDate'];
- period['iso'] = format_iso( date );
- period['id'] = period['iso'];
- periods.push( period );
- date.setDate( 0 );
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods : periods.reverse();
- // Months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
-
- return periods;
- };
-}
-
-function BiMonthlyPeriodType( format_yyyymmdd, monthNames, fnFilter )
-{
- var format_iso = function( date ) {
- var y = date.getFullYear(),
- m = new String(date.getMonth() + 1);
- m = m.length < 2 ? '0' + m : m;
- return y + m + 'B';
- };
-
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset,
- date = new Date( '31 Dec ' + year );
-
- while ( date.getFullYear() === year )
- {
- var period = {};
- period['endDate'] = format_yyyymmdd( date );
- date.setDate( 0 );
- date.setDate( 1 );
- period['startDate'] = format_yyyymmdd( date );
- period['name'] = monthNames[date.getMonth()] + ' - ' + monthNames[date.getMonth() + 1] + ' ' + date.getFullYear();
- //period['id'] = 'BiMonthly_' + period['startDate'];
- period['iso'] = format_iso( date );
- period['id'] = period['iso'];
- periods.push(period);
- date.setDate( 0 );
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods : periods.reverse();
- // Bi-months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
-
- return periods;
- };
-}
-
-function QuarterlyPeriodType( format_yyyymmdd, monthNames, fnFilter )
-{
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset,
- date = new Date( '31 Dec ' + year ),
- quarter = 4;
-
- while ( date.getFullYear() === year )
- {
- var period = {};
- period['endDate'] = format_yyyymmdd( date );
- date.setDate( 0 );
- date.setDate( 0 );
- date.setDate( 1 );
- period['startDate'] = format_yyyymmdd( date );
- period['name'] = monthNames[date.getMonth()] + ' - ' + monthNames[date.getMonth() + 2] + ' ' + date.getFullYear();
- //period['id'] = 'Quarterly_' + period['startDate'];
- period['iso'] = year + 'Q' + quarter;
- period['id'] = period['iso'];
- periods.push(period);
- date.setDate( 0 );
- quarter--;
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods : periods.reverse();
- // Quarters are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
-
- return periods;
- };
-}
-
-function SixMonthlyPeriodType( monthNames, fnFilter )
-{
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset;
-
- var period = {};
- period['startDate'] = year + '-01-01';
- period['endDate'] = year + '-06-30';
- period['name'] = monthNames[0] + ' - ' + monthNames[5] + ' ' + year;
- //period['id'] = 'SixMonthly_' + period['startDate'];
- period['iso'] = year + 'S1';
- period['id'] = period['iso'];
- periods.push(period);
-
- period = {};
- period['startDate'] = year + '-07-01';
- period['endDate'] = year + '-12-31';
- period['name'] = monthNames[6] + ' - ' + monthNames[11] + ' ' + year;
- //period['id'] = 'SixMonthly_' + period['startDate'];
- period['iso'] = year + 'S2';
- period['id'] = period['iso'];
- periods.push(period);
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods.reverse() : periods;
-
- return periods;
- };
-}
-
-function YearlyPeriodType( format_yyyymmdd, fnFilter )
-{
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset,
- date = new Date( '31 Dec ' + year );
-
- while ( ( year - date.getFullYear() ) < 10 )
- {
- var period = {};
- period['endDate'] = format_yyyymmdd( date );
- date.setMonth( 0, 1 );
- period['startDate'] = format_yyyymmdd( date );
- period['name'] = date.getFullYear().toString();
- //period['id'] = 'Yearly_' + period['startDate'];
- period['iso'] = date.getFullYear().toString();
- period['id'] = period['iso'].toString();
- periods.push(period);
- date.setDate(0);
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods : periods.reverse();
- // Years are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
-
- return periods;
- };
-}
-
-function FinancialOctoberPeriodType( format_yyyymmdd, monthNames, fnFilter )
-{
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset,
- date = new Date( '30 Sep ' + ( year + 1 ) );
-
- for ( var i = 0; i < 10; i++ )
- {
- var period = {};
- period['endDate'] = format_yyyymmdd( date );
- date.setYear( date.getFullYear() - 1 );
- date.setDate( date.getDate() + 1 );
- period['startDate'] = format_yyyymmdd( date );
- period['name'] = monthNames[9] + ' ' + date.getFullYear() + ' - ' + monthNames[8] + ' ' + ( date.getFullYear() + 1 );
- period['id'] = 'FinancialOct_' + period['startDate'];
- periods.push( period );
- date.setDate( date.getDate() - 1 );
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods : periods.reverse();
- // FinancialOctober periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
-
- return periods;
- };
-}
-
-function FinancialJulyPeriodType( format_yyyymmdd, monthNames, fnFilter )
-{
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset,
- date = new Date( '30 Jun ' + ( year + 1 ) );
-
- for ( var i = 0; i < 10; i++ )
- {
- var period = {};
- period['endDate'] = format_yyyymmdd( date );
- date.setYear( date.getFullYear() - 1 );
- date.setDate( date.getDate() + 1 );
- period['startDate'] = format_yyyymmdd( date );
- period['name'] = monthNames[6] + ' ' + date.getFullYear() + ' - ' + monthNames[5] + ' ' + ( date.getFullYear() + 1 );
- period['id'] = 'FinancialJuly_' + period['startDate'];
- periods.push( period );
- date.setDate( date.getDate() - 1 );
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods : periods.reverse();
- // FinancialJuly periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
-
- return periods;
- };
-}
-
-function FinancialAprilPeriodType( format_yyyymmdd, monthNames, fnFilter )
-{
- this.generatePeriods = function( config )
- {
- var periods = [],
- offset = parseInt(config.offset),
- isFilter = config.filterFuturePeriods,
- isReverse = config.reversePeriods,
- year = new Date().getFullYear() + offset,
- date = new Date( '31 Mar ' + ( year + 1 ) );
-
- for ( var i = 0; i < 10; i++ )
- {
- var period = {};
- period['endDate'] = format_yyyymmdd( date );
- date.setYear( date.getFullYear() - 1 );
- date.setDate( date.getDate() + 1 );
- period['startDate'] = format_yyyymmdd( date );
- period['name'] = monthNames[3] + ' ' + date.getFullYear() + ' - ' + monthNames[2] + ' ' + ( date.getFullYear() + 1 );
- period['id'] = 'FinancialApril_' + period['startDate'];
- periods.push( period );
- date.setDate( date.getDate() - 1 );
- }
-
- periods = isFilter ? fnFilter( periods ) : periods;
- periods = isReverse ? periods : periods.reverse();
- // FinancialApril periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
-
- return periods;
- };
-}
=== modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/styles/style.css'
--- dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/styles/style.css 2012-10-23 17:28:27 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/app/styles/style.css 2012-10-25 12:07:10 +0000
@@ -185,17 +185,27 @@
border-radius: 2px;
}
+.gis-toolbar-btn-menu-download .x-btn-icon,
+.gis-toolbar-btn-menu-download .x-btn-default-small-icon button {
+ width: 28px !important;
+ height: 28px !important;
+}
+
+.gis-btn-icon-download {
+ background: url('../images/download_22.png') no-repeat;
+}
+
/* Toolbar */
.x-toolbar-default {
background-image: none;
background-color: #F3F3F3;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #F1F1F1), color-stop(100%, whiteSmoke));
- background-image: -webkit-linear-gradient(top, #F1F1F1,whiteSmoke);
- background-image: -moz-linear-gradient(top, #F1F1F1,whiteSmoke);
- background-image: -o-linear-gradient(top, #F1F1F1,whiteSmoke);
- background-image: -ms-linear-gradient(top, #F1F1F1,whiteSmoke);
- background-image: linear-gradient(top, #F1F1F1,whiteSmoke);
+ background-image: -webkit-linear-gradient(top, #F1F1F1, whiteSmoke);
+ background-image: -moz-linear-gradient(top, #F1F1F1, whiteSmoke);
+ background-image: -o-linear-gradient(top, #F1F1F1, whiteSmoke);
+ background-image: -ms-linear-gradient(top, #F1F1F1, whiteSmoke);
+ background-image: linear-gradient(top, #F1F1F1, whiteSmoke);
}
/* Toolbar btn */
=== modified 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 2012-10-16 14:19:02 +0000
+++ dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/geojsonFacilities.vm 2012-10-25 12:07:10 +0000
@@ -1,1 +1,33 @@
-#set($size=$object.size()){"properties":{},"geojson":[#foreach($unit in $object){"ty":#if(${unit.featureType}=="Point")"2"#else"1"#end,"co":$!encoder.jsonEncode($!{unit.validCoordinates}),"uid":"$!{unit.uid}","iid":$!{unit.id},"na":"$!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]}
\ No newline at end of file
+
+#set($size=$object.size())
+#set($groupSetSize=$groupSets.size())
+{
+ "properties":{},
+ "geojson":[
+
+ #foreach($unit in $object)
+
+ {
+
+ "ty": #if(${unit.featureType}=="Point")"2"#else"1"#end,
+ "co":$!encoder.jsonEncode($!{unit.validCoordinates}),
+ "uid":"$!{unit.uid}",
+ "iid":$!{unit.id},
+ "na":"$!encoder.jsonEncode(${unit.name})",
+
+ "groupSets": {
+
+ #foreach($set in $groupSets)
+ #set( $index = ( $velocityCount - 1 ) )
+ #set( $key = $!encoder.jsonEncode( ${set.name} ) )
+ #set( $val = $!encoder.jsonEncode( $unit.groupNames.get(${index}) ) )
+ "${key}":"${val}"
+ #if($velocityCount<$groupSetSize),#end
+
+ #end
+ }
+ }#if($velocityCount<$size),#end
+
+ #end
+ ]
+}
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/index.html'
--- dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/index.html 2012-10-24 10:45:58 +0000
+++ dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/index.html 2012-10-24 13:10:34 +0000
@@ -20,7 +20,7 @@
<script type="text/javascript" src="i18n.action"></script>
<script type="text/javascript" src="../../dhis-web-commons/javascripts/ext/ext-all.js"></script>
<script type="text/javascript" src="../../dhis-web-commons/javascripts/simpleRegression.js"></script>
- <script type="text/javascript" src="../../dhis-web-commons/javascripts/periodType.js"></script>
+ <script type="text/javascript" src="../../dhis-web-commons/javascripts/periodTypeNoDep.js"></script>
<script type="text/javascript" src="scripts/app.js"></script>
</body>
</html>