=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2013-05-28 13:48:36 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2013-05-28 14:01:31 +0000 @@ -411,6 +411,22 @@ } /** + * Returns the period type of the first period specified as filter. Returns + * null if there is no period filter. + */ + public PeriodType getFilterPeriodType() + { + List filterPeriods = getFilterPeriods(); + + if ( filterPeriods != null && !filterPeriods.isEmpty() ) + { + return ( (Period) filterPeriods.get( 0 ) ).getPeriodType(); + } + + return null; + } + + /** * Returns the number of dimension option permutations. Merges the three data * dimensions into one prior to the calculation. */ === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-05-28 13:48:36 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-05-28 14:01:31 +0000 @@ -52,6 +52,7 @@ import static org.hisp.dhis.organisationunit.OrganisationUnit.KEY_LEVEL; import static org.hisp.dhis.organisationunit.OrganisationUnit.KEY_USER_ORGUNIT; import static org.hisp.dhis.organisationunit.OrganisationUnit.KEY_USER_ORGUNIT_CHILDREN; +import static org.hisp.dhis.period.PeriodType.getPeriodTypeFromIsoString; import static org.hisp.dhis.reporttable.ReportTable.IRT2D; import static org.hisp.dhis.reporttable.ReportTable.addIfEmpty; @@ -307,6 +308,8 @@ Map dsPtMap = dataSourceParams.getDataSetPeriodTypeMap(); + PeriodType filterPeriodType = dataSourceParams.getFilterPeriodType(); + // ----------------------------------------------------------------- // Join data maps, calculate completeness and add to grid // ----------------------------------------------------------------- @@ -318,10 +321,10 @@ List targetRow = ListUtils.getAtIndexes( dataRow, completenessDimIndexes ); String targetKey = StringUtils.join( targetRow, DIMENSION_SEP ); Double target = targetMap.get( targetKey ); - + if ( target != null && entry.getValue() != null ) { - PeriodType queryPt = PeriodType.getPeriodTypeFromIsoString( dataRow.get( periodIndex ) ); + PeriodType queryPt = filterPeriodType != null ? filterPeriodType : getPeriodTypeFromIsoString( dataRow.get( periodIndex ) ); PeriodType dataSetPt = dsPtMap.get( dataRow.get( dataSetIndex ) ); target = target * queryPt.getPeriodSpan( dataSetPt );