=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java 2012-07-23 10:50:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java 2012-07-30 21:04:50 +0000 @@ -53,9 +53,12 @@ import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.RelativePeriods; +import org.hisp.dhis.period.comparator.AscendingPeriodEndDateComparator; import org.hisp.dhis.user.User; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; /** @@ -66,6 +69,8 @@ extends BaseIdentifiableObject { private static final long serialVersionUID = 2570074075484545534L; + + private static final Comparator PERIOD_COMPARATOR = new AscendingPeriodEndDateComparator(); public static final String DIMENSION_PERIOD_INDICATOR = "period"; public static final String DIMENSION_ORGANISATIONUNIT_INDICATOR = "organisationUnit"; @@ -216,6 +221,23 @@ List units = getAllOrganisationUnits(); return units != null && !units.isEmpty() ? units.iterator().next() : null; } + + public List getAllPeriods() + { + List list = new ArrayList(); + + list.addAll( relativePeriods ); + + for ( Period period : periods ) + { + if ( !list.contains( period ) ) + { + list.add( period ); + } + } + + return list; + } private List dimensionToList( String dimension ) { @@ -229,9 +251,10 @@ } else if ( DIMENSION_PERIOD.equals( dimension ) ) { - namePeriods( getRelativePeriods(), format ); - - list.addAll( relativePeriods ); + List periods = getAllPeriods(); + namePeriods( periods, format ); + Collections.sort( periods, PERIOD_COMPARATOR ); + list.addAll( periods ); } else if ( DIMENSION_ORGANISATIONUNIT.equals( dimension ) ) { === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/jdbc/JDBCReportTableManager.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/jdbc/JDBCReportTableManager.java 2012-05-28 20:41:19 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/jdbc/JDBCReportTableManager.java 2012-07-30 21:04:50 +0000 @@ -92,12 +92,12 @@ if ( chart.isOrganisationUnitGroupBased() ) { return getAggregatedValueMapOrgUnitGroups( chart.getDataElements(), chart.getIndicators(), - chart.getRelativePeriods(), chart.getOrganisationUnitGroupSet().getOrganisationUnitGroups(), chart.getFirstOrganisationUnit() ); + chart.getAllPeriods(), chart.getOrganisationUnitGroupSet().getOrganisationUnitGroups(), chart.getFirstOrganisationUnit() ); } else { return getAggregatedValueMapOrgUnitHierarchy( chart.getDataElements(), chart.getIndicators(), chart.getDataSets(), - chart.getRelativePeriods(), chart.getAllOrganisationUnits(), null, false, false ); + chart.getAllPeriods(), chart.getAllOrganisationUnits(), null, false, false ); } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartPluginController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartPluginController.java 2012-07-30 16:01:36 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartPluginController.java 2012-07-30 21:04:50 +0000 @@ -135,21 +135,9 @@ // Periods // --------------------------------------------------------------------- - List allRelativePeriods = rewind ? relativePeriods.getRewindedRelativePeriods() : + List periods = rewind ? relativePeriods.getRewindedRelativePeriods() : relativePeriods.getRelativePeriods(); - List periods = new ArrayList(); - - for ( Period period : allRelativePeriods ) - { - if ( periods.contains( period ) ) - { - periods.remove( period ); - } - - periods.add( period ); - } - if ( p != null && p.size() > 0 ) { for ( String iso : p )